![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 131 Pomógł: 1 Dołączył: 15.10.2009 Skąd: gdańsk Ostrzeżenie: (0%) ![]() ![]() |
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) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 233 Pomógł: 87 Dołączył: 6.03.2009 Ostrzeżenie: (40%) ![]() ![]() |
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. Ten post edytował wNogachSpisz 2.03.2011, 09:26:43 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 23:09 |