Avatar billede bavingo Nybegynder
16. marts 2008 - 19:52 Der er 8 kommentarer og
1 løsning

CAPTCHA ikke sikker nok

For nogen tid siden lavede jeg et CAPTCHA sikkerhedstjek, men fandt ud af at det simpelthen ikke sikrer mit site.

Jeg har erfaret at bots kommer igennem alligevel, hvad kan det skyldes?

I mit post script foretager jeg tjekket som det første.


Min kode:


<?
// Overordnet information
session_start();

header ("Content-type: image/png");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

$width = 250;
$height = 65;

$path = $_SERVER['PATH_TRANSLATED'];
$path_end = end(explode("/", $path));
$path_count = strlen($path_end);
$root_path = substr($path, 0, -$path_count);

// Opbyg billedet
$im = imagecreatetruecolor($width, $height);

// Lav baggrundsstøj i grafikken
for($i = 0; $i <= (($width + 1) * ($height + 1)); $i++) {
    $bg_color = imagecolorallocate($im, rand(100, 255), rand(100, 255), rand(100, 255));
    imagesetpixel($im, $x, $y, $bg_color);
   
    if($x > $width) {
        $x = -1;
        $y++;
    }
   
    $x++;
}

//Påsæt teksten
$x = 10;

$font_dir = $root_path .'font/';
$font = array("katskratch.ttf", "serial.ttf", "rougd.ttf", "darkside.ttf", "wakiw.ttf");
$pattern = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

for($i = 1; $i <= 5; $i++) {
    $rand_color = imagecolorallocate($im, rand(0, 100), rand(0, 100), rand(0, 100));
    $rand_font = rand(0, 4);
    $rand_vinkel = rand(-10, 15);
    $rand_text = $pattern{rand(0,25)};
   
    #font size og y placering redigering
    switch($rand_font) {
        case(0): $y = 50; $size = 40; break;
        case(1): $y = 50; $size = 70; break;
        case(2): $y = 50; $size = 40; break;
        case(3): $y = 58; $size = 50; break;
        case(4): $y = 62; $size = 45; break;
        case(4): $y = 65; $size = 45; break;
    }
   
    imagettftext($im, $size, $rand_vinkel, $x, $y, $rand_color, $font_dir . $font[$rand_font], $rand_text);
    $info = $info. $rand_font;
    $text = $text . $rand_text;
    $x += 45;
}

//Påsæt random cirkler og streger
$min = 1;
$max = rand(10, 20);
for($i = $min; $i <= $max; $i++) {
    $rand_color = imagecolorallocate($im, rand(100, 200), rand(100, 200), rand(100, 200));
    $rand_x1 = rand(1, $width);
    $rand_y1 = rand(1, $height);
    $rand_x2 = rand(1, $width);
    $rand_y2 = rand(1, $height);
    $rand_width = rand(1, 60);
    $rand_height = rand(1, 60);
   
    $rand_figur = rand(1, 100);
   
    if($rand_figur >= 60) {
        imageline($im, $rand_x1, $rand_y1, $rand_x2, $rand_y2, $rand_color);
    }else{
        imageellipse($im, $rand_x1, $rand_y1, $rand_width, $rand_height, $rand_color);
    }
}

// Opret session til sikkerhedstjekket
$_SESSION[captcha] = $text;

// TEST OUTPUT
#$text_color = imagecolorallocate($im, 0, 0, 0);
#imagestring($im, 5, 5, 60, "TestFont: ". $info, $textcolor);
#imagestring($im, 5, 5, 80, "TestText: ". $text, $textcolor);

// Afslut billedet
imagepng($im);
imagedestroy($im);
?>
Avatar billede bavingo Nybegynder
16. marts 2008 - 19:53 #1
Overvejede kryptering af teksten, men regner ikke selv med at det på nogen måde vil hjælpe?
Avatar billede leif Seniormester
16. marts 2008 - 20:17 #2
Kan du have et hul i din validering og/eller kode således at der kan submittes alligevel uden at angive korrekt kode ?
Avatar billede erikjacobsen Ekspert
16. marts 2008 - 20:53 #3
Det er vel bare for bot-erne ikke accepterer din session-cookie.
Avatar billede coderdk Praktikant
16. marts 2008 - 21:01 #4
Vi mangler det vigtigste - Dér hvor du validerer at CAPTCHA'en er ok ;)
Avatar billede erikjacobsen Ekspert
16. marts 2008 - 21:09 #5
Og du er nok hverken den første eller den sidste, der falder i et ganske bestemt hul:  http://www.eksperten.dk/spm/822315  (men selvfølgelig kan det også skyldes noget andet...)
Avatar billede bavingo Nybegynder
16. marts 2008 - 21:32 #6
Ja, jeg har ikke taget højde for at bots kan deaktivere sessions, så gætter på at det er problemet
Avatar billede bavingo Nybegynder
17. marts 2008 - 10:33 #7
erikjacobsen, det lader til at det var sessions der var problemet. Læg et svar og du får points.
Avatar billede erikjacobsen Ekspert
17. marts 2008 - 10:47 #8
Jeg samler slet ikke på point, tak.
Avatar billede bavingo Nybegynder
09. august 2009 - 00:23 #9
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester