Sicherheitscode

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Sicherheitscode

    Hallo, ich habe einen Sicherheitsode eingebaut.

    PHP Code:
    <?php
    session_start
    (); 
    $_SESSION['scode'] = rand_string(6); 
    //$_SESSION['scode'] = rand(1111,999); 

    function rand_string($lng
       { 
       
    mt_srand(crc32(microtime())); 

       
       
    $buchstaben "abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        
       
    $str_lng strlen($buchstaben)-1
       
    $rand""

       for(
    $i=0;$i<$lng;$i++)         
          
    $rand.= $buchstaben{mt_rand(0$str_lng)}; 
           

       return 
    $rand
       } 
    ?> 

    <form action="code.php" method="post"> 

    <img src="scode.php?<?php echo time(); ?>&<?php echo strip_tags(SID); ?>" alt="Sicherheitscode"> 
    <input type="text" name="scode" maxlength="6"> 
    <input type="submit" value="Login" class="form_allg">
    </form>
    <?php
    /// Bild datei
    session_start(); 
    mt_srand(crc32(microtime())); 

    //Abfrage des Sicherheitscodes 
    $string $_SESSION['scode']; 

    if(empty(
    $string)) 
       die(
    "Es wurde kein Sicherheitscode übertragen"); 

    if(!
    extension_loaded("gd")) 
       die(
    "Keine Grafik-Unterstützung vorhanden"); 

    $image imagecreate(100,35) OR die("Fehler beim Erstellen des Bildes"); 


    $farbe_body=imagecolorallocate($image,0x00,0x00,0x5F); 
    $farbe_text imagecolorallocate($image,0xFF,0xFF,0xFF); 





    //Sicherheitscode einzeichnen 
    $font 5
    $x mt_rand(2,35); 
    for(
    $i=0;$i<strlen($string);$i++) 
       { 
       if((
    $y1 $y_old-7)<2$y1 2
       if((
    $y2 $y_old+7)>15$y2 15
       
    $y mt_rand($y1,$y2); 
       
    imagestring ($image,$font,$x,$y$string{$i}, $farbe_text); 
       
    $x+=11
       
    $y_old $y
       } 


    if(
    function_exists("imagegif")) 
       { 
       
    Header("Content-type: image/gif"); 
       
    ImageGif($image); 
       } 
    elseif (
    function_exists("imagepng")) 
       { 
       
    Header("Content-type: image/png"); 
       
    ImagePng($image); 
       } 
    elseif (
    function_exists("imagejpeg")) 
       { 
       
    Header("Content-type: image/jpeg"); 
       
    ImageJpeg($image""0.5); 
       } 
    else 
       die(
    "Keine Grafik-Unterst&uuml;tzung vorhanden"); 
    ?>


    Nun gibt es das Problem, dass es scheinbar doch Robots gibt, die den Code doch auslesen können.

    Alle 10 Sec gibts eine Abfrage, und über Stunden wird das wohl keiner per Hand machen.

    Hat mein Code Fehler oder was kann ich tun?

    Danke
    EDIT:
    php-tags sponsored by TBT

    EDIT:
    php-tags korrekt sponsored by kropff
    Last edited by Kropff; 12-02-2009, 19:44.

  • #2
    Mach einfach folgendes: wenn das abschicken des formulars schneller geht als ne sekunde dann mach nichts, ein robot füllt das form aus und schickt es innerhalb kürzester zeit ab.
    also wenn time() vom aufruf nicht minimum ein paar sekunden her ist, dann wars ein robot
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Comment

    Working...
    X