Spam w Contact Form 7 najłatwiej ograniczyć przez połączenie kilku warstw ochrony: reCAPTCHA v3, pola Honeypot i filtrowania treści przez Akismet. Żadna metoda nie zatrzyma wszystkich wiadomości, dlatego po każdej zmianie trzeba przetestować formularz jako niezalogowany użytkownik.
Dlaczego Contact Form 7 otrzymuje spam?
Boty automatycznie skanują strony WordPress w poszukiwaniu formularzy, a następnie wysyłają przez nie reklamy, podejrzane linki lub treści prowadzące do szkodliwych witryn. Contact Form 7 jest popularną wtyczką, więc często trafia na listę celów takich skryptów.
Nie musi to oznaczać, że ktoś obrał za cel konkretną stronę. Zabezpieczenia mają utrudnić automatom wysyłanie wiadomości, ograniczyć liczbę prób i odfiltrować treści, które mimo wszystko przejdą przez formularz.
Typowe sygnały ataku to:
- nagły wzrost liczby wiadomości z podobną treścią,
- wiadomości zawierające wiele linków lub powtarzalne frazy reklamowe,
- zgłoszenia wysyłane w krótkich odstępach czasu,
- treści niezwiązane z tematyką strony, często dotyczące kasyn, inwestycji lub stron dla dorosłych.
Jaką metodę wybrać?
Najlepszy wybór zależy od natężenia spamu, poziomu technicznego i tego, jak duże znaczenie ma dla Ciebie płynne przejście przez formularz.
| Metoda | Skuteczność | Wpływ na UX | Trudność wdrożenia |
|---|---|---|---|
| reCAPTCHA v3 | Wysoka jako pierwsza warstwa, ale niepełna | Zwykle niewidoczna dla użytkownika | Średnia, wymaga kluczy API |
| Honeypot | Dobra przeciw prostym botom | Brak dodatkowych czynności | Niska |
| Akismet | Dobra przy filtrowaniu treści | Brak CAPTCHA | Średnia, wymaga konfiguracji |
| Filtrowanie serwerowe | Wysoka przy dużej skali ataku | Możliwe fałszywe blokady | Wysoka |
Jak wdrożyć ochronę w Contact Form 7?
reCAPTCHA v3
reCAPTCHA v3 analizuje zachowanie użytkownika w tle i nie wymaga zaznaczania pola ani rozwiązywania zagadek. To odróżnia ją od reCAPTCHA v2, która może wyświetlać test „Nie jestem robotem” lub zadanie obrazkowe. Wersja v3 zwykle mniej ingeruje w obsługę formularza, ale wymaga konfiguracji po stronie Google i może gorzej działać dla osób z wyłączonym JavaScriptem.
Contact Form 7 obsługuje reCAPTCHA v3 przez własną integrację. Konfiguracja wygląda następująco:
- Otwórz panel administracyjny reCAPTCHA Google i zarejestruj domenę swojej witryny.
- Wybierz reCAPTCHA v3, a następnie wygeneruj klucz witryny oraz klucz tajny.
- W WordPressie przejdź do sekcji Kontakt → Integracja i otwórz ustawienia reCAPTCHA.
- Wklej oba klucze w odpowiednie pola i zapisz konfigurację.
- Wyślij wiadomość testową z formularza działającego w trybie publicznym.
Nie publikuj klucza tajnego w kodzie strony ani w repozytorium. Przechowuj go wyłącznie w ustawieniach serwera lub panelu administracyjnym. Po zmianie domeny, migracji witryny albo zmianie konfiguracji sprawdź, czy klucze nadal są przypisane do właściwego adresu.
Honeypot
Honeypot dodaje do formularza ukryte pole. Człowiek go nie widzi i nie wypełnia, natomiast prosty bot może uzupełnić wszystkie dostępne pola. Wysłanie wartości w tym polu pozwala odrzucić wiadomość. Metoda nie dodaje użytkownikowi żadnego zadania, dlatego dobrze uzupełnia reCAPTCHA v3.
- Zainstaluj i aktywuj rozszerzenie Honeypot przeznaczone do Contact Form 7.
- Otwórz formularz w menu Kontakt i użyj znacznika dodawanego przez wtyczkę.
- Umieść wygenerowane pole w formularzu, najlepiej bez zmieniania jego ukrywania za pomocą własnych stylów.
- Zapisz formularz i sprawdź wysyłkę na komputerze oraz telefonie.
- Obserwuj, czy prawidłowe wiadomości nie są odrzucane.
Honeypot nie zatrzyma bardziej zaawansowanych botów, które rozpoznają ukryte pola. Jego zaletą jest prostota i brak dodatkowego tarcia dla prawdziwych osób.
Akismet
Akismet ocenia treść zgłoszenia i może oznaczyć wiadomość jako spam. W Contact Form 7 należy opisać pola odpowiednimi znacznikami, aby filtr otrzymał informacje potrzebne do analizy.
- Zainstaluj i aktywuj Akismet, a następnie skonfiguruj wymagany klucz usługi.
- Otwórz formularz Contact Form 7 i dodaj do pola imienia znacznik
akismet:author. - Do pola adresu e-mail dodaj znacznik
akismet:author_email. - Zapisz formularz i wyślij kilka prawidłowych wiadomości testowych.
- Regularnie sprawdzaj folder spamu, ponieważ filtr może czasem błędnie zakwalifikować poprawne zgłoszenie.
Przy większej liczbie formularzy można rozważyć połączenie Akismet z Flamingo, które zapisuje zgłoszenia w bazie WordPress. Ułatwia to kontrolę błędnie odrzuconych wiadomości, ale przechowywanie danych trzeba dostosować do zasad RODO i własnej polityki prywatności.
Warstwowa konfiguracja zwykle wygląda tak:
- reCAPTCHA v3 ogranicza automatyczne wysyłanie formularza,
- Honeypot wyłapuje proste skrypty wypełniające każde pole,
- Akismet analizuje treść wiadomości,
- Flamingo może pomóc zweryfikować, czy filtr nie odrzuca prawidłowych zgłoszeń.
Co zrobić, gdy podstawowe metody nie wystarczają?
Jeżeli spam nadal zalewa skrzynkę, skontaktuj się z administratorem hostingu. Możliwe rozwiązania obejmują reguły mod_security na serwerach Apache, ograniczanie podejrzanych adresów IP oraz filtrowanie poczty na poziomie SMTP.
Te ustawienia mogą chronić wiele formularzy jednocześnie, ale źle przygotowana reguła może zablokować prawdziwych klientów. Nie wprowadzaj agresywnego filtrowania bez logów i możliwości cofnięcia zmiany.
Kontrola po wdrożeniu
Po każdej zmianie sprawdź formularz z perspektywy osoby, która nie jest zalogowana do WordPressa:
- Otwórz stronę w trybie prywatnym albo w innej przeglądarce.
- Wyślij wiadomość z poprawnymi danymi jako gość.
- Sprawdź, czy e-mail dociera do właściwej skrzynki.
- Zweryfikuj działanie na telefonie i komputerze.
- Upewnij się, że formularz nie wymaga zbędnych czynności od prawdziwego użytkownika.
- Sprawdź komunikaty błędów i logi, jeśli wiadomość nie została dostarczona.
Najrozsądniejszy punkt wyjścia to reCAPTCHA v3 połączona z Honeypotem. Gdy spam zawiera powtarzalne lub podejrzane treści, dołącz Akismet. Taki układ ogranicza boty bez zmuszania większości użytkowników do rozwiązywania CAPTCHA, ale nadal wymaga okresowego testowania i kontroli fałszywych blokad.