Niemal każdy formularz dostępny w sieci może paść ofiarą spamu. Do walki ze spamem w formularzach webmasterzy wykorzystują mechanizm CAPTCHA. Weryfikacja za pomocą wprowadzenia treści z obrazka jest bardzo skutecznym rozwiązaniem ale stwarza wiele problemów jeżeli chodzi o użyteczność.
Spamboty czyli roboty spamerów to zazwyczaj bardzo proste aplikacje. Wyszukują i wklejają spam do wszystkich możliwych formularzy jakie znajdą na stronie.
Jeżeli posiadasz serwis internetowy oparty o popularny w internecie skrypt to zmień domyślne nazwy pól w formularzach. Dzięki temu już na starcie utrudnisz zadanie spambotom, automatom, półautomatom i innym narzędziom służących do spamowania formularzy. Większość robotów oraz narzędzi spamerskich da się oszukać w bardzo prosty sposób dzięki technice zwanej honeypot lub invisible captcha.
Tworzymy w formularzu dodatkowe pola pułapki, które ukrywamy za pomocą CSS. Aby pułapka była bardziej skuteczna pola pułapki możemy nazwać standardowo np. adres, url, tytuł. Następnie z poziomu PHP badamy czy w nasze pola pułapki są puste. Jeżeli po przeładowaniu formularza wykryto tekst w takim polu to znaczy, że z pewnością nie został on wstawiony przez człowieka. Postępujemy wtedy z taką treścią wedle uznania. Najrozsądniej jest usunąć taki wpis i wyświetlić komunikat o pełnym sukcesie :). Spamer niech żyje w przekonaniu, że udało mu się dodać swoją treść. Oczywiście sprytny spamer może zmodyfikować swój program aby nauczył się omijać nasze pola pułapki. W takim przypadku warto zastosować bardziej zaawansowaną technikę i nadawać polom formularza dynamicznie zmieniające się nazwy. Można do tego użyć kombinację zmieniających się codziennie liczb dzięki wykorzystaniu funkcji daty w PHP.
Więcej informacji oraz przykładowe fragmenty kodu można znaleźć na stronach:
http://ploum.frimouvy.org/?150-the-invisible-captcha-mechanism-icm-against-form-spam
http://www.landauer.at/preventing-spam-in-form-submissions-without-using-a-captcha.php
niedziela, 28 lutego 2010
Subskrybuj:
Komentarze do posta (Atom)
Można też jak się zna PHP napisać coś swojego - to jest najlepsze;)
OdpowiedzUsuń