Masz formularz na stronie? Zabezpiecz go. Jest przed czym

Wordpress Łukasz Ślusarski Łukasz Ślusarski 14 min czytania
Masz formularz na stronie? Zabezpiecz go. Jest przed czym

Jeśli na Twojej stronie stoi formularz kontaktowy, zapis na newsletter, prośba o wycenę albo koszyk z danymi do zamówienia, to masz w domu skrzynkę na listy bez zamka. Każdy może do niej wrzucić cokolwiek. I wrzuca.

Większość osób traktuje spam z formularza jak komara. Irytujący, ale przecież nie groźny. Skasujesz, idziesz dalej. Problem w tym, że komar rzadko przylatuje sam, a Ty nie skasujesz tego, czego nie zauważysz.

Ten tekst jest o dwóch rzeczach. Ile realnie wart jest formularz, którego nie chronisz. I jak go zabezpieczyć, od rzeczy, które zajmują pięć minut i nic nie kosztują, po takie, które wymagają dostępu do serwera.


Formularz to najcenniejsze pole na stronie

Zacznijmy od tego, ile ten formularz jest wart, bo bez tego cała reszta to teoria.

Ruler Analytics przeanalizowało ponad 110 milionów sesji i 5 milionów konwersji w trzynastu branżach. Średnia konwersja formularza wyszła 5,13 procent. Rozrzut jest ogromny i to on jest ciekawy. Kancelarie prawne i motoryzacja 7,9 procent. Software 7,6. Edukacja i finanse 6,3. Na drugim końcu turystyka z 1,9 procent, ochrona zdrowia 2,3 i handel z e-commerce 2,4.

Przeczytaj to jeszcze raz z perspektywy swojej firmy. Jeśli prowadzisz kancelarię, warsztat albo firmę usługową, mniej więcej co trzynasta osoba, która trafi na Twoją stronę, dotknie formularza. Jeśli sprzedajesz w sieci, co czterdziesta. To są Twoje zapytania. Cały budżet reklamowy, całe SEO, wszystkie godziny włożone w treści, wszystko to prowadzi do jednego pola z przyciskiem „wyślij”.

Zuko Analytics, które mierzy zachowanie na formularzach, dokłada do tego drugą liczbę. Około 45 procent osób, które zobaczą formularz, faktycznie go wysyła. Reszta odpada po drodze. Przy samych formularzach kontaktowych ten wskaźnik spada do 9 procent liczonych od wyświetlenia. Na telefonie jest gorzej niż na komputerze, 42 procent wobec 47.

Wniosek jest prosty i niewygodny. Każde zgłoszenie, które do Ciebie dociera, przeszło przez sito, na którym odpadło od połowy do dziewięciu na dziesięć osób. To, co zostaje, jest rzadkie i drogie. A teraz wyobraź sobie, że to rzadkie i drogie zgłoszenie ląduje w skrzynce razem z czterdziestoma wiadomościami o kryptowalutach.


Pogadajmy

Zrobić to razem?

Wdrażam takie rzeczy w firmach na co dzień. Umów 30 minut, pogadamy konkretnie o Twoim przypadku. Bez prezentacji sprzedażowej.

Umów bezpłatną rozmowę →
Łukasz Ślusarski
Łukasz ŚlusarskiTwórca important.is

Skala jest większa, niż się wydaje

Tu zaczyna się część, która zwykle zaskakuje.

Imperva publikuje co roku raport o ruchu botów w sieci. W wydaniu z 2025 roku po raz pierwszy od dekady ruch automatyczny przekroczył ruch ludzi i stanowi 51 procent całego ruchu w internecie. Złośliwe boty to 37 procent, wobec 32 procent w 2023. To szósty rok wzrostu z rzędu.

Dodatkowy szczegół z tego samego raportu tłumaczy dlaczego. Proste, masowe ataki stanowią dziś 45 procent wszystkich działań botów wobec 40 procent dwa lata wcześniej. Powód to darmowe narzędzia oparte na AI, które pozwalają odpalić taki atak osobie bez wiedzy technicznej. Kiedyś trzeba było umieć programować, żeby zasypać czyjś formularz. Dziś wystarczy umieć klikać.

