Pokaż wyniki od 1 do 9 z 9

Wątek: Zabezpieczenie CAPTCHA (czy jakoó tak)

  1. #1
    aso
    aso jest nieaktywny
    Zarejestrowany
    Dołączył
    Jul 2008
    Posty
    19

    Domyślnie Zabezpieczenie CAPTCHA (czy jakoś tak)

    Chciałbym zrobić zabezpieczenie przed rejestracją przez boty - to chyba się naywa CAPTCHA czy jakoś tak. Chodzi mi o to aby był obrazek generowany dynamiczie i zawierał jakiś losowy wyraz wybrany z pliku tekstowego. Kiedys takie coś widziałem i nawet miałem skrypt lecz teraz nie moge nigdzie znaleść działającego. Próbowałem go wyrwać z phpBB ale nie dało się. Prosze o pomoc i info jakiej wersji PHP i GD to wymaga abym mógł zrobić jeżeli serv tego nie obsługuje alternatywną metodę antybotu (którą już mam). Jeszcze raz proszę o pomoc i kody do tego skryptu generowania obrazku i antyspama.

  2. #2
    Grupa MmoCenter Awatar Kiri
    Dołączył
    Sep 2007
    Posty
    1,741

    Domyślnie

    Nie chcę nic mówić ale PEEEE?NO tego na googlach się wala...

  3. #3
    Zarejestrowany
    Dołączył
    May 2008
    Posty
    120

    Domyślnie

    Ja używam takiego czegoś:
    captha.php
    Kod:
    <?    
        session_start();
        $pool = '0123456789abcdefghijklmnopqrstuvwxyz';
        $img_width = 120;
        $img_height = 30;
    
        $str = '';
        for ($i = 0; $i < 7; $i++){
            $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
        }
    
        $string = $str;
        $_SESSION['captcha'] = $string;
    
        $im = imagecreate($img_width, $img_height);
    
        $bg_color     = imagecolorallocate($im,163,163,163);
        $font_color   = imagecolorallocate($im,252,252,252);
        $grid_color   = imagecolorallocate($im,31,0,0);
        $border_color = imagecolorallocate ($im, 174, 174, 174);
    
        imagefill($im,1,1,$bg_color);
    
        for($i=0; $i<1600; $i++){
    
            $rand1 = rand(0,$img_width);
            $rand2 = rand(0,$img_height);
            imageline($im, $rand1, $rand2, $rand1, $rand2, $grid_color);
    
        }
    
        $x = rand(5, $img_width/(7/2));
    
        imagerectangle($im, 0, 0, $img_width-1, $img_height-1, $border_color);
    
        for($a=0; $a < 7; $a++){
    
            imagestring($im, 5, $x, rand(6 , $img_height/5), substr($string, $a, 1), $font_color);
            $x += (5*2); #odstęp
    
        }
    
        header("Content-type: image/gif");
        imagegif($im);
        imagedestroy($im);
    
    ?>
    index.php
    Kod:
    <?
    session_start();
    
    if($_POST['captcha'] != $_SESSION['captcha']){
    
    echo '<font style="color:#c03400;">Niepoprawnie przepisałeś kod z obrazka</font><br>';
    
    } elseif (empty($_POST['user']) == TRUE) {
    
    echo '<font style="color:#c03400;">Niepoprawnie wypełnione.</font><br>';
    }else{
    
        echo 'ok';
        
    }
    
    ?>
    
    <form action="index.php?action=add" method="post">
    <table>
        <tbody>
            <tr>
                <td valign="top"><small>Login</small><br></td>
                <td><input name="user" style="width: 200px; height: 20px;" type="text" /><br></td>
            </tr>
            <tr>
                <td valign="top"><small>Tekst</small><br></td>
                <td><textarea name="text" style="width: 300px; height: 100px;"></textarea><br></td>
            </tr>
            <tr>
            <td></td>
            <td><img src="captcha.php" alt="" style="vertical-align: middle" />&nbsp;<input name="captcha" style="width: 100px; height: 20px; vertical-align: middle;" type="text" /><br /><br /></td>
            </tr>
            <tr>
                <td></td>
                <td><input name="submit" value="Dodaj" type="submit" /></td>
            </tr>
        </tbody>
    </table>
    </form>

  4. #4
    aso
    aso jest nieaktywny
    Zarejestrowany
    Dołączył
    Jul 2008
    Posty
    19

    Domyślnie

    Wielkie dzięki
    Jakoś chyba to przerobię aby ściągał wyrazy z pliku (bo na tym mi też zależy)...

  5. #5
    Zarejestrowany
    Dołączył
    May 2008
    Posty
    120

    Domyślnie

    A mam też taki :P
    hasla.txt
    Kod:
    niebo
    wiata
    dyszy
    batut
    felga
    jasyr
    aloes
    obawy
    widne
    pic.php
    Kod:
    <?
    $slowa=file('hasla.txt');
    
    if(isset($_GET['id']))
        $nr=$_GET['id'];
        else $nr=rand(0,count($slowa)-1);
    
    $slowo=$slowa[$nr];
    $wysokosc=20;
    $szerokosc=60;
    
    
    $pic=ImageCreate($szerokosc,$wysokosc);
    $bialy=ImageColorAllocate($pic,255,255,255);
    $czarny=ImageColorAllocate($pic,0,0,0);
    $szary=ImageColorAllocate($pic,150,150,150);
    
    ImageFill($pic,1,1,$bialy);
    for($i=0;$i<200;$i++)
        {
        $los1=rand(0,$szerokosc);
        $los2=rand(0,$wysokosc);
        
        ImageLine($pic,$los1,$los2,$los1,$los2,$szary);
        }
    for($i=0;$i<count($slowa);$i++)
        {
        $rozmiar=rand(2,5);
    
        ImageString($pic,$rozmiar,$i*10+7,3,trim($slowo[$i]),$czarny);
        }
    Header("Content-type: image/gif");
    ImageGIF($pic);
    ?>
    form.php
    Kod:
    <form method="POST" action="sprawdz.php">
    
        <table>
            <tr>
                <td>Imię:</td>
                <td><input type="text" name="imie" size="20" value="<? echo $_POST['imie']; ?>"></td>
            </tr>
            <tr>
                <td>Nazwisko:</td>
                <td><input type="text" name="nazwisko" size="20" value="<? echo $_POST['nazwisko']; ?>"></td>
            </tr>
    <tr>
                <td><?
    $slowa=file('hasla.txt');
    $id=rand(0,count($slowa)-1);
    
    echo '<img src="pic.php?id='.$id.'"></td><td><input type="text" name="token" size="20">';
    
    ?></td>
            </tr>
        </table>
        <input type="submit" value="OK">
    <input type="hidden" name="los" value="<? echo $id; ?>">
    </form>
    sprawdz.php
    Kod:
    <?
    $id=$_POST['los'];
    $odp=$_POST['token'];
    
    $slowa=file('hasla.txt');
    
    if(trim($slowa[$id])==$odp)
        {
        echo 'Token poprawny!';
        //dalsze instrukcje, jeśli token jest poprawny
        }
    else    
        {
        echo 'Token niepoprawny!<br><br>';
        include('form.php');
        //dalsze instrukcje, jeśli token jest niepoprawny
        }
    ?>
    Nie mój skrypt jak co...:P

    Pozdrawiam!

  6. #6
    aso
    aso jest nieaktywny
    Zarejestrowany
    Dołączył
    Jul 2008
    Posty
    19

    Domyślnie

    Wielkie dzięki dla ciebie, piwko ci dałem

  7. #7
    Pesymista :( Awatar Harrocan
    Dołączył
    Sep 2007
    Posty
    1,663

    Domyślnie

    Gomez - Przydałby się dopisek o autorze i skąd masz ten skrypt

  8. #8
    Zarejestrowany
    Dołączył
    Aug 2008
    Posty
    94

    Domyślnie

    $bg_color = imagecolorallocate($im,163,163,163);
    $font_color = imagecolorallocate($im,252,252,252);
    $grid_color = imagecolorallocate($im,31,0,0);
    $border_color = imagecolorallocate ($im, 174, 174, 174);
    Captcha trzeba robić z głową.
    To, że elementy mają stałe kolory raczej sprzyja robotom do łamania captcha. Zostawią tylko te elementy, które będą miały kolor $font_color, a braki o wielkości 1 px z kratki da się łatwo uzupełnić.
    Przy okazji:
    $string = $str;
    $_SESSION['captcha'] = $string;
    a nie lepiej $_SESSION['captcha'] = $str; ?
    Tylko dwie rzeczy na tym świecie są niesko??czone: wszechświat i ludzka głupota, a co do tego pierwszego, to nie jestem pewien
    Albert Einstein

  9. #9
    Zarejestrowany
    Dołączył
    Oct 2007
    Posty
    1,255

    Domyślnie

    Drugi podany w tym temacie skrypt nie jest do końca bezpieczny. ID hasła jest przekazywane w obrazku.

Informacje o wątku

Użytkownicy przeglądający ten wątek

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Podobne wątki

  1. Zabezpieczenie
    Przez January w dziale Pytania dotyczące silnika Xnova
    Odpowiedzi: 7
    Ostatni post / autor: 05-04-2010, 17:36
  2. [PORADNIK]Captcha
    Przez Mortis w dziale Poradniki xnova
    Odpowiedzi: 2
    Ostatni post / autor: 16-03-2010, 14:28
  3. Token (captcha) problem
    Przez maciek012 w dziale PHP / MySql
    Odpowiedzi: 7
    Ostatni post / autor: 24-10-2009, 21:15
  4. Captcha (rejestracja i logowanie)
    Przez rabid.xx w dziale Problemy przy tworzeniu własnej gry
    Odpowiedzi: 6
    Ostatni post / autor: 18-02-2009, 19:03
  5. captcha
    Przez dumdas w dziale Bezpieczeństwo
    Odpowiedzi: 11
    Ostatni post / autor: 12-12-2008, 13:39

Zakładki

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •