Skrzynka firmowa pełna wiadomości o „pozycjonowaniu w tydzień”, kryptowalutach i tanich lekach to znak, że formularz kontaktowy na stronie został namierzony przez automaty. Problem nie kończy się na irytacji. W zalewie niechcianych wiadomości giną prawdziwe zapytania, serwer wysyła setki niepotrzebnych wiadomości, a dostawcy poczty zaczynają traktować firmową domenę z rezerwą.
Najprostszą reakcją jest dołożenie zagadki z obrazkami, przy której klient zaznacza przejścia dla pieszych. To rozwiązanie zatrzymuje część botów, ale zniechęca też ludzi, którzy chcieli tylko zapytać o termin albo wycenę. Dobra ochrona działa w tle: klient wypełnia formularz tak jak zawsze, a automaty odpadają po drodze.
Ta instrukcja pokazuje, jak rozpoznać rodzaj spamu, jak dobrać do niego zabezpieczenie niewidoczne dla klienta i jak je włączyć w WordPressie, w najczęściej spotykanych wtyczkach Contact Form 7 i WPForms. Po lekturze właściciel strony będzie umiał ustawić kilka warstw ochrony, sprawdzić, czy działają, i upewnić się, że żadne prawdziwe zapytanie nie przepada.
Po czym rozpoznać, że formularz atakują automaty, i skąd one się biorą?
Automaty przeszukują internet w poszukiwaniu formularzy tak samo, jak roboty wyszukiwarek szukają treści. Nie wybierają firmy celowo. Trafiają na każdy formularz, który przyjmuje dane bez żadnej weryfikacji, i wysyłają przez niego reklamy, linki albo próby wyłudzeń. Mała strona lokalnej firmy jest dla nich równie dobra jak duży sklep.
O ataku automatów świadczą powtarzalne cechy wiadomości:
- wiadomości przychodzą seriami, często w nocy, po kilka albo kilkadziesiąt w krótkim czasie,
- treść jest w obcym języku albo składa się z przypadkowych znaków i linków,
- w polu z imieniem pojawia się adres strony, a w polu z telefonem ciąg liter,
- wypełnione są wszystkie pola, także te, których zwykły klient nie uzupełnia,
- ta sama treść wraca wielokrotnie z różnych adresów e-mail.
Spam ma trzy główne źródła i każde wymaga trochę innej ochrony. Pierwsze to proste skrypty, które nie otwierają strony w przeglądarce, tylko wysyłają dane prosto na adres obsługujący formularz. Drugie to bardziej zaawansowane boty, które uruchamiają prawdziwą przeglądarkę i udają człowieka. Trzecie to ludzie: osoby zatrudnione do ręcznego wklejania ofert albo handlowcy rozsyłający tę samą propozycję do setek firm.
Rozróżnienie jest proste. Jeśli wiadomości przychodzą w ułamku sekundy po sobie i wyglądają jak pisane według jednego wzoru, pracuje skrypt. Jeśli treść jest poprawna, napisana po polsku i dopasowana do branży, a przychodzi raz na kilka dni, pisze ją człowiek. Wobec skryptów skuteczne są zabezpieczenia techniczne. Wobec ludzi działa wyłącznie filtrowanie treści.
Zdarza się też inny scenariusz: formularz wysyła kopię wiadomości na adres wpisany przez nadawcę. Spamerzy wykorzystują to, żeby z firmowej domeny rozsyłać własne reklamy do obcych osób. Jeśli do firmy wracają zwroty wiadomości, których nikt nie wysyłał, należy od razu wyłączyć kopię do nadawcy albo ograniczyć ją do krótkiego potwierdzenia bez treści wpisanej w formularzu.
Które zabezpieczenia są naprawdę niewidoczne dla klienta?
Niewidoczna ochrona to taka, przy której klient nie wykonuje żadnej dodatkowej czynności. Nie przepisuje liter z obrazka, nie rozwiązuje działania i nie zaznacza zdjęć. Takich metod jest kilka i najlepiej działają połączone, ponieważ każda zatrzymuje inny rodzaj nadawcy.
Pułapka na boty, czyli ukryte pole
Do formularza dodaje się pole, którego człowiek nie widzi, bo jest ukryte stylem strony. Skrypt czyta kod, widzi pole i je wypełnia. Formularz odrzuca każdą wiadomość, w której ukryte pole zawiera jakąkolwiek treść. Ta metoda, nazywana po angielsku honeypot, nie wymaga żadnej zewnętrznej usługi i nie przekazuje nikomu danych odwiedzających.
Minimalny czas wypełniania
Człowiek potrzebuje co najmniej kilku sekund, żeby wpisać imię, adres i treść. Skrypt wysyła formularz natychmiast po wczytaniu strony. Wystarczy więc odrzucać zgłoszenia wysłane szybciej, niż jest to fizycznie możliwe. Klient w ogóle nie zauważa tego progu.
Weryfikacja w tle: Cloudflare Turnstile i reCAPTCHA v3
Obie usługi oceniają w tle, czy po drugiej stronie jest przeglądarka obsługiwana przez człowieka. Turnstile to rozwiązanie firmy Cloudflare, a reCAPTCHA v3 należy do Google. Żadna z nich nie pokazuje zagadek z obrazkami. Turnstile wydaje jednorazowy znacznik potwierdzający pomyślną weryfikację, natomiast reCAPTCHA v3 zwraca ocenę od 0,0 do 1,0, gdzie 1,0 oznacza niemal na pewno człowieka, a 0,0 niemal na pewno bota.
Filtrowanie treści: Akismet i lista niedozwolonych słów
To jedyna warstwa, która radzi sobie ze spamem pisanym przez ludzi. Akismet porównuje wiadomość z ogromną bazą znanego spamu i odsiewa to, co do niej pasuje. Lista niedozwolonych słów działa prościej: jeśli w wiadomości pojawi się wpisane na nią słowo, adres albo fragment linku, zgłoszenie zostaje oznaczone jako spam.
Co przygotować, zanim zmieni się cokolwiek w formularzu?
Każda zmiana w formularzu niesie ryzyko, że przestanie on wysyłać także prawdziwe zapytania. Dlatego przed pracą należy wykonać kopię strony i sprawdzić, czy da się z niej odtworzyć serwis. Sposób jej wykonania opisałem we wpisie kopia zapasowa WordPressa, która naprawdę działa.
Druga rzecz to zapis zgłoszeń w bazie strony. WPForms w wersji płatnej przechowuje wpisy samodzielnie, a do Contact Form 7 służy osobna wtyczka zapisująca wiadomości. Dzięki temu po włączeniu ochrony widać, co zostało zatrzymane, i można odzyskać zapytanie zablokowane przez pomyłkę. Bez takiego zapisu właściciel strony nie ma jak ocenić, czy filtr nie jest zbyt surowy.
Trzecia rzecz to wiadomość próbna wysłana przed zmianami. Jeśli formularz już teraz gubi część zgłoszeń, ochrona przed spamem tego nie naprawi, a tylko utrudni szukanie przyczyny. Całą procedurę sprawdzania opisuje wpis formularz kontaktowy, który nie gubi zapytań.
Jak dodać Cloudflare Turnstile do formularza w WordPressie?
Turnstile jest moim pierwszym wyborem dla stron firmowych. Nie wymaga przeniesienia domeny do Cloudflare, wystarczy samo konto. Praca składa się z dwóch części: utworzenia widżetu w panelu Cloudflare i wklejenia dwóch kluczy do wtyczki formularza.
Utworzenie widżetu w panelu Cloudflare
Panel Cloudflare jest dostępny po angielsku, dlatego nazwy podaję w oryginale, zgodnie z dokumentacją usługi.
- Po zalogowaniu do panelu Cloudflare należy przejść do strony „Turnstile”.
- Następnie wybiera się przycisk „Add widget”.
- W polu „Widget name” wpisuje się nazwę, która pozwoli rozpoznać widżet, na przykład nazwę firmy i słowo „formularz”.
- W części „Hostname management” podaje się domenę strony, na której działa formularz, bez przedrostka https.
- W części „Widget mode” wybiera się jeden z trzech trybów: „Managed”, „Non-Interactive” albo „Invisible”.
- Wybranie przycisku „Create” zapisuje widżet.
- Na koniec trzeba skopiować dwa klucze: publiczny „sitekey” i prywatny „secret key”. Klucz prywatny przechowuje się w bezpiecznym miejscu i nikomu się go nie przekazuje.
Wybór trybu decyduje o tym, co zobaczy klient. W trybie „Managed” Cloudflare sam ocenia ryzyko i tylko przy wątpliwościach prosi o zaznaczenie jednego pola, bez obrazków i tekstu do odczytania. Tryb „Non-Interactive” pokazuje mały widżet z animacją ładowania, ale nigdy nie wymaga kliknięcia. Tryb „Invisible” działa całkowicie w tle, bez żadnego widocznego elementu.

