Chroń formularze WordPressa za pomocą SilentShield
Oficjalna wtyczka „SilentShield – Captcha & Anti-Spam” osadza skrypt i weryfikuje każde wysłanie na Państwa serwerze — bez własnego kodu. Ten przewodnik podaje tylko to, co sami sprawdziliśmy z wtyczką.
Zobacz wtyczkę w katalogu WordPressa
Wymagania
- WordPress 5.2 lub nowszy oraz PHP 7.4 lub nowszy (według danych wtyczki w katalogu WordPressa).
- Państwa strona działa przez https. Bez bezpiecznego kontekstu przeglądarka nie udostępnia funkcji Web Crypto, nie powstaje nonce, a chronionych formularzy nie da się wysłać.
- Konto SilentShield z kluczem dla Państwa domeny. Subdomeny takie jak www. czy staging. są objęte.
Które formularze można chronić
Sprawdzono 7.10.2026 z wtyczką 2.15.14 i WordPressem 7.1.2: człowiek przechodzi i zostaje potwierdzony na serwerze, wysłanie bez przeglądarki zostaje odrzucone.
| Formularz | Sprawdzona wersja | Status |
|---|---|---|
| Contact Form 7 | 6.2 | Działa |
| Fluent Forms | 6.2.15 | Działa |
| Komentarze WordPressa | 7.1.2 | Działa |
| Logowanie do WordPressa | 7.1.2 | Działa |
| Rejestracja w WordPressie | 7.1.2 | Działa |
| Kasa WooCommerce (klasyczna) | 11.1.2 | Działa |
| WPForms | 2.0.2.2 | Działa |
| Kasa WooCommerce (kasa blokowa) | 11.1.2 | Działa |
| Elementor Forms | 4.3.4 (Pro 4.2.1) | Działa |
| Avada Forms | 7.11.7 | Działa |
Instalacja
- W WordPressie proszę otworzyć „Wtyczki → Dodaj nową” i wyszukać „SilentShield”.
- Proszę zainstalować i włączyć „SilentShield – Captcha & Anti-Spam for WordPress”.
- W menu pojawi się pozycja „SilentShield”.
Wpisanie klucza i włączenie formularzy
- Proszę utworzyć w panelu SilentShield klucz dla swojej domeny i go skopiować.
- W WordPressie proszę otworzyć „SilentShield → API / SilentShield”, wkleić klucz w polu „API Key” i kliknąć „Validate”.
- Proszę włączyć „Activate API” i kliknąć „Save”.
- Proszę otworzyć „SilentShield → Forms” i włączyć ochronę dla każdej wtyczki formularzy, która w tabeli powyżej ma status „Działa”.
Wtyczka używa klucza witryny zarówno w przeglądarce, jak i do weryfikacji na Państwa serwerze. Klucz serwerowy nie jest do tego potrzebny.
Sprawdzenie działania
Prawdziwe wysłanie
Proszę otworzyć stronę z formularzem w oknie prywatnym, wypełnić go ręcznie i wysłać. Zobaczą Państwo zwykłe potwierdzenie formularza, a w panelu SilentShield pojawi się wysłanie wraz z werdyktem.
Odrzucone wysłanie
Proszę wysłać to samo bez przeglądarki, na przykład komentarz przez curl do wpisu z otwartymi komentarzami. Proszę zastąpić adres i ID wpisu:
curl -i -X POST https://example.com/wp-comments-post.php \
-d "comment_post_ID=1&author=Test&[email protected]&comment=Test"Należy oczekiwać odrzucenia z komunikatem wtyczki, na stronie anglojęzycznej „Captcha not correct: Behavior check”. W Contact Form 7 formularz wyświetla „Behavior check”.
Rozwiązywanie problemów
- Po kliknięciu „Wyślij” nic się nie dzieje.
- Czy strona jest serwowana przez http zamiast https? Konsola przeglądarki pokazuje wtedy ostrzeżenie „[SilentShield] Web Crypto fehlt im Worker …” (komunikat jest po niemiecku). Proszę serwować stronę przez https.
- Contact Form 7 zgłasza „There was an error trying to send your message”.
- Weryfikacja przeszła pomyślnie; nie powiodło się wysłanie wiadomości e-mail przez WordPressa. Proszę sprawdzić ustawienia poczty (na przykład SMTP), a nie ochronę przed botami.
- Prawdziwi odwiedzający otrzymują „Behavior check”.
- Najczęstszą przyczyną jest wtyczka optymalizacyjna, która opóźnia lub łączy JavaScript — zob. uwagę poniżej. Proszę też sprawdzić, czy klucz należy do domeny strony.
- Formularz WPForms nie jest wysyłany lub kasa blokowa odrzuca każde zamówienie.
- Proszę zaktualizować wtyczkę SilentShield do wersji 2.15.14 lub nowszej. Oba problemy zmierzyliśmy w wersji 2.15.12; w wersji 2.15.14 już nie występują.
- Chcą Państwo zobaczyć, co robi skrypt.
- Proszę dopisać ?silentshield-debug do adresu strony. Konsola przeglądarki pokaże wtedy każdy krok weryfikacji.
Wykluczenie SilentShield z optymalizatorów JavaScript
Wtyczki cache i przyspieszające (WP Rocket, Perfmatters, LiteSpeed, Autoptimize i inne) potrafią opóźniać JavaScript do pierwszej interakcji odwiedzającego i łączyć pliki w jedną paczkę. Oba psują SilentShield: widżet startuje dopiero po kliknięciu, brakuje sygnałów behawioralnych od załadowania strony (ruch myszy, rytm pisania, czasy), a ochrona pracuje na ułamku tego, czego potrzebuje. Skanowanie formularzy nie działa wcale. Te wzorce należy dodać do list wykluczeń swojego optymalizatora — zarówno dla „opóźniania JavaScript”, jak i „łączenia JavaScript”:
client.js
behavior-captcha
silentshieldSprawdzenie: otworzyć stronę z formularzem i wykonać performance.getEntriesByType("resource").map(r=>r.name).filter(n=>n.includes("client.js")).join() w konsoli przeglądarki BEZ wcześniejszego klikania. Pusty wynik oznacza, że SilentShield jeszcze się nie załadował — brakuje wykluczenia.
Ograniczenia
- Chronione są tylko wtyczki formularzy, które włączą Państwo w „SilentShield → Forms”.
- Podajemy wyłącznie sprawdzone wersje. Wtyczka rozpoznaje także inne wtyczki formularzy; czy działają z SilentShield, nie sprawdzaliśmy.
- Wtyczka ma własne mechanizmy kontroli (np. honeypot i pomiar czasu) i wyświetla dla nich własne komunikaty, takie jak „JavaScript check”.
- SilentShield chroni formularze przed botami. Nie zastępuje zapory aplikacji internetowych (WAF) ani ochrony przed DDoS.
Eksploatacja
- Wtyczkę aktualizują Państwo przez WordPressa jak każdą inną. Skrypt w przeglądarce zawsze pochodzi od nas w aktualnej wersji.
- Każde wysłanie liczy się do limitu podwójnie: raz za zgłoszenie z przeglądarki, raz za weryfikację na Państwa serwerze.
- Werdykty i odrzucone wysłania widzą Państwo w panelu SilentShield.
Bez wtyczki: własna integracja
W przypadku własnych formularzy lub bez wtyczki proszę samodzielnie osadzić skrypt i weryfikować każde wysłanie na swoim serwerze. Bez tej weryfikacji skrypt nie chroni: nie zatrzymuje żądania wysłanego bezpośrednio.
1. Dodanie skryptu
Ten kod należy dodać do pliku functions.php swojego motywu lub użyć wtyczki takiej jak „Insert Headers and Footers":
// functions.php
function silentshield_enqueue() {
wp_enqueue_script(
'silentshield',
'https://api.silentshield.io/client.js?k=YOUR_API_KEY',
array(),
null,
true
);
}
add_action('wp_enqueue_scripts', 'silentshield_enqueue');2. Weryfikacja po stronie serwera
Weryfikację nonce należy dodać do obsługi formularza. W przypadku formularzy niestandardowych trzeba ją dodać do funkcji przetwarzającej:
function verify_silentshield_nonce() {
$nonce = sanitize_text_field($_POST['behavior_nonce'] ?? '');
if (empty($nonce)) {
wp_die('Missing verification', 'Error', array('response' => 422));
}
$response = wp_remote_post('https://api.silentshield.io/api/v1/captcha/verify-nonce', array(
'headers' => array(
'Content-Type' => 'application/json',
'X-Api-Key' => SILENTSHIELD_API_KEY,
),
'body' => wp_json_encode(array('nonce' => $nonce)),
'timeout' => 5,
));
if (is_wp_error($response)) {
return; // fail open
}
$body = json_decode(wp_remote_retrieve_body($response), true);
if (($body['ok'] ?? false) !== true || ($body['verdict'] ?? '') !== 'human') {
wp_die('Bot detected', 'Forbidden', array('response' => 403));
}
}Przechowywanie klucza API
W celu zwiększenia bezpieczeństwa klucz API należy dodać do wp-config.php:
// wp-config.php
define('SILENTSHIELD_API_KEY', 'your-api-key-here');Obserwacja agentów AI
Poza ochroną formularzy WordPress może też rejestrować, które crawlery AI (GPTBot, ClaudeBot, PerplexityBot, …) czytają Państwa witrynę — dziś przez mały plik must-use plugin; nadchodząca aktualizacja wtyczki wbuduje to na stałe.