niedziela, 28 lutego 2010

Jak zabezpieczyć formularz na stronie www przed spamem?

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

1 komentarz:

  1. Można też jak się zna PHP napisać coś swojego - to jest najlepsze;)

    OdpowiedzUsuń