Tryb „Invisible” ma jeden warunek zapisany w dokumentacji: właściciel strony musi powołać się we własnej polityce prywatności na dokument Cloudflare o nazwie „Turnstile Privacy Addendum”. Kto nie chce zmieniać polityki od razu, może zacząć od trybu „Managed”. Zdecydowana większość klientów i tak nie zobaczy żadnego pytania.
Połączenie widżetu z Contact Form 7
Wtyczka Contact Form 7 ma wbudowaną obsługę Turnstile, więc nie trzeba instalować niczego dodatkowego. Wystarczy aktualna wersja wtyczki.
- W panelu WordPressa należy otworzyć menu „Kontakt”, a w nim pozycję „Integracja”.
- W ramce „Turnstile” wybiera się przycisk „Konfiguracja integracji”.
- W polu „Klucz witryny” wkleja się klucz publiczny skopiowany z Cloudflare.
- W polu „Klucz prywatny” wkleja się klucz prywatny.
- Zmiany zatwierdza przycisk „Zapisz zmiany”. Poprawne połączenie potwierdza komunikat „Turnstile jest włączony na tej stronie.”
Od tej chwili ochrona obejmuje wszystkie formularze utworzone we wtyczce. Jeśli w szablonie formularza nie ma znacznika Turnstile, wtyczka sama wstawia widżet na początku formularza. Miejsce można zmienić, dopisując w zakładce „Formularz” znacznik [turnstile] tam, gdzie widżet ma się pojawić, na przykład tuż nad przyciskiem wysyłki.
Przy trybie „Managed” przydaje się jeszcze jedna opcja znacznika: [turnstile appearance:interaction-only]. Widżet pozostaje wtedy ukryty i pokazuje się tylko w tych rzadkich sytuacjach, gdy Cloudflare potrzebuje kliknięcia od odwiedzającego. Dla zwykłego klienta formularz wygląda tak samo jak przed zmianą.
Połączenie widżetu z WPForms
W WPForms integracja z Turnstile jest dostępna w każdej wersji wtyczki, także podstawowej. Klucze wkleja się w ogólnych ustawieniach wtyczki, w zakładce poświęconej CAPTCHA, wybierając tam Turnstile jako usługę. Następnie trzeba otworzyć edytor konkretnego formularza i w ustawieniach ochrony przed spamem włączyć Turnstile osobno dla tego formularza. Bez tego drugiego kroku klucze są zapisane, ale formularz pozostaje niechroniony.
Kto woli nie zajmować się tym samodzielnie, może zadzwonić pod numer 533 525 168 albo napisać na info@lukaszwudyka.pl, a ja przejmę sprawę: ustalę, skąd przychodzi spam, włączę ochronę działającą w tle i sprawdzę, czy prawdziwe zapytania nadal docierają na firmową skrzynkę.
Jak ustawić reCAPTCHA v3 i co zrobić z plakietką w rogu strony?
reCAPTCHA v3 to rozsądny wybór dla firm, które korzystają już z konta Google i nie chcą zakładać kolejnego. Usługa nie przerywa klientowi pracy, ale ma dwie cechy, o których trzeba wiedzieć wcześniej. Po pierwsze, pokazuje w rogu strony plakietkę z logo. Po drugie, nie blokuje niczego sama, tylko przekazuje ocenę, a o odrzuceniu decyduje wtyczka formularza.
- W konsoli administracyjnej reCAPTCHA, po zalogowaniu kontem Google, tworzy się nowy klucz dla strony.
- W polu etykiety, w dokumentacji opisanym jako „Label”, wpisuje się nazwę ułatwiającą rozpoznanie strony.
- Jako typ klucza wybiera się wersję opartą na ocenie, oznaczoną „Score based (v3)”. Klucz typu „Challenge (v2)” nie zadziała w Contact Form 7.
- W polu domeny podaje się adres strony i zatwierdza formularz przyciskiem „Submit”.
- Po utworzeniu klucza należy skopiować klucz witryny i klucz tajny.
- W WordPressie otwiera się menu „Kontakt”, pozycję „Integracja”, a w ramce „reCAPTCHA” wybiera przycisk „Konfiguracja integracji”.
- Klucze wkleja się w pola „Klucz witryny” oraz „Klucz prywatny” i zatwierdza przyciskiem „Zapisz zmiany”.
Google przenosi obsługę reCAPTCHA do konsoli Google Cloud, dlatego układ i nazwy pól w konsoli mogą różnić się od opisanych. Niezmienna pozostaje zasada: potrzebny jest klucz oparty na ocenie oraz para kluczy, publiczny i tajny. Dokumentacja Google podaje, że wtyczki nazywają klucz tajny także kluczem prywatnym.
Według dokumentacji Google domyślnym progiem jest ocena 0,5. Contact Form 7 stosuje ten sam próg i uznaje za spam zgłoszenia, które go nie przekraczają. W panelu wtyczki nie ma pola do zmiany progu, taką zmianę wprowadza się kodem i jest to zadanie dla osoby technicznej. WPForms pozwala ustawić próg w swoich ustawieniach.
Czy plakietkę reCAPTCHA można ukryć?
Można, ale pod warunkiem opisanym przez Google. Plakietkę wolno ukryć tylko wtedy, gdy przy formularzu w widoczny sposób pojawia się informacja o korzystaniu z reCAPTCHA, wraz z linkami do polityki prywatności i warunków korzystania z usług Google. Samo ukrycie plakietki bez tej informacji narusza zasady usługi.

