Sicherheitscode

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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
    Zuletzt geändert von 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

    Kommentar

    Lädt...
    X