Strona główna » Blog » Prosta metoda blokowania SPAMu z formularza kontaktowego

Prosta metoda blokowania SPAMu z formularza kontaktowego

W jednym z projektów, w których brałem udział, jeden z formularzy kontaktowych był źródłem licznego SPAM-u pochodzącego od internetowych botów. Z różnych przyczyn nie chcieliśmy instalować żadnych dodatkowych modułów czy wtyczek ani też nie chcieliśmy komplikować formularza stosując CAPTCHA czy coś podobnego. Postanowiliśmy wypróbować pewne proste rozwiązanie. Po wielu miesiącach stosowania mogę powiedzieć, że nasza prosta metoda się bardzo dobrze sprawdziła.

W formularzu dodałem dwa pola typu “hidden” o nazwach “fullname” oraz “password”. Fullname jest polem pustym i niewidocznym – żywy użytkownik nigdy nie wprowadzi tu żadnej wartości. Wiele botów wpisze tutaj jednak wygenerowane imię i nazwisko. Na tej podstawie już można wyciąć trochę ruchu. Prosta pułapka.

Pole “password” ma jednak wartość: to zakodowany timestamp. Zakodowany odwracalnie, bo w kontrolerze jego wartość jest odzyskiwana i porównywana z czasem na serwerze. Jeżeli różnica jest większa niż pewien ustalony czas, system zakłada, ze wiadomość pochodzi od człowieka, bo ten – w odróżnieniu od komputerowego bota – potrzebuje czasu, aby napisać wiadomość.

Innymi słowy, cały ów antyspamowy filtr składa się z:

  • dwóch ukrytych pól input,
  • jednego większego IFa w kontrolerze.

Co zaskakujące, ten banalny system zdaje się działać niemal w stu procentach. Sytuacje, w których coś zostało przepuszczone (albo niesłusznie zatrzymane) są jednostkowe.