OOPSpam, usługa filtrująca spam z formularzy, opublikowała rozkład tego, co dostaje się najbardziej. Formularze rejestracji 42 procent, formularze kontaktowe 26, formularze w sklepach 22 procent i to ostatnie urosło o 47 procent rok do roku, formularze opinii 10 procent. W jednym tygodniu września 2025 zarejestrowali ponad 450 tysięcy prób ataku w jednej fali.

Zmienia się też sposób, w jaki boty się ukrywają. Zamiast łączyć się z serwerowni, coraz częściej przechodzą przez przejęte domowe routery i telefony. Z perspektywy Twojej strony wygląda to jak zwykły użytkownik z Krakowa na łączu operatora. Nie da się tego odsiać samym blokowaniem adresów.

Do tego dochodzi liczba, która brzmi jak przesada, dopóki nie zobaczysz jej u siebie. ClearTrust podaje, że w lejkach performance marketingu 38 procent zgłoszeń z formularzy jest nieprawdziwych albo wygenerowanych automatycznie. Prawie cztery na dziesięć.


Co spam realnie zabiera

Teraz najważniejsze, bo tu leży prawdziwy koszt, a nie w samym istnieniu śmieci w skrzynce.

Pierwsza strata jest oczywista, choć rzadko liczona. Prawdziwe zapytanie ginie. Nie dlatego, że ktoś je usunął, tylko dlatego, że nikt go nie zauważył. Człowiek, który przez trzy tygodnie otwiera skrzynkę i widzi w niej dwadzieścia śmieci dziennie, przestaje ją otwierać uważnie. Zaczyna kasować zbiorczo. A potem, przy którymś zbiorczym kasowaniu, znika też ta jedna wiadomość, na którą czekał od miesiąca. Nikt tego nie zauważy, bo nikt nie wie, czego nie dostał.

Druga strata jest cichsza i dotyczy każdego, kto podpiął formularz pod cokolwiek automatycznego. A dziś podpina prawie każdy. Powiadomienie na Slacku, wpis do CRM, dodanie do listy mailingowej, trigger w n8n albo Make, SMS do handlowca, zadanie w systemie. Każde z tych połączeń uruchamia się przy każdym zgłoszeniu. Bot nie wie, że jest botem, a Twoja automatyzacja tym bardziej.

Efekt jest taki, że przy czterdziestu spamach dziennie Twój zespół dostaje czterdzieści powiadomień, CRM zapełnia się czterdziestoma fałszywymi rekordami, lista mailingowa zbiera adresy, które nie istnieją, a limity API w narzędziach, za które płacisz, topnieją na przetwarzanie śmieci.

I jest jeszcze trzeci koszt, najbardziej podstępny. Adresy z formularzy trafiają często do wysyłki. Jeśli wysyłasz maile na adresy, które nie istnieją, Twoja domena zbiera odbicia. Przy odpowiedniej skali dostawcy poczty zaczynają traktować Twoje wiadomości gorzej, a wtedy prawdziwa oferta dla prawdziwej firmy ląduje w spamie po drugiej stronie. Zaczęło się od niechronionego formularza, skończyło na tym, że nie docierasz do nikogo.

To dlatego to nie jest kwestia estetyki. Spam nie zajmuje miejsca na dysku. Zajmuje uwagę, a uwagi masz skończoną ilość.


Wolisz to zlecić? 30 minut, bez zobowiązań. Sprawdzimy czy to ma sens.
Zarezerwuj termin →

Poziom pierwszy, czyli zrób to dziś i nic nie zapłać

Dobra wiadomość jest taka, że pierwsze dwie warstwy załatwiają większość problemu, są darmowe i zajmują tyle, co zaparzenie kawy.

Honeypot

Nazwa brzmi tajemniczo, mechanizm jest banalny. Do formularza dodajesz dodatkowe pole, które ukrywasz przed ludźmi, zwykle stylami CSS. Człowiek go nie widzi, więc nigdy go nie wypełni. Prosty bot nie renderuje strony tak jak przeglądarka, tylko czyta surowy kod i wypełnia wszystko, co znajdzie. Jeśli po wysłaniu ukryte pole ma jakąkolwiek treść, wiesz, że po drugiej stronie nie było człowieka.

Zaletą jest to, że nikomu niczego nie utrudnia. Odwiedzający nie musi niczego klikać, nie widzi żadnego widgetu, nie wie nawet, że coś go sprawdza. Większość poważnych wtyczek do formularzy ma to wbudowane i włącza się jednym przełącznikiem w ustawieniach.

Są dwie pułapki, o których mało kto mówi. Pierwsza to menedżery haseł i autouzupełnianie w przeglądarce. Jeśli po prostu ukryjesz pole i nie zabezpieczysz go dodatkowo, 1Password albo Bitwarden potrafi je wypełnić za użytkownika, a Ty odrzucisz zgłoszenie prawdziwej osoby. Rozwiązaniem są dodatkowe atrybuty w kodzie pola, między innymi nietypowa wartość w autocomplete oraz data-lpignore i data-1p-ignore. Druga pułapka to dostępność. Osoba korzystająca z czytnika ekranu może usłyszeć pole, którego nie widzi nikt inny, i próbować je wypełnić. Dlatego ukryte pole powinno mieć tabindex="-1" i aria-hidden="true".

Jeśli korzystasz z gotowej wtyczki, to zwykle jest już zrobione. Jeśli ktoś pisał Ci formularz ręcznie, to jest dokładnie ten szczegół, o który warto zapytać.

Honeypot łapie proste, masowe boty, czyli statystycznie największą grupę. Nie zatrzyma niczego, co renderuje stronę tak jak przeglądarka.

Captcha, czyli Turnstile albo reCAPTCHA

Drugą warstwę zna każdy, bo to ten kwadracik z zaznaczaniem świateł drogowych. Tylko że dziś już nie musi tak wyglądać.

Masz do wyboru dwa rozwiązania. Google reCAPTCHA, obecnie najczęściej w wersji trzeciej, która działa w tle i przyznaje każdemu odwiedzającemu ocenę od zera do jedynki. Oraz Cloudflare Turnstile, młodszy konkurent, który robi to samo, ale bez konta Google i bez ciasteczek śledzących.

Różnica, która przeważa w Europie, dotyczy prywatności. Turnstile nie ustawia ciasteczek i nie śledzi ludzi między stronami, przetwarza tylko sygnały w obrębie jednej sesji. reCAPTCHA zbiera znacznie więcej, w tym ciasteczka i wzorce zachowania, przez co w Unii zwykle wymaga zgody w banerze. To jest realna różnica prawna, nie kwestia gustu. Jeśli Twoja strona zbiera dane osób z Europy, Turnstile jest po prostu prostszy do ogarnięcia. Warto przy tym pamiętać, że oba narzędzia i tak wysyłają dane do amerykańskiego dostawcy, więc jeśli masz szczególnie ostre wymagania, temat jest szerszy.

Rzecz, o której trzeba wiedzieć, zanim to włączysz. Sam widget ma kilka trybów. Może pokazywać checkbox, może być całkowicie niewidoczny i sprawdzać wszystko w tle, pokazując cokolwiek dopiero przy podejrzanym ruchu. Ten drugi tryb wybiera się przy tworzeniu klucza w panelu Cloudflare, nie we wtyczce na stronie. Jeśli zależy Ci na tym, żeby formularz wyglądał czysto, to jest miejsce, w którym się o to zadbasz.

I najważniejsze ostrzeżenie z tej całej sekcji. Sama zainstalowana i włączona wtyczka nie robi nic. Captcha wymaga dwóch kluczy, publicznego i prywatnego, wygenerowanych w panelu dostawcy i wklejonych w ustawienia. Bez nich wtyczka widnieje jako aktywna na liście, a formularz stoi otwarty. To jest jeden z najczęstszych stanów, w jakim zastaje się strony. Zamek wisi na drzwiach, tylko nikt nie dorobił do niego klucza.

Druga rzecz, o której się zapomina. Dodanie captchy w ustawieniach globalnych nie zawsze wstawia ją do formularzy. W części systemów trzeba jeszcze dodać pole captchy do każdego formularza osobno. Sprawdź to fizycznie, wchodząc na stronę w trybie prywatnym i patrząc, czy widget faktycznie się pojawia.


Poziom drugi, czyli kilka rzeczy, które nie są w standardzie

Jeśli po pierwszej warstwie spam nadal przechodzi, a przy dzisiejszych botach potrafi, wchodzisz w rzeczy, których popularne wtyczki do formularzy zwykle nie mają wbudowanych. Trzeba je albo dopisać, albo kupić dedykowane narzędzie antyspamowe, które robi je z poziomu panelu.

Minimalny czas wypełnienia

Człowiek musi przeczytać etykiety, kliknąć w pole, wpisać imię, wpisać adres, sformułować zdanie. To trwa. Bot, który renderuje stronę, wysyła formularz niemal natychmiast po jego załadowaniu.

Mechanizm polega na tym, że przy wyświetleniu formularza zapisujesz czas, a przy wysłaniu sprawdzasz różnicę. Jeśli minęły mniej niż trzy sekundy, odrzucasz zgłoszenie. Trzy sekundy to próg, przy którym nie da się realnie zaszkodzić nikomu prawdziwemu, bo nikt nie wypełni nawet dwóch pól szybciej. Można dać cztery albo pięć, różnica w skuteczności jest niewielka, więc lepiej być ostrożnym.

Ważny szczegół implementacyjny. Ten zapisany czas musi być podpisany, na przykład skrótem kryptograficznym. Jeśli po prostu wstawisz do formularza ukryte pole z czasem, bot je po prostu podmieni na wygodniejszą wartość i tyle z zabezpieczenia.

Domeny jednorazowe i walidacja adresu

Istnieją dziesiątki serwisów oferujących adres e-mail na dziesięć minut. Mailinator, Guerrilla Mail, YOPmail i cała reszta. Ktoś, kto zapisuje się przez taki adres, nie planuje z Tobą rozmawiać.

Najprostsza obrona to lista takich domen i odrzucanie zgłoszeń z nich. Ma jedną wadę, o której trzeba wiedzieć od początku. Nowe domeny powstają cały czas, więc statyczna lista starzeje się w kilka tygodni. Jeśli jej nie odświeżasz, po pół roku łapie coraz mniej.

Drugi mechanizm to sprawdzenie, czy domena z adresu w ogóle przyjmuje pocztę, czyli czy ma poprawny rekord MX w DNS. To wyłapuje literówki w rodzaju gmial.com, domeny, które wygasły, i adresy wpisane na odczep się. Trzeba jednak wiedzieć, czego to nie robi. Obecność rekordu MX nie znaczy, że skrzynka istnieje ani że domena nie jest jednorazówką, bo serwisy tymczasowe mają swoje MX jak każdy. To jest sito na oczywiste błędy, nie test prawdziwości.

Ciekawostka przydatna w praktyce. Serwisy jednorazowe często dzielą tę samą infrastrukturę pocztową, więc sprawdzając, dokąd wskazuje MX nowej, nieznanej domeny, można wyłapać adresy, których nie ma jeszcze na żadnej liście.


Poziom trzeci, czyli obrona zanim ruch dotknie strony

Wszystko powyżej dzieje się już wewnątrz Twojej strony. Zapytanie dotarło do serwera, serwer uruchomił system, system sprawdził formularz. Przy pojedynczych zgłoszeniach to bez znaczenia. Przy fali kilkuset na minutę Twoja strona po prostu zwalnia albo pada, niezależnie od tego, jak dobrze filtrujesz treść.

Ograniczanie liczby zapytań

Rate limiting działa na poziomie sieci, przed dotarciem do strony. Ustawiasz regułę: jeśli jeden adres wysyła więcej niż X zapytań w Y sekund, blokuj go przez Z sekund.

To nie jest narzędzie na pojedyncze spamy. Zwykły spamer wyśle jedno zgłoszenie i pójdzie dalej, nie przekroczy żadnego progu. Rate limiting jest po to, żeby ktoś nie zasypał Cię pięcioma tysiącami zgłoszeń w kwadrans i przy okazji nie położył strony.

