SilentShield

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.

FormularzSprawdzona wersjaStatus
Contact Form 76.2Działa
Fluent Forms6.2.15Działa
Komentarze WordPressa7.1.2Działa
Logowanie do WordPressa7.1.2Działa
Rejestracja w WordPressie7.1.2Działa
Kasa WooCommerce (klasyczna)11.1.2Działa
WPForms2.0.2.2Działa
Kasa WooCommerce (kasa blokowa)11.1.2Działa
Elementor Forms4.3.4 (Pro 4.2.1)Działa
Avada Forms7.11.7Działa

Instalacja

  1. W WordPressie proszę otworzyć „Wtyczki → Dodaj nową” i wyszukać „SilentShield”.
  2. Proszę zainstalować i włączyć „SilentShield – Captcha & Anti-Spam for WordPress”.
  3. W menu pojawi się pozycja „SilentShield”.

Wpisanie klucza i włączenie formularzy

  1. Proszę utworzyć w panelu SilentShield klucz dla swojej domeny i go skopiować.
  2. W WordPressie proszę otworzyć „SilentShield → API / SilentShield”, wkleić klucz w polu „API Key” i kliknąć „Validate”.
  3. Proszę włączyć „Activate API” i kliknąć „Save”.
  4. 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:

Terminalbash
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”:

Wzorce wykluczeńtext
client.js
behavior-captcha
silentshield

Sprawdzenie: 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.

Zobacz ceny i limity

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.phpphp
// 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:

PHPphp
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.phpphp
// 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.

Więcej: obserwacja agentów AI →