Szanujemy Twoją prywatność

Używamy plików cookies niezbędnych do działania strony. Za Twoją zgodą korzystamy też z cookies analitycznych (Google Analytics), żeby wiedzieć, co ulepszać, i marketingowych (piksel Meta, Google Ads), żeby mierzyć skuteczność reklam. Możesz zaakceptować wszystkie, odrzucić wszystkie albo wybrać samodzielnie. Polityka prywatności.

·

Jak zabezpieczyć formularz kontaktowy na WordPressie przed spamem

Daniel Jeziorski
Jak zabezpieczyć formularz kontaktowy na wordpressie przed spamem?

Formularz zabezpieczysz przed spamem warstwami. Najpierw włącz honeypot i token we wtyczce formularza, potem dodaj niewidoczną weryfikację, np. Cloudflare Turnstile, i limit wysyłek z jednego adresu. Filtr treści i obrazkową CAPTCHA zostaw na koniec. Po każdej zmianie wyślij testowe zapytanie i sprawdź, czy doszło, bo źle ustawiona ochrona zatrzymuje także klientów.

Piszę z perspektywy kogoś, kto buduje i utrzymuje strony na WordPressie dla ekspertów i małych firm usługowych. Formularze buduję na Fluent Forms Pro, a przed większością stron stoi Cloudflare. Pokażę, co działa, co wychodzi poza Twój serwer i gdzie ochrona potrafi po cichu zjadać zapytania.

Skąd w ogóle bierze się spam z formularza

Gdy strona zaczyna pojawiać się w Google, odwiedzają ją nie tylko ludzie, ale też boty. Proste tylko przechodzą po podstronach i zużywają zasoby serwera. Bardziej zaawansowane potrafią wypełnić formularz i wysłać go setki razy: z ofertą pozycjonowania, linkiem do podejrzanej strony albo zwykłym śmieciem.

Problem nie kończy się na irytacji. Gdy w skrzynce są dziesiątki fałszywych wiadomości, prawdziwe zapytanie łatwo przeoczyć.

Przykład wymyślony na potrzeby tekstu: trenerka dostaje dziennie kilkanaście wiadomości o „pakietach SEO”, więc przestaje czytać powiadomienia z formularza. Prawdziwe zapytanie od firmy szkoleniowej czeka tydzień.

Zasada: najpierw ciche warstwy, potem głośne

Każde zabezpieczenie ma swój koszt. Część kosztuje klienta (musi coś kliknąć albo rozwiązać), część kosztuje prywatność (dane idą do zewnętrznej firmy), część kosztuje Ciebie (konfiguracja i pilnowanie). Dlatego kolejność ma znaczenie:

  1. Honeypot i token we wtyczce formularza. Klient ich nie widzi, dane zostają na Twoim serwerze.
  2. Niewidoczna weryfikacja (Turnstile albo reCAPTCHA v3). Klient zwykle nic nie robi, ale do dostawcy trafiają dane techniczne odwiedzającego.
  3. Limit wysyłek z jednego adresu IP, np. w Cloudflare. Zatrzymuje serie.
  4. Filtr treści (słowa, Akismet). Działa po wysłaniu, więc treść jest już analizowana.
  5. Obrazkowa CAPTCHA albo pytanie kontrolne. Tylko gdy wszystko wyżej zawiodło.
Droga wiadomości z formularza przez cztery zabezpieczenia: limit wysyłek w Cloudflare, niewidoczna weryfikacja Turnstile, honeypot i token, filtr treści, na końcu skrzynka i panel; przy każdym dopisek, co widzi klient, a obrazkowa CAPTCHA osobno jako ostateczność
Większość ochrony działa tak, że klient nic nie zauważa.

Porównanie metod: wygoda klienta i RODO

MetodaCo widzi klientCo wychodzi poza Twój serwerNa co uważać
Honeypotnicnicnie zatrzyma bota, który pomija ukryte pola
Token we wtyczcenicnicwymaga JavaScriptu, wrażliwy na cache strony
Cloudflare Turnstilezwykle nic, czasem pole do zaznaczeniaIP, odcisk połączenia, przeglądarkatoken trzeba sprawdzić po stronie serwera
reCAPTCHA v3nic (plakietka w rogu albo informacja w formularzu)dane do oceny ryzyka w Google, ciasteczkowedług Google od kwietnia 2026 to Ty jesteś administratorem tych danych
Akismetniccała treść zgłoszeniado strony firmowej płatny plan
Obrazkowa CAPTCHA, quizzadanie do rozwiązaniazależy od dostawcymęczy ludzi, część rezygnuje

Honeypot

Honeypot, czyli dosłownie „garnek miodu”, to pole formularza ukryte przed człowiekiem, ale obecne w kodzie jak każde inne. Proste boty wypełniają wszystkie pola, więc wpisują coś także tutaj. Wtyczka widzi wypełnione ukryte pole i odrzuca wysyłkę. Dla ludzi zero zmian, dla RODO też, bo nic nie wychodzi na zewnątrz.

Token we wtyczce formularza

Wtyczka generuje losowy ciąg znaków przy wyświetleniu formularza i sprawdza go przy wysyłce. Bot, który wysyła dane prosto na adres formularza, nie ma ważnego tokenu. W Fluent Forms i w WPForms to kilka kliknięć, ale ta warstwa najczęściej koliduje z cache, o czym niżej.

Cloudflare Turnstile

Turnstile to darmowa alternatywa CAPTCHA od Cloudflare. W planie bezpłatnym masz do 20 widżetów i brak limitu weryfikacji. Działa na każdej stronie, także takiej, której ruch nie przechodzi przez Cloudflare. W trybie zalecanym sam decyduje, czy pokazać pole do zaznaczenia, zależnie od ryzyka. Większość ludzi nie musi nic robić.

Dwa warunki, żeby to miało sens. Po pierwsze, token z formularza trzeba sprawdzić po stronie serwera. Cloudflare pisze wprost, że bez tego wdrożenie nie jest kompletne. Dobra wtyczka formularza robi to za Ciebie. Po drugie, token jest ważny 5 minut i można go sprawdzić tylko raz.

Według informacji Cloudflare Turnstile przetwarza adres IP, odcisk połączenia TLS, dane przeglądarki i klucz strony, wyłącznie do wykrywania botów, nie do profilowania. Mój zespół wdraża Turnstile na stronach klientów.

reCAPTCHA v3

reCAPTCHA v3 od Google ocenia każde wejście w skali od 0,0 (prawie na pewno bot) do 1,0 (prawie na pewno człowiek) i nie przerywa pracy odwiedzającemu. Domyślny próg to 0,5. Google zaleca uruchamianie jej także w tle innych podstron, więc skrypt ląduje szerzej niż tylko przy formularzu. Ustawia też niezbędne ciasteczko `_GRECAPTCHA`.

Według FAQ Google Cloud od 2 kwietnia 2026 roku klient usługi (reCAPTCHA działa dziś w ramach Google Cloud Fraud Defense) jest jedynym administratorem tych danych, a Google przetwarza je na jego zlecenie. Z plakietki zniknęły odnośniki do polityki prywatności Google i nie musisz ich już pokazywać. Plakietkę wolno ukryć, jeśli w formularzu napiszesz, że stronę chroni reCAPTCHA. Bez opłat masz 10 000 ocen miesięcznie.

Akismet

Akismet filtruje zgłoszenie po wysłaniu, oceniając treść. Każda wiadomość z formularza trafia na serwery Akismet, zanim dotrze do Twojej skrzynki. Według polityki prywatności Akismet większość tych danych jest przechowywana od dwóch tygodni do 90 dni. Do stron firmowych przeznaczone są płatne plany (Pro „dla stron profesjonalnych i komercyjnych”).

Jeśli prowadzisz gabinet, zastanów się dwa razy. Rezerwacja wizyty w placówce medycznej może być daną o zdrowiu, nawet gdy formularz nie pyta o objawy. Wysyłanie takich treści do kolejnej firmy to temat na rozmowę z prawnikiem, nie na szybkie kliknięcie.

Obrazkowa CAPTCHA i pytanie kontrolne

Wybieranie obrazków z autobusami albo przejściami dla pieszych męczy ludzi. Pytanie w stylu „ile to 45 plus 15” jest lżejsze, ale też dokłada pracy. Te metody zostaw na sytuację, gdy ciche warstwy przestaną wystarczać.

Co wpisać do polityki prywatności

Do odpowiedzi na zapytanie z formularza nie potrzebujesz zgody. Podstawą są działania przed zawarciem umowy i prawnie uzasadniony interes (art. 6 ust. 1 lit. b i f RODO), plus krótka informacja z linkiem do polityki prywatności. Ochrona przed spamem tego nie zmienia, ale dokłada odbiorców danych.

W polityce prywatności opisz więc każdą zewnętrzną usługę, której używasz przy formularzu: Turnstile (Cloudflare), reCAPTCHA (Google) albo Akismet. Napisz, w jakim celu i jakie dane przetwarza. Honeypot i token zwykle nie wymagają osobnego zapisu, bo dane nie wychodzą poza stronę. Jeśli nie wiesz, czy skrypt weryfikacji wymaga zgody w banerze cookies, zapytaj prawnika, który przygotował Twoją politykę prywatności.

Jak to ustawić w popularnych wtyczkach

Fluent Forms

Honeypot i ochronę tokenem włączysz w Global Settings, General, Miscellaneous. Turnstile podłączysz w Global Settings, Security, Turnstile, wklejając klucz strony i klucz tajny z panelu Cloudflare. Blokadę po IP, kraju albo słowach kluczowych ustawisz w danym formularzu w sekcji Scheduling & Restrictions.

WPForms

W edytorze formularza: Settings, Spam Protection and Security, przełącznik „Enable modern anti-spam protection”. Według dokumentacji jest domyślnie włączony i wymaga JavaScriptu. Akismet, reCAPTCHA, hCaptcha i Turnstile są dostępne także w darmowej wersji Lite.

Contact Form 7

Od wersji 6.1 ma wbudowany moduł Turnstile: Kontakt, Integracja, sekcja Turnstile. Honeypot dodasz osobną wtyczką, dziś nazwaną „CF7 Apps”, a dawniej „Honeypot for Contact Form 7”. Ukryte pole umieść między innymi polami, nie na końcu formularza. Pytanie kontrolne masz w Contact Form 7 bez dodatkowej wtyczki, jako pole typu quiz.

Dwie pułapki, które po cichu zjadają zapytania

Cache strony i token antyspamowy

Wtyczki cache zapisują gotową kopię strony i podają ją każdemu. Jeśli w tej kopii zapisze się element ochrony wygenerowany dla innej osoby, formularz może odrzucić prawdziwą wiadomość.

U klienta mój zespół szukał przyczyny, dla której formularz odrzucał wiadomości zalogowanych użytkowników. Winny nie był sam formularz, tylko element bramkujący pobranie tokenu antyspamowego. Zalogowana osoba dostawała z cache kopię przygotowaną dla anonimowego gościa. Zabezpieczenie zapisane w tej kopii nie pasowało do niej, więc wtyczka nie wydawała tokenu antyspamowego i pokazywała komunikat „Suspicious activity detected”. Wniosek: przed obwinianiem wtyczki sprawdź, co faktycznie jest weryfikowane, i testuj jako zalogowany oraz niezalogowany. Optymalizacja skryptów potrafi popsuć formularz w podobny sposób.

Weryfikacja Cloudflare na wysyłce formularza

W Cloudflare kusi, żeby podejrzany ruch odsyłać na stronę weryfikacji. Na samej wysyłce formularza to błąd. Przeglądarka po weryfikacji traci treść formularza, a człowiek widzi pustą stronę. U jednego z klientów taka reguła zatrzymywała zapytania ofertowe od nowych odwiedzających. Przechodzili tylko ci, którzy wysłali formularz drugi raz.

Na wysyłkę formularza lepiej działa wąski wyjątek w regułach, limit liczby wysyłek z jednego IP z blokadą i Turnstile w samym formularzu.

Wiadomość przeszła filtr, ale nie dotarła

Spam to jedna strona problemu, druga to dostarczalność powiadomień. Formularz może poprawnie zapisać zapytanie, a mail z powiadomieniem nie wyjdzie albo wyląduje w spamie. Dlatego po teście zajrzyj do listy wpisów w panelu wtyczki formularza i do logu wtyczki SMTP, jeśli ją masz.

Szczególnie po przeniesieniu domeny do Cloudflare sprawdź rekordy poczty. Automatyczny import potrafi zgubić rekordy MX, SPF, DKIM i DMARC: strona działa, a poczta przestaje. Gdzie trafiają dane z formularza i jak je zbierać, opisałem we wpisie o zbieraniu danych z formularza na WordPressie.

Test po każdej zmianie

Po każdej zmianie ochrony, cache albo reguł Cloudflare wyślij zapytanie testowe w trzech warunkach:

  1. jako zalogowany użytkownik WordPressa,
  2. jako niezalogowany gość,
  3. w oknie prywatnym (incognito).

W każdym przypadku sprawdź dwie rzeczy: czy wiadomość pojawiła się w panelu wtyczki formularza i czy przyszło powiadomienie mailem. Sam komunikat „Dziękujemy, wiadomość wysłana” niczego nie dowodzi. Różnica między tymi trzema warunkami to najczęstsze miejsce, w którym chowa się awaria.

Karta testu formularza: trzy kolumny zalogowany, niezalogowany i incognito, dwa wiersze do odhaczenia: wiadomość w panelu formularza i powiadomienie w skrzynce
Test po każdej zmianie ochrony, cache albo reguł Cloudflare.

