Zmagania Suchego | AntyCaptcha- inne sposoby na boty
Copyright suchy dawidpanfil@gmail.com
http://free.xaa.pl/anty-captcha-inne-sposoby-zabezpieczania-przed-botami
AntyCaptcha- inne sposoby na boty
Czy nie irytują was boty, które nękają Wasze strony wysyłając cały czas spam lub
rejestrując się i zalewając komentarze linkami? Zapewne tak, większość osób
korzysta wtedy z captcha, ale boty stają przebieglejsze i trzeba przerabiać tak te
literki, że nawet człowiek ma problemy z ich odczytaniem. Na szczęście istnieją inne
metody zabezpieczenia strony przed nimi.
Wszelkie metody tutaj przedstawiam w zastosowaniu na skrypcie logowania,
rejestracji czy wstawiania komentarzy.
Jak wiadomo boty wypełniają wszystko jak leci, dlatego najłatwiejszym sposobem
będzie stworzenie dodatkowego input text w celu prostego przechytrzenia. Nadajmy
mu nazwę np. test i ukryjmy za pomocą CSS to pole:
[css]
input[type=text]#test{
display:none;
}[/css]
Teraz w PHP należy sprawdzić czy na pewno to pole jest puste:
[php]
If($_POST[‘test’]!=’’){
//wykonaj skrypt
}
else{//przerwij działanie}
[/php]
Następne warunki wystarczy dodać dopisując
[php]
|| warunek
[/php]
W zasadzie bardzo dobrym zabezpieczeniem to nie jest i nie należy tego traktować
jako jedyny sposób na bot, dlatego warto zastosować inne metody. Bezproblemowo
można wykorzystać go w takich formularzach jak komentarze, rejestracja,
logowanie, czy też najzwyklejszy shoutbox.
page 1 / 5
Zmagania Suchego | AntyCaptcha- inne sposoby na boty
Copyright suchy dawidpanfil@gmail.com
http://free.xaa.pl/anty-captcha-inne-sposoby-zabezpieczania-przed-botami
Kolejnym sposobem jest liczenie czasu pisania zawartości skryptów. Jak wiadomo
boty robią to natychmiastowo, więc niestety jest takie ograniczenie tutaj, że nie
można używać tego w takich formularzach jak właśnie logowanie, ponieważ wiele
osób ma zapisane hasła i wystarczy kliknąć i są zalogowani.
Działa on na takiej zasadzie, że dodajemy jeszcze jeden ukryty input i wpisujemy
jako jego wartość aktualny czas:
[php]<input name="start" type="hidden"
value="<?php echo time(); php>" />[/php]
Następnie po wysłaniu formularza dajemy kod obliczający różnice w czasie, należy
tutaj dać wartości odpowiednie do zawartości formularza, w przykładzie zastosuję 5
sekund.
[php]
<?php
$koniec=time();
$czas= $koniec-$_POST[‘start’];</code>
//no i konstrukcja if
if($czas>5){
//ok.
}
else{
//przerywamy skrypt
}
?>[/php]
Jak pisałem powyżej nie nadaje się on do takich formularzy jak logowanie, czy
shoutbox lub chat gdzie zazwyczaj wpisuje się po dwa 3 słowa.
page 2 / 5
Zmagania Suchego | AntyCaptcha- inne sposoby na boty
Copyright suchy dawidpanfil@gmail.com
http://free.xaa.pl/anty-captcha-inne-sposoby-zabezpieczania-przed-botami
Formularz rejestracji jeszcze można zabezpieczyć dodając dodatkowe dane typu
zaznacz jak jesteś botem lub jak np. w poczcie pytają o zainteresowanie to czy inny
pytanie dać odpowiedź do zaznaczenia, którą na pewno człowiek by nie zaznaczył
(choć z ludźmi bywa różnie). Niestety to rozwiązanie ma parę minusów ludzie
zaznaczając wszystko jak popadnie, więc jeśli przy potwierdzeniu regulaminu
dodamy checkbox z napisem zaznacz, jeśli jesteś botem, to roztargnięty użytkownik
to zaznaczy, albo w zainteresowaniach jak sobie strzela pierwsze lepsze
zainteresowanie, też może trafić na takie ulepszenie formularza.
Ostatnio coraz częściej wykorzystaniem zabezpieczenia jakiegokolwiek formularza
jest napisanie wyniku jakiegoś wyrażenia, czy daty wydarzenia historycznego.
Zazwyczaj są tam stałe liczby i daty, ale może by warto troszkę to ubarwić? Pokażę
na zasadzie liczenia jak wykonać takie małe zabezpieczenie. Najpierw tworzymy
sobie tablicę z słownymi odpowiednikami liczb:
[php]$liczby = Array('zero', 'jeden', 'dwa', 'trzy', ‘cztery’, ‘pięć’, ‘sześć’, ‘siedem’,
‘osiem’, ‘dziewięć’, ‘dziesięć’);[/php]
Teraz za pomocą funkcji rand(0,10); generujemy sobie dwie liczby oraz jak ktoś
chce zmusić użytkownika do większego wysiłku to generuje sobie jeszcze znak +, -,
* lub ^. W formularzu dodaj jeszcze ukryty input i daj mu wartość wygenerowanych
liczb oddzielonych jakimś znakiem. Oprócz tego w tym formularzu daj napis:
[php]
Ile to jest: <?php echo $liczby[$liczba1] .’+’. $liczby[$liczba2]; ?>?[/php]
pod tym jeszcze input text do wpisania wartości oraz weryfikacja
[php]<?php
$dodaj=explode(‘;’, $_POST[‘liczby’]);
$suma=$dodaj[0]+$dodaj[1];
page 3 / 5
Zmagania Suchego | AntyCaptcha- inne sposoby na boty
Copyright suchy dawidpanfil@gmail.com
http://free.xaa.pl/anty-captcha-inne-sposoby-zabezpieczania-przed-botami
//if:
if($suma==$_POST[‘wynik’]){
//działaj
}
else {
//przerwij
}
?>[/php]
Jeszcze jeden sposób, jaki mi się przypomina, choć jest on wszystkim znany to ilość
linków w tekście, różni ludzie różnie to sprawdzają, ja preferuje taki sposób, że jeśli
tekst po wycięciu wszystkich linków zajmie mniej niż 50 % pierwotnej wersji to
wtedy uznaje za spam
[php]<?php
$tekst = preg_replace("#\[url=(.*?)\](.*?)\[/url\]#si",' ',$_POST[‘tresc’]);
$bezurl= strlen($tekst);
$url= strlen($_POST['tresc'];
$zawartosc=$bezurl/$url;</code>
//if
if($zawartosc>0.5){
//wykonaj
}
else{
//przewij
}
?>[/php]
Zwartość procentowa podajemy w częściach dziesiętnych (taka mała uwaga dla
typowych laików :)) W przykładzie powyżej ustawiłem na 50%, choć i to tak za dużo,
wg. mnie 0.35 to jest wystarczająca liczba.
Ostatni sposób jaki mi się teraz przypomina to wklejenie formularza, przez przez
innerHTML w JS, nie jest to zbyt elegancki styl, jeśli chodzi o kod, no ale chociaż
działa i przynosi pożądane efekty
page 4 / 5
Zmagania Suchego | AntyCaptcha- inne sposoby na boty
Copyright suchy dawidpanfil@gmail.com
http://free.xaa.pl/anty-captcha-inne-sposoby-zabezpieczania-przed-botami
No i tyle co do mnie, mam nadzieję, że spodobał się Wam mój tekst i że
skorzystacie z tych porad ;) u mnie to się sprawdza bardzo dobrze. Może znacie
jakieś inne sposoby zabezpieczenia formularzy?
page 5 / 5