Google podaje gotowy wzór takiej informacji w języku angielskim oraz regułę stylu, która ukrywa plakietkę: .grecaptcha-badge { visibility: hidden; }. Regułę dopisuje się w dodatkowych stylach motywu, a tekst informacji umieszcza pod przyciskiem wysyłki. Kolejność ma znaczenie: najpierw informacja przy formularzu, dopiero potem ukrycie plakietki.
Trzeba też pamiętać o szybkości strony. Skrypt reCAPTCHA często wczytuje się na wszystkich podstronach, nie tylko tam, gdzie jest formularz, i potrafi wydłużyć ładowanie. Po włączeniu usługi radzę zmierzyć stronę ponownie. Sposób odczytania wyników opisuje wpis Core Web Vitals, czyli jak czytać wyniki.
Nie należy włączać Turnstile i reCAPTCHA jednocześnie na tym samym formularzu. Dwie weryfikacje w tle nie dają dwa razy lepszej ochrony, a podwajają liczbę zewnętrznych skryptów i liczbę miejsc, w których coś może zawieść.
Jak włączyć pułapkę na boty i minimalny czas wypełniania?
Te dwie metody nie korzystają z żadnej zewnętrznej usługi, więc nie wymagają kluczy ani zmian w polityce prywatności. Ich dostępność zależy od wtyczki formularza.
WPForms
WPForms ma obie funkcje wbudowane. Edytor formularza bywa wyświetlany po angielsku, dlatego nazwy podaję za dokumentacją wtyczki.
- Należy otworzyć formularz w edytorze WPForms.
- W edytorze przechodzi się do „Settings”, a następnie do „Spam Protection and Security”.
- Przełącznik „Enable modern anti-spam protection” powinien być włączony. To rozwinięta wersja ukrytej pułapki, która do działania wymaga JavaScriptu na stronie.
- Przełącznik „Enable minimum time to submit” włącza próg czasu. Domyślna wartość w polu „Minimum time to submit” to 2 sekundy.
- Opcja „Store spam entries in the database” pozwala zachować zatrzymane zgłoszenia, żeby dało się je przejrzeć i przywrócić pomyłki.
- Na koniec zapisuje się formularz przyciskiem zapisu w górnej części edytora.
Przy długich formularzach, na przykład z wyceną, próg czasu można podnieść do kilku sekund. Nie należy przesadzać. Stały klient, któremu przeglądarka sama uzupełnia dane, wysyła krótki formularz bardzo szybko i przy zbyt wysokim progu zobaczy prośbę o chwilę cierpliwości.
W tej samej części ustawień, w sekcji „Filtering”, WPForms udostępnia filtr krajów i filtr słów. Filtr krajów ma sens wyłącznie wtedy, gdy firma na pewno nie obsługuje klientów z zagranicy. W przeciwnym razie odcina prawdziwe zapytania.
Contact Form 7 i inne wtyczki
Contact Form 7 nie ma wbudowanej pułapki ani progu czasu. Tę rolę przejmują w nim Turnstile lub reCAPTCHA, a uzupełnieniem są Akismet i lista niedozwolonych słów. Pułapkę da się dodać osobnym dodatkiem, ale przed instalacją trzeba sprawdzić w repozytorium WordPressa, czy dodatek jest aktualizowany i zgodny z używaną wersją WordPressa. Porzucona wtyczka bywa większym kłopotem niż spam.
Jak odfiltrować spam pisany przez ludzi?
Osoba, która ręcznie wkleja ofertę, przejdzie każdą weryfikację w tle, bo jest człowiekiem i korzysta ze zwykłej przeglądarki. Zatrzymać ją może tylko analiza treści.
Akismet w Contact Form 7
Akismet to wtyczka dołączana do WordPressa, znana z filtrowania komentarzy. Potrafi oceniać także zgłoszenia z formularzy. Do działania potrzebuje klucza API, który użytkownik otrzymuje po rejestracji w serwisie Akismet. Ważne zastrzeżenie: plan osobisty jest przeznaczony wyłącznie dla stron niekomercyjnych, więc strona firmowa wymaga planu płatnego.
- W menu „Wtyczki” należy włączyć wtyczkę Akismet, jeśli nie jest aktywna.
- W menu „Ustawienia” otwiera się pozycję „Akismet Anti-spam”, wkleja klucz API i zatwierdza połączenie. W najnowszych wersjach WordPressa klucz może być wpisywany w osobnym miejscu ustawień przeznaczonym na połączenia z usługami.
- W menu „Kontakt” otwiera się formularz i przechodzi do zakładki „Formularz”.
- W znaczniku pola z imieniem dopisuje się opcję
akismet:author, tak aby znacznik wyglądał na przykład tak:[text* your-name akismet:author]. - W znaczniku pola z adresem e-mail dopisuje się opcję
akismet:author_email:[email* your-email akismet:author_email]. - Jeśli formularz ma pole z adresem strony, w jego znaczniku dopisuje się
akismet:author_url. - Formularz zapisuje się przyciskiem „Zapisz”.
Bez tych opcji Akismet nie sprawdza formularza, nawet gdy wtyczka jest aktywna i połączona. To najczęstsza przyczyna przekonania, że Akismet nie działa. W nowych formularzach tworzonych przy włączonym Akismecie wtyczka sama dopisuje opcje do domyślnego szablonu, ale starsze formularze trzeba uzupełnić ręcznie.
W WPForms integracja z Akismetem jest dostępna w każdej wersji. Włącza się ją w tym samym miejscu edytora co pozostałe opcje ochrony, osobno dla każdego formularza.
Lista niedozwolonych słów w ustawieniach WordPressa
Contact Form 7 korzysta z listy, którą WordPress stosuje do komentarzy. Należy otworzyć menu „Ustawienia”, pozycję „Dyskusja”, i odszukać pole „Klucze niedozwolone w komentarzach”. W każdym wierszu wpisuje się jedno słowo, adres e-mail, adres IP albo fragment adresu strony. Zgłoszenie z formularza, które zawiera którykolwiek z tych wpisów, zostaje potraktowane jako spam.
Trzeba uważać na jedną właściwość tej listy: dopasowanie działa także wewnątrz wyrazów. Dokumentacja WordPressa podaje przykład, w którym wpis „press” pasuje do słowa „WordPress”. Krótkie i pospolite wpisy zablokują więc prawdziwe zapytania. Bezpieczne są długie, charakterystyczne ciągi: domena powtarzająca się w spamie, nazwa promowanej usługi w obcym języku albo konkretny adres nadawcy.
Jak sprawdzić, czy ochrona działa i nie blokuje klientów?
Ochrony nie należy zostawiać bez testu. Źle wklejony klucz albo konflikt ze skryptami strony potrafi zablokować wszystkie zgłoszenia, a właściciel dowiaduje się o tym po kilku tygodniach ciszy. Test zajmuje kwadrans.
- Przed testem należy wyczyścić pamięć podręczną strony we wtyczce przyspieszającej i u dostawcy sieci dostarczania treści, jeśli strona z niej korzysta.
- Formularz otwiera się w oknie prywatnym przeglądarki, bez zalogowania do WordPressa, i wysyła zwykłe zapytanie. Powinien pojawić się komunikat o poprawnej wysyłce, a wiadomość powinna dotrzeć na skrzynkę.
- Ten sam test powtarza się na telefonie, najlepiej przez sieć komórkową, a nie przez firmowe Wi-Fi.
- Jeśli działa Akismet, wysyła się wiadomość z imieniem viagra-test-123. Akismet zawsze oznacza takie zgłoszenie jako spam, więc formularz powinien je odrzucić.
- Jeśli działa lista niedozwolonych słów, wysyła się wiadomość zawierającą jeden z wpisów z listy i sprawdza, czy została zatrzymana.
- W panelu Cloudflare, w szczegółach widżetu, sprawdza się statystyki. Po kilku wysyłkach powinny pojawić się tam pierwsze weryfikacje.
- Przez następny tydzień porównuje się liczbę zgłoszeń ze skrzynki z liczbą zapisaną w bazie strony i przegląda zgłoszenia oznaczone jako spam.