Kiedy samemu, a kiedy zlecić

Zrobisz to sam, gdy masz Fluent Forms, WPForms albo Contact Form 7, spamu jest umiarkowanie, a strona nie stoi za skomplikowanym cache. Włącz honeypot i token, dodaj Turnstile, zrób test w trzech warunkach.

Zleć, gdy spam przychodzi seriami mimo ochrony, gdy po zmianach klienci piszą, że „formularz nie działa”, albo gdy przed stroną stoi Cloudflare z własnymi regułami. Jeśli spam wychodzi z Twojej domeny, a nie przychodzi formularzem, problem może być poważniejszy: wtedy zacznij od odwirusowania WordPressa. Gdy formularz przestał działać po aktualizacji, zajrzyj na stronę o naprawie WordPressa.

Ochrona formularza to część stałego pilnowania strony, razem z aktualizacjami, kopiami zapasowymi i testami po zmianach. Jeśli nie chcesz się tym zajmować, sprawdź, na czym polega opieka nad stroną. A jeśli dopiero składasz stronę, zobacz poradnik, jak stworzyć stronę internetową.

Najczęstsze pytania

Czy honeypot wystarczy?

Na małej stronie często wystarcza na start, bo zatrzymuje najprostsze boty. Gdy spam nadal przychodzi, dodaj Turnstile albo limit wysyłek, zamiast od razu włączać obrazkową CAPTCHA.

Turnstile czy reCAPTCHA v3?

Obie działają zwykle bez udziału człowieka. Turnstile w planie bezpłatnym nie ma limitu weryfikacji i według Cloudflare nie służy do profilowania. reCAPTCHA v3 ma darmowy próg 10 000 ocen miesięcznie, a Google zaleca ją także w tle innych podstron. Na prostej stronie eksperta wybieram Turnstile.

Czy reCAPTCHA wymaga zgody w banerze cookies?

Google opisuje swoje ciasteczko jako niezbędne do oceny ryzyka. Czy u Ciebie wystarczy informacja w polityce prywatności, oceni prawnik, który ją przygotował. Pamiętaj, że według Google od kwietnia 2026 roku to Ty jesteś administratorem tych danych.

Czy ochrona przed spamem spowalnia stronę?

Honeypot i token nie dokładają skryptów z zewnątrz. Turnstile i reCAPTCHA ładują skrypt dostawcy, więc warto, żeby ładował się tylko tam, gdzie jest formularz, jeśli wtyczka na to pozwala.

Zobacz też: co zrobić, gdy WordPress nie wysyła maili oraz wtyczki bezpieczeństwa: czego używam, a czego nie instaluję.

Spam zalewa skrzynkę, a boisz się zgubić klientów?

Napisz do mnie, na czym zbudowany jest Twój formularz i ile spamu dostajesz. Powiem, która warstwa ma u Ciebie sens i od czego zacząć, żeby nie zgubić prawdziwych zapytań. Odpowiadam zwykle tego samego dnia roboczego.

Daniel Jeziorski
AutorDaniel Jeziorski

Inżynier informatyki. Razem z zespołem Webly Mate tworzę strony, sklepy i platformy kursowe na WordPressie dla ekspertów i marek osobistych. Od 2022 roku piszę newsletter Ten od WordPressa.

Więcej o mnie

Twoje konsultacje i e-booki sprzedają się, nawet kiedy śpisz

Klient sam wybiera, płaci i dostaje to, co kupił. Ty zajmujesz się klientami, nie przelewami.

Sklep internetowy

Nie wiesz, co poprawić na stronie?

Audyt strony pokaże, co poprawić i w jakiej kolejności. Zdecydujesz, czy wdrażamy to razem.

Audyt strony

Chcesz, żeby ktoś pilnował Twojej strony?

Biorę na siebie aktualizacje, kopie zapasowe i bezpieczeństwo Twojej strony na WordPressie.

Opieka i rozwój

Potrzebujesz strony, która pracuje na Twoją markę?

Zobacz, jak wygląda współpraca od pierwszej wiadomości do startu strony.

Jak współpracuję

Potrzebujesz strony, która pracuje na Twoją markę?

Zobacz, jak wygląda współpraca od pierwszej wiadomości do startu strony.

Jak współpracuję
Newsletter

Ten od WordPressa

Praktycznie o WordPressie, stronach i widoczności w Google, prosto na Twoją skrzynkę. Piszę go od 2022 roku.

Newsletter Ten od WordPressa

Administratorem danych jest Webly Mate Sp. z o.o. Adres e-mail przekazuję do MailerLite, który wysyła newsletter w moim imieniu. Szczegóły w polityce prywatności.