Sposób na spam w formularzach

Ostatnio w feedach natknąłem się na przyjemny tutorial – jak zrobić AJAX-owy formularz kontaktowy wykorzystując jQuery. I tam autor przedstawił dla mnie bardzo ciekawą rzecz, o której wcześniej przyznam nie wiedziałem, i nawet jak pisząc o tym zrobię z siebie teraz głupka, to trudno. Rozchodzi się o spamboty, które przeczesując sieć, znajdują różne formularze i namiętnie je wypełniają.

Najpopularniejszym chyba sposobem na nie jest CAPTCHA, używana na większości dużych, często odwiedzanych stronach, ale na mniejszych świetnie sprawdzi się metoda użyta we wspomnianym tutorialu. Otóż, oprócz normalnych, potrzebnych pól formularza, tworzymy jedno dodatkowe, które po prostu ukrywamy, tak by użytkownik go nie widział, a przy przetwarzaniu formularza po stronie serwera sprawdzamy czy jest puste. Jeśli jest, to z 99% prawdopodobieństwem to nie spam, jeśli jest wypełnione to z 95% prawdopodobieństwem spam.
Jak ukryć pole? Dwie metody, jedna za pomocą CSS’a, a druga po prostu używając atrybutu dla input, type=”hidden”.
Ale żeby nie było zbyt pięknie, trzeba wziąć pod uwagę kilka rzeczy:

  • są użytkownicy którzy mają wyłączony CSS – wtedy widzą nasze tajne pole i mogą je uzupełnić. Rozwiązaniem może być umieszczenie obok pola tekstu, mówiącego o tym, że to konkretne pole ma pozostać puste, rozsądny użytkownik się dostosuje;
  • co z użytkownikami którzy przechodzą do kolejnych pól w formularzu Tab-em? – w takim wypadku, chociaż nie wiem na ile, to zakładam, że możliwe jest, że focus zostanie umieszczony na ukrytym polu, i tym samym cały plan legnie w gruzach. Nie byłoby problemem napisanie prostego skryptu w JS, który by automatycznie przenosił focus do następnego pola.;
    • a co z tymi co mają wyłączony JS? – z tymi to naprawdę już nie wiem ;), można liczyć na to że mają wyłączony także CSS i zobaczą ostrzeżenie. Można też założyć że wszystkie przeglądarki jednak ignorują ukryte input‘y (normalnym jest, że ignorują, ale zgłębiając temat na “googlu”, natrafiłem na wątpliwości i wyjątki od tej reguły, których jednak nie sposób mi sprawdzić);
    • sam się już w tym gubię, ale możliwe jest także ukrywanie pola i tekstu z ostrzeżeniem za pomocą JS, wtedy Ci z wyłączonym JS zobaczą ostrzeżenie i nie wypełnią wskazanego pola. Pytanie czy częściej użytkownicy mają wyłączony JS, czy CSS, zahacza tu także problem o temat dostępności;

Pozostaje jeszcze pytanie na ile boty są sprytne i czy znajdując input z type=”hidden”, wypełniają go? Załóżmy, że są na tyle sprytne, wtedy najlepszym sposobem jest ukrywanie pola CSS’em.

Jeśli drogi Czytelniku, przebrnąłeś przez moje chaotyczne dywagacje to gratuluję, jeśli do tego przy okazji masz coś ciekawego do dodania, bardzo chętnie poczytam.

dodaj własny komentarz

Komentarzy naliczyłem: 4

Wypowiedz się!

Uwaga! Pola e-mail oraz nick są obowiązkowe. E-mail nie będzie widoczny publicznie.

Zapraszam Cię do skomentowania posta, to zawsze milej mieć odzew od Czytelników ;)
jeśli jednak masz zamiar tu tylko spamować albo wypowiadać się wulgarnie i nie na temat, to nie jesteś tu mile widziany.
Pamiętaj, że możesz użyć tagów w komentarzach:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Dzięki za uwagę:)