Otwierasz rano panel WooCommerce, a tam kilkadziesiąt nowych zamówień z losowymi nazwiskami, dziwnymi adresami e-mail albo identycznymi produktami. Część ma status „Oczekujące”, część „Nieudane”, a kolejne pojawiają się co kilka sekund. To bardzo często nie są klienci, tylko boty automatycznie wysyłające formularz zamówienia.
Najprostsza reakcja to dołożenie klientowi kilku CAPTCHA, obowiązkowego konta i kolejnych blokad. Tyle że wtedy razem z botami można skutecznie zatrzymać również prawdziwą sprzedaż.
Przy zabezpieczaniu WooCommerce wolę podejście warstwowe: niewidoczna lub mało uciążliwa weryfikacja człowieka, ograniczenie liczby prób, analiza powtarzalnych wzorców i dopiero na końcu mocniejsze blokady dla ruchu, który rzeczywiście wygląda podejrzanie.
Fałszywe zamówienia często są tworzone automatycznie przez boty.
Turnstile lub CAPTCHA warto chronić przede wszystkim na poziomie finalnego wysłania checkoutu.
Rate limiting może zatrzymać dziesiątki prób składanych w krótkim czasie.
Nie blokuję wszystkich klientów korzystających z VPN albo jednej dużej sieci.
Card testing wymaga innego podejścia niż zwykłe spamowe zamówienia za pobraniem.
Po każdej zmianie robię pełne zamówienie testowe również na telefonie.
Najpierw ustal, z jakim rodzajem fałszywych zamówień masz problem
„Boty w WooCommerce” mogą oznaczać kilka różnych sytuacji. To ważne, ponieważ nie każdą z nich blokuję dokładnie tym samym mechanizmem.
Losowe dane, często pobranie lub przelew, wiele zamówień w krótkim czasie.
Automat próbuje kolejnych danych kart, aby sprawdzić, które z nich działają.
Celem może być wygenerowanie dużej liczby żądań i obciążenie WordPressa lub API.
Jeżeli mam kilkaset zamówień za pobraniem, skupiam się przede wszystkim na blokowaniu automatycznego checkoutu. Jeśli widzę dziesiątki odrzuconych płatności kartą, dodatkowo analizuję mechanizmy antyfraudowe operatora płatności.
Jak bot składa zamówienie bez normalnego klikania po sklepie?
Bot nie musi otwierać strony produktu, przewijać koszyka i ręcznie wypełniać każdego pola.
Jeżeli zna sposób, w jaki checkout wysyła dane, może próbować automatycznie powtarzać odpowiednie żądanie.
Generuje dane klienta lub korzysta z gotowej listy.
Wysyła żądanie podobne do prawdziwego formularza.
Jeżeli żądanie przejdzie walidację, tworzy zamówienie.
Bot może wykonać kolejną próbę niemal natychmiast.
Właśnie dlatego samo ukrycie przycisku albo zmiana tekstu na stronie niczego nie rozwiązuje.
Jak rozpoznać, że zamówienia prawdopodobnie tworzy automat?
Jeden nieudany zakup nie oznacza ataku. Szukam raczej powtarzalnego wzorca.
- wiele zamówień pojawia się w bardzo krótkich odstępach,
- adresy e-mail wyglądają losowo lub różnią się pojedynczym znakiem,
- powtarza się ten sam adres IP, telefon lub fragment danych,
- wszystkie zamówienia mają identyczny produkt i wartość,
- pojawia się bardzo dużo nieudanych płatności,
- wzrost zamówień nie odpowiada wzrostowi normalnego ruchu,
- żądania pojawiają się regularnie co kilka sekund.
Dopiero gdy mam taki obraz, dobieram zabezpieczenie do konkretnego sposobu nadużycia.
1. Cloudflare Turnstile – ochrona bez klasycznej CAPTCHA
Jednym z rozwiązań, które lubię przy checkoutach, jest Cloudflare Turnstile.
W wielu przypadkach użytkownik nie musi zaznaczać obrazków, przepisywać tekstu ani wykonywać dodatkowej czynności. Mechanizm analizuje środowisko przeglądarki i próbuje zweryfikować użytkownika możliwie niewidocznie.
Klient musi wykonać dodatkowe zadanie, nawet jeśli nic w jego zachowaniu nie jest podejrzane.
Większość normalnych użytkowników może przejść weryfikację praktycznie bez dodatkowej pracy.
Turnstile nie wymaga nawet, aby sama domena korzystała z proxy Cloudflare. Można wdrożyć go niezależnie.
Sam widżet Turnstile nie wystarczy – token trzeba zweryfikować
To bardzo ważne przy własnym wdrożeniu.
Proces powinien wyglądać mniej więcej tak:
klient
↓
checkout
↓
Turnstile generuje token
↓
formularz trafia do serwera
↓
serwer weryfikuje token
↓
dopiero wtedy WooCommerce przyjmuje zamówienieJeśli ktoś jedynie wyświetli widżet na frontendzie, ale nie sprawdzi wyniku po stronie serwera, zabezpieczenie można ominąć znacznie łatwiej.
2. reCAPTCHA lub hCaptcha również mogą chronić checkout
Nie musisz korzystać akurat z Turnstile. Istnieją dodatki WooCommerce obsługujące również reCAPTCHA i hCaptcha.
Najważniejsze jest dla mnie, aby rozwiązanie:
- obsługiwało używany typ checkoutu,
- działało przy zakupie jako gość,
- weryfikowało finalne złożenie zamówienia,
- nie dodawało dwóch różnych CAPTCHA jednocześnie,
- działało poprawnie na telefonie.
Szczególnie po przejściu na Checkout Block zawsze sprawdzam, czy używana wtyczka faktycznie obsługuje blokowy formularz.
3. Włącz rate limiting checkoutu
CAPTCHA odpowiada na pytanie „czy zachowanie wygląda jak człowiek?”. Rate limiting odpowiada na inne:
„Dlaczego jeden klient próbuje złożyć
kilkanaście zamówień w kilkadziesiąt sekund?”W nowszym WooCommerce dla Checkout Block i Store API dostępna jest opcjonalna ochrona ograniczająca liczbę prób składania zamówienia.
Szukam jej w:
WooCommerce
→ Ustawienia
→ Zaawansowane
→ Funkcje
Rate limiting Checkout block and Store APIPo włączeniu funkcji dla standardowego przepływu checkoutu limit wynosi maksymalnie kilka prób w określonym oknie czasowym, co bardzo mocno różni się od zachowania automatu wysyłającego żądania jedno za drugim.
Jeżeli sklep nadal korzysta z klasycznego checkoutu, nie zakładam, że samo włączenie tej funkcji ochroni każdy możliwy sposób składania zamówienia.
4. Ogranicz liczbę zamówień z jednego źródła
Bardzo skutecznym sygnałem jest tzw. velocity, czyli liczba prób w określonym czasie.
Normalny klient może:
spróbować płatności
↓
otrzymać błąd
↓
poprawić dane
↓
spróbować ponownieDlatego nie blokuję użytkownika po jednej czy dwóch nieudanych próbach.
Inaczej wygląda sytuacja, gdy ten sam wzorzec generuje:
10 zamówień w minutę
30 prób płatności w kilka minut
50 checkoutów z podobnymi danymiWtedy mam znacznie mocniejszy sygnał nadużycia.
5. Zamiast jednego kryterium stosuj scoring ryzyka
Sam adres IP jest zbyt słabym sygnałem, żeby na jego podstawie automatycznie blokować wszystkie zamówienia.
Kilka osób może przecież korzystać z:
- tej samej sieci firmowej,
- internetu mobilnego,
- współdzielonego NAT,
- VPN,
- infrastruktury operatora internetowego.
Dlatego lepsze rozwiązania antyfraudowe łączą wiele sygnałów:
Ile prób pojawiło się z danego źródła w krótkim czasie.
Powtarzalny e-mail, telefon, adres albo podejrzane kombinacje.
Duża liczba odrzuceń lub kolejnych prób na jednym zamówieniu.
Dzięki temu mogę oznaczyć zamówienie jako ryzykowne albo zatrzymać dopiero wyjątkowo podejrzany ruch, zamiast blokować prawdziwych klientów po jednym kryterium.
6. WAF powinien blokować atak, a nie cały checkout
Jeśli domena korzysta z Cloudflare lub innego WAF, mam dodatkową warstwę ochrony jeszcze zanim żądanie dotrze do PHP i WordPressa.
Mogę tam analizować m.in.:
- nietypowo dużą liczbę żądań,
- znane wzorce ruchu automatycznego,
- wielokrotne próby pod konkretnymi endpointami,
- ruch jednoznacznie oceniony jako złośliwy.
Nie tworzę natomiast reguły:
„każdy ruch do checkout → challenge”jeśli nie mam do tego powodu. Checkout to miejsce, w którym zależy mi na możliwie krótkiej drodze do zakupu.
7. Fałszywe zamówienia kartą mogą być card testingiem
Jeżeli widzę dużą liczbę zamówień z odrzuconymi kartami, traktuję problem poważniej niż zwykły spam.
Atakujący może używać sklepu do testowania, które dane skradzionych kart nadal działają.
Charakterystyczne objawy to:
- wiele płatności na małe kwoty,
- duża liczba odrzuceń,
- kolejne próby w odstępie kilku sekund,
- różne dane karty przy podobnych danych zamówienia,
- nagły wzrost obciążenia operatora płatności.
Wtedy oprócz ochrony WooCommerce sprawdzam również zabezpieczenia samego operatora płatności, jego system fraud detection oraz dostępne mechanizmy dodatkowej autoryzacji.
8. Ogranicz powtarzane nieudane płatności
W niektórych atakach bot nie tworzy za każdym razem nowego zamówienia. Może wielokrotnie ponawiać płatność dla istniejącego zamówienia.
Dlatego dobra ochrona powinna obejmować nie tylko:
Place orderale – zależnie od wykorzystywanych rozszerzeń – również mechanizmy:
Pay for order
Add payment method
Retry paymentJeśli bot ma inną furtkę do testowania płatności, samo zabezpieczenie głównego przycisku checkout może nie rozwiązać całego problemu.
9. Co z fałszywymi zamówieniami za pobraniem?
Tutaj nie ma serwera płatności, który odrzuci nieprawidłowe dane karty. Zamówienie może od razu trafić do realizacji.
Jeśli problem dotyczy głównie pobrania, sprawdzam:
- Turnstile lub CAPTCHA na checkout,
- częstotliwość zamówień,
- powtarzalność telefonu, e-maila i adresu,
- reguły antyfraudowe dla zamówień COD,
- ewentualną weryfikację numeru telefonu przy uporczywych atakach.
Weryfikacja SMS może być skuteczna, ale zwiększa tarcie. Nie wdrażam jej jako pierwszej reakcji, jeżeli problem można rozwiązać mniej uciążliwą warstwą ochrony.
10. Honeypot może zatrzymać najprostsze boty
Honeypot to pole, którego normalny użytkownik nie powinien wypełnić, ale prosty automat może potraktować je jak zwykłe pole formularza.
Jeśli pole zostanie uzupełnione, żądanie można oznaczyć jako podejrzane.
Prawdziwy użytkownik nawet nie wie, że zabezpieczenie istnieje.
Automat analizujący formularz i JavaScript może rozpoznać prostą pułapkę.
Traktuję więc honeypot jako dodatkową lekką warstwę, a nie podstawowe zabezpieczenie dużego sklepu.
11. Waliduj dane, ale nie zamieniaj checkoutu w formularz urzędowy
Botowi łatwiej przesłać:
telefon: 111
e-mail: abc
kod pocztowy: x
imię: qwertyjeśli sklep nie wykonuje żadnej walidacji.
Warto więc sprawdzać format danych, które faktycznie są potrzebne do realizacji zamówienia.
Nie oznacza to jednak, że każde pole musi mieć skomplikowaną regułę.
Za agresywna walidacja potrafi blokować prawdziwe przypadki, np. zagraniczne numery telefonów albo nietypowe adresy.
12. Czy warto wyłączyć zakupy bez rejestracji?
Samo wymaganie konta może zmniejszyć liczbę prostych automatycznych zamówień, ale ma bardzo konkretny koszt UX.
Klient, który chce kupić produkt jeden raz, nagle musi:
założyć konto
↓
ustawić hasło
↓
czasem potwierdzić e-mail
↓
dopiero później złożyć zamówienieNie traktuję więc wyłączenia guest checkout jako domyślnego rozwiązania antybotowego.
Jeśli model biznesowy nie wymaga kont użytkowników, wolę zabezpieczyć sam proces składania zamówienia.
13. Nie blokuj wszystkich Gmaili, VPN-ów i zagranicznych IP
Po serii fałszywych zamówień łatwo przesadzić.
Przykładowo bot używa adresów:
@gmail.comale to nie oznacza, że dobrym rozwiązaniem będzie zablokowanie wszystkich klientów korzystających z Gmaila.
Podobnie z VPN-em. Część normalnych użytkowników korzysta z firmowych sieci, prywatnych VPN-ów albo mechanizmów ukrywających ich prawdziwy adres IP.
Staram się blokować wzorzec nadużycia, a nie jedną cechę, którą może posiadać również dobry klient.
14. Zabezpieczenie checkoutu musi działać na telefonie
To szczególnie ważne przy CAPTCHA i Turnstile.
Po wdrożeniu sprawdzam:
- Android i iPhone,
- popularne przeglądarki,
- zakup jako gość,
- zakup jako zalogowany klient,
- różne metody płatności,
- ponowną próbę po błędzie formularza.
Jeśli prawdziwy klient po błędzie karty wraca do checkoutu i CAPTCHA przestaje działać, zabezpieczenie samo tworzy nowy problem sprzedażowy.
Jak wygląda dobra ochrona WooCommerce bez pogarszania UX?
| Warstwa | Co zatrzymuje? | Wpływ na UX |
|---|---|---|
| Turnstile / CAPTCHA | Automatyczne wysyłanie checkoutu. | Niski przy dobrze dobranym trybie. |
| Rate limiting | Masowe próby w krótkim czasie. | Praktycznie zerowy dla zwykłego klienta. |
| Fraud scoring | Podejrzane kombinacje kilku sygnałów. | Niski przy rozsądnych progach. |
| WAF | Złośliwy ruch jeszcze przed WordPressem. | Niski, jeśli reguły są precyzyjne. |
| SMS / OTP | Uporczywe fałszywe zamówienia. | Wyższy – klient wykonuje dodatkowy krok. |
| Obowiązkowe konto | Część prostych botów. | Wysoki – wydłuża proces zakupowy. |
Jak diagnozuję fałszywe zamówienia krok po kroku?
Analizuję kilka fałszywych zamówień
Porównuję godziny, metody płatności, adresy, e-maile, telefony i powtarzalne cechy.
Ustalam, czy to spam czy card testing
Duża liczba nieudanych płatności wymaga również analizy po stronie operatora płatności.
Dodaję lekką weryfikację bota
W pierwszej kolejności wybieram Turnstile albo podobną ochronę, która nie wymaga od każdego klienta rozwiązywania zagadki.
Ograniczam nietypową liczbę prób
Włączam rate limiting lub reguły velocity dopasowane do normalnego ruchu sklepu.
Analizuję WAF i operatora płatności
Jeśli atak jest agresywny, dokładam ochronę jeszcze przed WooCommerce oraz wykorzystuję narzędzia antyfraudowe bramki.
Testuję prawdziwy zakup
Sprawdzam desktop, telefon, zakupy jako gość, wszystkie ważne metody płatności i ponowienie checkoutu po błędzie.
Czego nie robię przy pierwszej fali fałszywych zamówień?
Kraje, VPN-y, popularne skrzynki e-mail i duże zakresy IP mogą należeć także do klientów.
Bot detection, velocity, WAF i monitoring działają razem, ale są praktycznie niewidoczne dla normalnego użytkownika.
Nie wyłączam też od razu płatności, zakupów bez konta czy zamówień za pobraniem, jeżeli są ważną częścią sprzedaży.
Najpierw sprawdzam, czy mogę zablokować konkretny sposób nadużycia zamiast całego kanału zakupowego.
Boty mogą również przeciążać hosting WooCommerce
Każde utworzenie zamówienia oznacza pracę:
- PHP,
- bazy danych,
- mechanizmu sesji,
- wtyczki płatniczej,
- integracji zewnętrznych,
- systemu wysyłki e-mail.
Jeżeli bot generuje setki takich procesów, problem szybko przestaje dotyczyć wyłącznie bałaganu na liście zamówień.
Sklep może zacząć wolniej odpowiadać również prawdziwym klientom.
Z tego powodu rate limiting i filtrowanie ruchu jeszcze przed WordPressem mają również znaczenie wydajnościowe.
Bezpieczeństwo checkoutu i dobry UX nie muszą się wykluczać
Najlepsze zabezpieczenie to dla mnie takie, którego prawdziwy klient praktycznie nie zauważa.
Użytkownik powinien nadal móc:
dodać produkt
↓
wpisać dane
↓
wybrać dostawę
↓
zapłacić
↓
złożyć zamówieniebez obowiązkowej rejestracji, kilku zagadek i losowych komunikatów „Access denied”.
Dlatego podczas tworzenia i optymalizacji sklepów internetowych WooCommerce patrzę na ochronę checkoutu razem z całym procesem zakupowym. Zabezpieczenie ma usuwać problem z botami, a nie dodawać problem z konwersją.
Moja checklista ochrony WooCommerce przed fałszywymi zamówieniami
- Ustalam, czy problemem jest spam, card testing czy przeciążenie.
- Sprawdzam powtarzalne cechy fałszywych zamówień.
- Zabezpieczam finalne wysłanie checkoutu Turnstile lub CAPTCHA.
- Weryfikuję token ochrony po stronie serwera.
- Włączam rozsądny rate limiting.
- Ograniczam wielokrotne nieudane próby płatności.
- Przy większym sklepie stosuję scoring ryzyka i velocity.
- Sprawdzam WAF i ochronę operatora płatności.
- Nie blokuję szerokich grup klientów jednym prostym kryterium.
- Testuję checkout na komputerze i telefonie.
- Po wdrożeniu obserwuję, czy liczba fałszywych zamówień rzeczywiście spadła.
Boty zasypują sklep fałszywymi zamówieniami?
Mogę przeanalizować wzorzec fałszywych zamówień, checkout, logi, Store API, zabezpieczenia, Cloudflare i konfigurację płatności. Następnie dobiorę ochronę, która ograniczy automatyczne zamówienia bez dokładania niepotrzebnych przeszkód prawdziwym klientom.
Boty i fałszywe zamówienia WooCommerce – najczęstsze pytania
Dlaczego boty składają fałszywe zamówienia w WooCommerce?
Automaty mogą wykorzystywać publicznie dostępny checkout do tworzenia spamu, testowania kart płatniczych albo generowania dużej liczby żądań. Bot nie musi zachowywać się jak normalny użytkownik przeglądający sklep.
Jak zablokować fałszywe zamówienia WooCommerce?
Najczęściej łączę ochronę typu Turnstile lub CAPTCHA z ograniczeniem liczby prób, analizą powtarzalnych zamówień oraz – jeśli jest taka potrzeba – WAF-em i systemem antyfraudowym operatora płatności.
Czy Cloudflare Turnstile działa z WooCommerce?
Tak, można zabezpieczyć nim formularz checkout, korzystając z integracji obsługującej używany typ formularza WooCommerce. Ważne jest również prawidłowe sprawdzanie tokenu po stronie serwera.
Czy trzeba korzystać z Cloudflare CDN, żeby używać Turnstile?
Nie. Turnstile może być używany niezależnie od tego, czy ruch strony jest obsługiwany przez sieć Cloudflare.
Czy WooCommerce ma rate limiting checkoutu?
WooCommerce posiada opcjonalny mechanizm rate limiting dla Checkout Block i Store API. Może ograniczać nadmierną liczbę prób składania zamówienia w krótkim czasie.
Czy wymaganie założenia konta zatrzyma boty?
Może zatrzymać część prostych automatów, ale jednocześnie zwiększa liczbę kroków dla każdego prawdziwego klienta. Dlatego nie traktuję obowiązkowej rejestracji jako pierwszego rozwiązania antybotowego.
Co to jest card testing w WooCommerce?
To próby automatycznego sprawdzania danych kart poprzez wykonywanie kolejnych płatności w sklepie. Charakterystycznym sygnałem jest duża liczba nieudanych transakcji w bardzo krótkim czasie.
Czy warto blokować klientów po adresie IP?
Konkretne źródło potwierdzonego ataku można blokować, ale nie opieram całej ochrony wyłącznie na IP. Adresy mogą być współdzielone, zmienne albo pochodzić z VPN i sieci mobilnych wykorzystywanych przez prawdziwych klientów.
Czy CAPTCHA może obniżyć konwersję sklepu?
Zbyt uciążliwa weryfikacja może wydłużyć checkout. Dlatego preferuję rozwiązania, które dla większości prawdziwych użytkowników działają niewidocznie i wymagają dodatkowej akcji dopiero przy podejrzanym ruchu.

Kamil Sudoł – freelancer WordPress & SEO. Od 2015 roku tworzę i rozwijam strony internetowe oraz sklepy WooCommerce, a także zajmuję się SEO i widocznością firm w Google. Na blogu publikuję praktyczne materiały dotyczące WordPressa, SEO, UX i marketingu internetowego.




















