Formularz bez ochrony zbiera spam, a formularz z ochroną, która nic nie robi, zbiera ten sam spam, dając poczucie bezpieczeństwa. Bezpłatny test ochrony formularza odpowiada na pierwszą połowę tego pytania: jaką ochronę przed botami dostarcza strona? Ten artykuł wyjaśnia, jak czytać wynik i gdzie kończy się jego odpowiedź.
Co robi test
Podaje się adres strony z formularzem. Test najpierw odczytuje plik robots.txt danej witryny; jeśli zabrania on pobrania strony lub nie można go odczytać, test na tym kończy. W przeciwnym razie pobiera tylko tę jedną stronę, pod czytelną nazwą (SilentShieldFormCheck), bez plików cookie, z co najwyżej trzema przekierowaniami i co najwyżej 1 MB. Następnie szuka w HTML znaczników znanych dostawców: adresów skryptów, klas elementów i nazw pól. Rozpoznaje Google reCAPTCHA, hCaptcha, Cloudflare Turnstile, Friendly Captcha i SilentShield. Nic nie jest zapisywane, ani adres, ani wynik.
Pięć wyników
- Każdy formularz ma znacznik. W każdym znalezionym formularzu HTML zawiera znacznik znanego dostawcy. Ochrona jest umieszczona w formularzu.
- Tylko niektóre formularze mają znacznik. Lista pokazuje, którym formularzom go brakuje.
- Skrypt dostawcy jest ładowany, ale żaden formularz nie ma znacznika. Strona ładuje skrypt dostawcy, jednak żaden z jej formularzy nie zawiera znacznika. Czy i który formularz skrypt chroni, nie jest widoczne bez uruchomienia JavaScript.
- Nic nie wykryto w dostarczonym HTML. Strona ma formularze, ale nie ma znacznika ani skryptu znanego dostawcy.
- Brak formularza w dostarczonym HTML. Formularze mogą być tworzone przez skrypt w przeglądarce, czego test nie widzi.
Czego test nie widzi
Test odczytuje HTML dostarczany przez serwer. Nie uruchamia JavaScript. Ma to cztery konsekwencje, o których należy pamiętać.
- Formularz lub widżet tworzony przez skrypt w przeglądarce dla testu nie istnieje. „Nic nie wykryto” oznacza więc „nic w dostarczonym HTML”, a nigdy „brak ochrony”.
- Test nie może stwierdzić, czy serwer weryfikuje odpowiedź. Widżet w formularzu bez kontroli na serwerze nikogo nie powstrzyma.
- Ochrona znajdująca się przed stroną, taka jak zapora sieciowa lub limit żądań, nie zostawia śladu w HTML.
- Strony za logowaniem są poza zasięgiem, ponieważ test pobiera tylko strony publiczne, bez plików cookie.
Prawdziwy przykład: nasza własna strona rejestracji
Gdy uruchomiliśmy test na naszej własnej stronie rejestracji, pierwsza wersja zgłosiła dwóch dostawców, których skrypt rzekomo był „ładowany”. Strona nie ładuje żadnego z nich. Przyczyną były dane samej strony: pozycja menu „Alternatywa dla hCaptcha.” znajdowała się w skrypcie wbudowanym, a test wziął to słowo za kod dostawcy. Zmieniliśmy regułę tak, że skrypt wbudowany liczy się tylko wtedy, gdy wywołuje dostawcę (wywołanie render lub execute), i ta sama strona zgłasza teraz, że w dostarczonym HTML nic nie wykryto. Wniosek tłumaczy, dlaczego test podaje tylko fakty: słowo na stronie nie jest dostawcą.
Co zrobić z wynikiem
- Jeśli znacznik jest obecny, należy przetestować drugą połowę: wysłać formularz z zewnątrz bez odpowiedzi lub z błędną odpowiedzią i sprawdzić, czy serwer ją odrzuci. Znacznik pokazuje tylko, że widżet został umieszczony.
- Jeśli skrypt dostawcy jest ładowany, ale w formularzu nie ma znacznika, należy sprawdzić, jak widżet jest podłączany. W wielu konfiguracjach dodaje się go w przeglądarce po załadowaniu strony.
- Jeśli nic nie wykryto, nie należy wnioskować, że formularz jest otwarty. Należy przejrzeć logi serwera i to, co faktycznie do niego dociera, oraz sprawdzić, czy ochrona działa na serwerze, czy przed stroną.
- Jeśli zdecydują się Państwo zastąpić widoczne zadanie, można porównać opcje na stronie porównania CAPTCHA i sprawdzić za pomocą kalkulatora konwersji, ile kosztuje widoczne zadanie.
Test jest pierwszym spojrzeniem na dostarczony HTML, a nie audytem. Warto go użyć, by dowiedzieć się, co strona mówi o sobie, a resztę sprawdzić, wysyłając formularz.