Uwaga praktyczna. Ustawiaj tę regułę na metodę POST, czyli na wysyłanie danych, nie na zwykłe przeglądanie. Inaczej złapiesz w nią prawdziwych ludzi, którzy szybko klikają po podstronach.

Reputacja adresu i analiza zachowania

Najwyższy poziom to systemy, które oceniają nie treść zgłoszenia, tylko to, skąd przyszło i jak się zachowywało. Czy adres jest znany z ataków na inne strony. Czy pochodzi z serwerowni, czy z łącza domowego. Czy ruch na stronie wyglądał jak człowiek czytający, czy jak skrypt skaczący prosto do formularza.

To jest kierunek, w którym idzie cała branża, i to z konkretnego powodu. Skoro boty przechodzą dziś przez przejęte domowe routery, samo blokowanie serwerowni przestaje wystarczać. Autorzy raportu OOPSpam piszą to wprost, że wykrywanie oparte na zachowaniu jest dziś konieczne, a blokowanie po adresie samo w sobie już nie wystarcza.

Dla większości firm to warstwa, do której się dochodzi, a nie od której się zaczyna. Wchodzi w grę wtedy, gdy formularz jest realnym kanałem sprzedaży, a spam mimo wcześniejszych warstw dalej przechodzi.


Trzy błędy, które widuje się najczęściej

Pierwszy już padł, ale powtórzę, bo jest wyjątkowo powszechny. Zainstalowana wtyczka to nie to samo co działające zabezpieczenie. Sprawdź klucze, sprawdź czy pole faktycznie jest w formularzu, sprawdź na żywo w oknie prywatnym.

Drugi to szukanie jednego rozwiązania. Nie ma jednej wtyczki, która załatwia temat, bo każda metoda łapie inny rodzaj ruchu. Honeypot bierze prymitywne boty, captcha te lepsze, limit czasu te, które renderują stronę, walidacja adresu ludzi wpisujących śmieci ręcznie, a rate limiting fale. Wyjęcie jednej warstwy zostawia dziurę dokładnie w tym miejscu.

Trzeci jest najbardziej podstępny, bo dotyczy stron, które kiedyś były dobrze zabezpieczone. Konfiguracja się starzeje. Ktoś zmienia hosting, ktoś reaguje na awarię i tymczasowo wyłącza ochronę, ktoś wgrywa nowy motyw i formularz jest budowany od nowa, bez pola captchy. Każda z tych decyzji jest w swoim momencie sensowna, a po pół roku nikt już nie pamięta, że coś jest wyłączone. Zabezpieczenie raz włączone nie zostaje włączone na zawsze.


Od czego zacząć

Jeśli masz zrobić tylko jedną rzecz po przeczytaniu tego tekstu, to wejdź na własną stronę w oknie prywatnym, wypełnij swój formularz i sprawdź, czy w ogóle cokolwiek Cię pilnuje. Potem zajrzyj w ustawienia i sprawdź, czy to coś ma wpisane klucze.

Jeśli masz zrobić trzy rzeczy, dołóż honeypot i captchę, najlepiej Turnstile ze względu na brak banera zgody. To jest kilka minut roboty i zdejmuje większość ruchu.

Jeśli po tym spam nadal przechodzi, dopiero wtedy schodź niżej, do limitu czasu, walidacji adresów i ograniczania liczby zapytań. Nie ma sensu budować trzeciego piętra, kiedy parter stoi otworem.

Wszystko sprowadza się do jednej rzeczy. Formularz jest jedynym miejscem na stronie, które z definicji zaprasza obcych do środka i działa bez przerwy, także wtedy, kiedy śpisz. To, ile z tego zaproszenia zostanie wykorzystane przez kogoś, kto naprawdę chce z Tobą porozmawiać, zależy od tego, ile pracy włożysz w odsianie całej reszty.

Skrzynka na listy bez zamka nadal działa. Po prostu prawdziwy list leży w niej na dnie, pod stertą ulotek.


Źródła

raz na jakiś czas

Zostań w pętli

Nowe artykuły, narzędzia i case study prosto na maila. Bez spamu, bez sprzedaży.

To pole jest używane do walidacji i powinno pozostać niezmienione.