ďťż

Zabezpieczanie witryny przed botami CAPTCHA? Limity? Pytania przy rejestracji?

       

Podstrony


telcocafe

Na grupach trwa dyskusja na temat zabezpieczenia serwisu przed atakami botów. Poruszmy ten problem także tutaj. W przypadku mało popularnych stron wystarczy nawet proste CAPTCHA z kodem liczbowym (0-9) generowane za pomocą imagestring(). Co wtedy, gdy serwis lub jego część albo silnik CMS stanie się popularny? Boty na pewno nie odpuszczą.

Jak chronić się? Które zabezpieczenia są skuteczne, które nie?

1. Człowiek nie wypełni formularza rejestracji w 5 sekund.

Dobrym zabezpieczeniem jest wprowadzenie minimalnego odstępu czasowego między wygenerowaniem formularza a jego wysłaniem od klienta do serwera? Wpisać login, hasło (skopiować do pola "powtórz hasło"), e-mail oraz opcjonalnie CAPTCHA - to może potrwać ok. 10 sekund. Bot wypełni formularz w 0-2 sek. więc może opłaca się?

Chroni przed: botami ogólnego zastosowania
Nie chroni przed: botami uwzględniającymi limit lub napisanymi pod określony CMS

2. Losowe pytanie, na które każdy zna odpowiedź

Admin definiuje pytania, na które trzeba odpowiedzieć w polu tekstowym, np. "Nazwa trzeciego miesiąca w roku". Są one losowane. Zazwyczaj boty są nastawione na łamanie CAPTCHA. Często problem rozwiązuje nawet zamiana CAPTCHA na pytanie typu 2+2=4. Dlaczego? Przykładowo forum stoi na skrypcie PhpBB 2 z modem CAPTCHA. Bot zna strukturę formularza i liczy, że będzie tam obrazek.

Albo... Wyświetlany jest obrazek, zaś user musi odpowiedzieć na zadane pytanie dotyczące tego obrazka, np. "ile jest trójkątów" (na obrazu są różne figury). Chociaż dobry bot szybko złamie takie zabezpieczenie...

3. Badanie obecności linków (rada ze strony pornel.net)

Chyba najlepsze rozwiązanie, jeśli celem botów jest wypozycjonowanie stron w wyszukiwarkach. Jeśli ktoś chce zniszczyć serwis, takie zabezpieczenie nie pomoże. Może po prostu uniemożliwić gościom publikowanie linków? Tylko wtedy trzeba ochronić skrypt przed rejestracją botów, a w ten sposób już tego nie uczynimy. Filtry domen e-mail też nie są zbyt skuteczne, chyba że zablokujemy wszystkie .net, .org, .com...

4. Poziom skomplikowania CAPTCHA?
Pytanie, czy w ogóle stosować CAPTCHA. Jeśli tak, jak skomplikowane? Chyba najlepiej 3D (ktoś podał taki przykład na grupach), tylko wygenerowanie takiego obrazka to dla serwera duże wyzwanie - ile potrwa wygenerowanie?
Użytkownik Ferrari edytował ten post 10 listopad 2008, 12:35


Wg mnie najlepsze rozwiązanie to duża pula losowo dobranych pytań. Wystarczy parę wpisów typu: "Jak ma na imię Adam Małysz?" i nie sądzę, żeby jakieś boty zdołały się przez to przebić.

Każde zabezpieczenie da się złamać. Najmniej irytujące rozwiązanie to sprawdzian w postaci głupiego pytania plus limity - ilość rejestracji na godzinę, z tego samego IP itp. co utrudni "zalanie" rejestracjami.

Rejestracje z tego samego IP... W przypadku botów spamujących zmiana IP to chyba nie problem?

Odrzucanie komentarzy z linkami (pisanych przez gości) to chyba dobre rozwiązanie. Chyba wystarczy:strpos($element, '://') OR stripos($element, 'www.')Aby nie komplikować skryptu wyrażeniami regularnymi, chyba że jestem w błędzie? Może w drugim przypadku. Jeśli ktoś użyje "WWW." w zdaniu, np. "na stronach WWW.", komentarz nie zostanie przyjęty.

Natomiast trudniejsze jest zbadanie odstępu czasowego między wygenerowaniem formularza a jego wysłaniem. Boty mogą nie akceptować cookies, a więc zapis tej informacji w zmiennej sesji jest niepewny.
Użytkownik Ferrari edytował ten post 15 listopad 2008, 00:11



Natomiast trudniejsze jest zbadanie odstępu czasowego między wygenerowaniem formularza a jego wysłaniem. Boty mogą nie akceptować cookies, a więc zapis tej informacji w zmiennej sesji jest niepewny.

więc można stworzyć odpowiednią tabelę w mysql i w niej zapisywać informacje :)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.