W Contact Form 7 odrzucone zgłoszenie rozpoznaje się po pomarańczowej ramce komunikatu pod formularzem i ogólnej informacji o problemie z wysłaniem wiadomości. Jeśli taki komunikat pojawia się przy zwykłym, poprawnym zapytaniu, ochrona jest ustawiona zbyt surowo albo klucze są błędne. Wtedy trzeba ją wyłączyć do czasu znalezienia przyczyny, ponieważ każda godzina oznacza stracone zapytania.
O skuteczności świadczy prosty obraz: spam na skrzynce spada niemal do zera w ciągu doby, a liczba prawdziwych zapytań pozostaje na dotychczasowym poziomie. Jeśli spadły obie liczby, filtr zatrzymuje również klientów.
Co zrobić, gdy spam nadal przychodzi?
Jeśli po włączeniu ochrony spam nie ustał, przyczyna leży zwykle w jednym z pięciu miejsc. Należy je sprawdzać po kolei.
Wiadomości nie pochodzą z formularza
Spamerzy często biorą adres e-mail wprost ze strony i piszą na niego z pominięciem formularza. Wystarczy porównać temat i nadawcę: wiadomości z formularza mają stały temat ustawiony we wtyczce i przychodzą z adresu strony. Wszystko inne to zwykły spam pocztowy, który zatrzymuje filtr w skrzynce, a nie zabezpieczenie formularza.
Na stronie jest drugi formularz
Ochrona włączona w jednej wtyczce nie obejmuje formularza zapisu na biuletyn, formularza w oknie nakładanym na stronę, komentarzy ani formularza rejestracji. Trzeba przejrzeć stronę i spisać wszystkie miejsca, w których odwiedzający może cokolwiek wysłać. Stare, nieużywane formularze najlepiej usunąć razem z podstronami, na których się znajdują.
Pamięć podręczna podaje starą wersję strony
Jeśli strona jest zapisana w pamięci podręcznej sprzed zmian, odwiedzający dostają formularz bez widżetu weryfikacji. Po każdej zmianie w ochronie trzeba wyczyścić pamięć podręczną. Bywa też odwrotnie: wtyczki łączące i opóźniające skrypty psują działanie weryfikacji. Wtedy skrypty Turnstile albo reCAPTCHA należy wyłączyć z opóźniania i łączenia w ustawieniach wtyczki przyspieszającej.
Klucze są błędne albo przypisane do innej domeny
Klucz utworzony dla innej domeny, klucz wklejony z dodatkową spacją albo zamienione miejscami pola to częste pomyłki. Contact Form 7 zgłasza wtedy błąd nieprawidłowych wartości kluczy już przy zapisie. Warto też sprawdzić, czy domena w widżecie Cloudflare obejmuje wersję strony, na której faktycznie działa formularz, w tym ewentualną subdomenę.
Spam piszą ludzie
Jeżeli wiadomości są poprawne językowo i przechodzą weryfikację w tle, pozostaje filtrowanie treści. Pomaga włączenie Akismetu oraz dopisanie do listy niedozwolonych słów domen i zwrotów powtarzających się w ofertach. Pomaga też drobna zmiana w samym formularzu: pole wyboru tematu sprawy zamiast jednego otwartego pola utrudnia masowe wklejanie tej samej treści.
Gdy ataki są bardzo nasilone i obciążają serwer, ochrona formularza już nie wystarczy. Wtedy potrzebna jest zapora na poziomie całej strony, która ogranicza liczbę wysyłek z jednego adresu w krótkim czasie. Takie reguły ustawia się u dostawcy hostingu albo w usłudze pośredniczącej w ruchu i warto je uzgodnić z osobą techniczną, bo błędna reguła odcina także klientów.
Jakich błędów unikać przy zabezpieczaniu formularza?
Większość kłopotów po wdrożeniu ochrony wynika z kilku powtarzających się pomyłek.
- Włączenie wszystkich metod naraz. Przy pierwszej zablokowanej wiadomości nie wiadomo, która warstwa jest przyczyną. Lepiej dodawać je pojedynczo i po każdej wykonać test.
- Brak zapisu zgłoszeń. Bez niego nie da się odzyskać zapytania odrzuconego przez pomyłkę.
- Ukrycie plakietki reCAPTCHA bez wymaganej informacji przy formularzu.
- Pominięcie polityki prywatności. Turnstile, reCAPTCHA i Akismet przekazują dane odwiedzających, w tym adres IP, zewnętrznym dostawcom. Należy to opisać w polityce prywatności, a w razie wątpliwości skonsultować z prawnikiem lub inspektorem ochrony danych.
- Blokowanie całych krajów albo pospolitych słów, przez co giną prawdziwe zapytania.
- Podmiana formularza na sam adres e-mail wypisany na stronie. Taki adres automaty zbierają jeszcze chętniej.
- Instalowanie przypadkowych, dawno nieaktualizowanych dodatków obiecujących pełną ochronę jednym kliknięciem.
Osobną sprawą jest dostępność. Zagadki obrazkowe są barierą dla osób słabowidzących i starszych, dlatego ochrona w tle jest lepsza nie tylko dla wygody, ale też dla równego dostępu do kontaktu z firmą. Przy formularzu zawsze powinien być podany także numer telefonu, żeby klient zablokowany przez pomyłkę miał inną drogę kontaktu.
Najczęstsze pytania
Czy niewidoczna ochrona zatrzyma cały spam?
Nie. Weryfikacja w tle i pułapka zatrzymują automaty, które odpowiadają za większość niechcianych zgłoszeń, ale nie zatrzymają człowieka wklejającego ofertę ręcznie. Dlatego łączy się je z filtrem treści, czyli Akismetem lub listą niedozwolonych słów, przyjmując, że pojedyncze wiadomości nadal mogą się przedostać.
Co jest lepsze: Turnstile czy reCAPTCHA v3?
Obie usługi spełniają to samo zadanie. Turnstile ma tryb całkowicie niewidoczny i nie pokazuje plakietki w rogu strony, a o wyniku weryfikacji decyduje sam. reCAPTCHA v3 zwraca ocenę i wymaga ustawienia progu, a jej plakietkę można ukryć tylko po dodaniu informacji przy formularzu. Dla typowej strony firmowej uważam Turnstile za prostszy w utrzymaniu.
Czy korzystanie z Turnstile wymaga przeniesienia domeny do Cloudflare?
Nie wymaga. Potrzebne jest konto w Cloudflare i utworzony w nim widżet z wpisaną domeną strony. Sama strona może pozostać u dotychczasowego dostawcy hostingu i nie trzeba zmieniać ustawień domeny.
Czy ochrona formularza wpływa na szybkość strony?
Pułapka, próg czasu i lista słów nie mają na nią wpływu. Turnstile i reCAPTCHA dokładają zewnętrzny skrypt, który przeglądarka musi pobrać. Po wdrożeniu należy zmierzyć stronę ponownie, a jeśli wynik się pogorszył, ograniczyć wczytywanie skryptu do podstron z formularzem, o ile używana wtyczka na to pozwala.
Co zrobić, gdy klient zgłasza, że nie może wysłać formularza?
Najpierw należy powtórzyć jego czynności w oknie prywatnym i na telefonie. Jeśli błąd się potwierdza, trzeba wyczyścić pamięć podręczną i sprawdzić klucze. Jeśli dotyczy tylko tej jednej osoby, przyczyną bywa stara przeglądarka albo dodatek blokujący skrypty. W obu przypadkach klient powinien mieć pod ręką telefon i adres e-mail firmy.
Czy samo ukryte pole wystarczy małej firmie?
Przy niewielkim natężeniu spamu często tak, zwłaszcza w połączeniu z progiem czasu. Bardziej zaawansowane boty rozpoznają jednak ukryte pola i je pomijają. Jeśli po włączeniu pułapki spam wraca po kilku tygodniach, trzeba dołożyć weryfikację w tle.
Czy trzeba informować odwiedzających o ochronie przed spamem?
Jeśli ochrona korzysta z zewnętrznej usługi, informacja powinna znaleźć się w polityce prywatności. Cloudflare wymaga tego wprost dla trybu niewidocznego, a Google dla ukrytej plakietki. Pułapka i próg czasu działają wyłącznie na stronie firmy i nie przekazują nikomu danych, więc takiego obowiązku nie tworzą.
Brak czasu albo ochoty, żeby zająć się tym samodzielnie?
Nie każdy właściciel firmy chce zakładać konta w kolejnych usługach, kopiować klucze i testować formularz na trzech urządzeniach. To zrozumiałe. Mogę zrobić to w całości: sprawdzę, jaki spam trafia na skrzynkę i którędy, dobiorę ochronę działającą w tle, włączę ją we wszystkich formularzach na stronie, uzupełnię filtr treści i przetestuję wysyłkę tak, żeby żadne prawdziwe zapytanie nie przepadło. Na koniec przekażę krótki opis tego, co zostało ustawione i jak to kontrolować.
Wystarczy zadzwonić pod numer 533 525 168 albo napisać na adres info@lukaszwudyka.pl i podać adres strony. Odpowiem, co da się zrobić i ile to potrwa.



