Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zabezpieczenie przed botami w formularzach
Forum PHP.pl > Forum > Przedszkole
bor1904
Witam,
Mam na stronce różne formularze, które obecnie zabezpieczam przez captcha.

W skrócie wygląda to tak:
pod hidden w html wysyłany jest skrót md5 słowa na obrazku (value) i od razu zapisywany jest do sesji skrót md5 "captcha word".

użytkownik odczytuje słowo z obrazka i wpisuje je do inputa.

w skrypcie na początku zamieniam to co wpisał użytkownik na md5 i porównuje : skrót tego co wpisał , ze skrótem w zmiennej sesyjnej i tym co jest w polu hidden.

Więc jak na moje amatorskie oko nie idzie w żaden sposób wyciągnąć "captcha word" - oprócz odczytania z obrazka albo wykonania md5 powrotnie.

Obrazek generowany i jego czytelność można zobaczyć tutaj:

KLIK

Według mnie jest on mało czytelny dla "amatorskich" botów... czy się mylę?



Dostaje wiadomości o podobnej treści :
Cytat
ED0tqH
<a href="http://iimhljdvwxzc.com/">iimhljdvwxzc</a>, nqscneusiyqx, [link=http://johpzynwgkqp.com/]johpzynwgkqp[/link], http://jidajwoswetv.com/

Adres nadawcy:
wjmxxo@ceskgj.com


Proszę o sugestie i wskazówki

pozdrawiam

PS: koło3 miesięcy nie dostawałem żadnego spamu a teraz ok 3 razy dziennie (wiec stosunkowo rzadko)
Johnas
ReCaptcha
bor1904
Czyli tym samym uważasz, że captcha na mojej stronie jest czytelna ? tzn zbyt czytelna ?
Johnas
nie mówię że jest czytelna tylko ReCaptcha nie została złamana przez żadne boty. Do tego możesz dać jakieś pytania typu 2+8= ale sama ReCaptcha by wystarczyłą moim zdaniem

---------------------------------------------------
EDIT
---------------------------------------------------
Do tego do twojej textarea dodał bym wartość max-width w css aby nie wychodziła poza tło wink.gif
bor1904
Poza jakie tło ?

Według mnie nic nie wychodzi...
wNogachSpisz
http://caca.zoy.org/wiki/PWNtcha
erix
Cytat
pod hidden w html wysyłany jest skrót md5 słowa na obrazku (value) i od razu zapisywany jest do sesji skrót md5 "captcha word".

użytkownik odczytuje słowo z obrazka i wpisuje je do inputa.

w skrypcie na początku zamieniam to co wpisał użytkownik na md5 i porównuje : skrót tego co wpisał , ze skrótem w zmiennej sesyjnej i tym co jest w polu hidden.

A nie możesz przesyłać ID formularza po prostu? Trzymanie nawet zahashowanego captcha, to głupota trochę.
bor1904
Tylko, chciałbym jakichś konkretów w sensie wyjaśnień.
Dlaczego tak uważacie ?

Z tego co piszesz wynikało by że boty ze skrótu md5 tworzą słowo początkowe, tak ?
erix
"Tak", to znaczy?

Cytat
Z tego co piszesz wynikało by że boty ze skrótu md5 tworzą słowo początkowe, tak ?

A jaki to problem? Przeszukanie tęczowych tablic, to coraz łatwiejsze zadanie.
darko
http://akismet.com/
wNogachSpisz
Dokladnie, zwykłe md5($capchta) nie zda egzaminu.
Capchty składają się zazwyczaj z 5-6 znaków alfanuerycznych,
każda szanujaca się baza rainbow tables zawiera wszystkie możliwe kombinacje 5 i 6 znakowe..

Jednakże można się przed tym zabezpieczyć w bardzo prosty sposób, wystarczy zamiast md5($capchta) dać np. md5( $_SERVER['HTTP_HOST'] . $capchta );
krótko mówiąc doczepiać do hashowanego ciągu znaków nazwę domeny na której działa strona,
w ten sposób praktycznie uniemożliwiamy łamanie za pomocą rainbow-tables...
Pozostaje brute-force, co przy 5 znakowej capchcie jeszcze ma sens, przy 6cio znakowej, ten sens staje się mglisty...

Tak czy owak, moje pytanie brzmi: Po co tak robic?
Twoje rozwiązanie jest potencjalne niebezpieczne.
Lepiej dać kompletnie losowy hash i trzymać w bazie relacje między nim a capchtą jakiej odpowiada.

Twoje rozwiązanie ma słabe i mocne strony, oto jak ja to widze:

Plusy:
- mniejsze obciążenie serwera, nie potrzebujemy trzymać w bazie relacji hash->capchta
- możliwość sprawdzenie poprawności capchty jeszcze przez wysłaniem formularza (po stronie przeglądarki)

Minusy:
- duże ryzyko przełamania 5cio znakowej cacphty
- średnie ryzyko przełamania 6cio znakowej cacphty
- niskie ryzyko przełamania 7mio znakowej capchty

Moja rada:
Jeśli nie zależy Ci na wydajności za wszelką cenę, odpuść sobie to rozwiązanie i poprzestań na bezpieczeniejszym przechowywaniu capchty w bazie danych.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.