Sposób na spam w formularzach
Październik 22nd, 2008 W kategorii: Webdeveloping

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.
Łukasz Girek, lat 23, uzależniony od internetu i dobrego designu. Na blogu postaram się dzielić z Wami wszystkimi co związane z tworzeniem w Sieci. Od projektowania, przez tworzenie do użytkowania. Będzie też trochę o muzyce i filmie. Blog będzie pełnił także funkcje osobistego portfolio. Zapraszam i dzięki za uwagę!
dobrze kombinujesz, ale…
Test1:
Nie wypełniaj tego pola, to tylko zabezpieczenie przed robotami!!!
Test2:
Rozwiązuje Twoje problemy i js nie potrzebne, i tabulacja naprawiona i nie mamy pola typu hidden ;)
mam wrażenie, że takie zbędne pole z tekstem wygląda po prostu mało elegancko, ale to pewnie jest najlepsze i najprostsze rozwiązanie ;)
Tutaj przykład, bo ładnie wordpress wywalił to co potrzebne ;) http://mdx.pl/stuff/html/antyspam.html
aaa, pośpieszyłem się z moim komentarzem, teraz widzę, no tak to dobre rozwiązanie jest ;) dzięki za uwagę