Chraňte formuláře ve WordPressu pomocí SilentShield
Oficiální plugin „SilentShield – Captcha & Anti-Spam“ vloží skript a ověří každé odeslání na vašem serveru — bez vlastního kódu. Tento návod uvádí jen to, co jsme s pluginem sami vyzkoušeli.
Zobrazit plugin v adresáři WordPressu
Požadavky
- WordPress 5.2 nebo novější a PHP 7.4 nebo novější (podle údajů pluginu v adresáři WordPressu).
- Váš web běží přes https. Bez zabezpečeného kontextu prohlížeč neposkytuje funkce Web Crypto, nevznikne žádný nonce a chráněné formuláře nelze odeslat.
- Účet SilentShield s klíčem pro vaši doménu. Subdomény jako www. nebo staging. jsou zahrnuty.
Které formuláře lze chránit
Ověřeno dne 7. 10. 2026 s pluginem 2.15.14 a WordPressem 7.1.2: člověk projde a je potvrzen na serveru, odeslání bez prohlížeče je odmítnuto.
| Formulář | Ověřená verze | Stav |
|---|---|---|
| Contact Form 7 | 6.2 | Funguje |
| Fluent Forms | 6.2.15 | Funguje |
| Komentáře WordPressu | 7.1.2 | Funguje |
| Přihlášení do WordPressu | 7.1.2 | Funguje |
| Registrace ve WordPressu | 7.1.2 | Funguje |
| Pokladna WooCommerce (klasická) | 11.1.2 | Funguje |
| WPForms | 2.0.2.2 | Funguje |
| Pokladna WooCommerce (bloková pokladna) | 11.1.2 | Funguje |
| Elementor Forms | 4.3.4 (Pro 4.2.1) | Funguje |
| Avada Forms | 7.11.7 | Funguje |
Instalace
- Ve WordPressu otevřete „Pluginy → Instalace pluginů“ a vyhledejte „SilentShield“.
- Nainstalujte a aktivujte „SilentShield – Captcha & Anti-Spam for WordPress“.
- V menu se objeví položka „SilentShield“.
Zadejte klíč a zapněte formuláře
- V dashboardu SilentShield vytvořte klíč pro vaši doménu a zkopírujte ho.
- Ve WordPressu otevřete „SilentShield → API / SilentShield“, vložte klíč do pole „API Key“ a klikněte na „Validate“.
- Zapněte „Activate API“ a klikněte na „Save“.
- Otevřete „SilentShield → Forms“ a zapněte ochranu pro každý plugin formulářů, který je v tabulce výše uveden jako „Funguje“.
Plugin používá klíč webu jak v prohlížeči, tak pro ověření na vašem serveru. Serverový klíč k tomu není potřeba.
Serverový klíč pro plugin f12-security
Plugin f12-security může volitelně vyměňovat s SilentShield upozornění na boty: hlásí otisky známých botů a stahuje podepsaný seznam pro Váš účet. Tato volání provádí Váš server, nikoli prohlížeč Vašich návštěvníků. K tomu plugin potřebuje serverový klíč Vaší domény — nikoli běžný klíč webu, který je vidět ve zdrojovém kódu Vašich stránek.
- V dashboardu SilentShield otevřete „API klíče“ a klíč Vaší domény.
- Přejděte na stránku „Zabezpečení“ a v sekci „Serverový klíč“ klikněte na „Vygenerovat serverový klíč“.
- Hodnotu ihned zkopírujte. Zobrazí se pouze jednou a žádnou kopii neuchováváme.
- Vložte ji do f12-security do pole označeného jako serverový klíč a uložte.
Serverový klíč patří pouze do nastavení Vašeho serveru, nikdy do stránky ani skriptu určeného návštěvníkům. Pokud jej ztratíte, vygenerujte v dashboardu nový; starý tím přestane platit.
Ověřte funkčnost
Skutečné odeslání
Otevřete stránku s formulářem v anonymním okně, vyplňte ho ručně a odešlete. Uvidíte běžné potvrzení vašeho formuláře a v dashboardu SilentShield se odeslání objeví s výsledkem hodnocení.
Odmítnuté odeslání
Odešlete totéž bez prohlížeče, například komentář přes curl k příspěvku s otevřenými komentáři. Nahraďte adresu a ID příspěvku:
curl -i -X POST https://example.com/wp-comments-post.php \
-d "comment_post_ID=1&author=Test&[email protected]&comment=Test"Očekávejte odmítnutí se zprávou pluginu, na anglickojazyčném webu „Captcha not correct: Behavior check“. U Contact Form 7 formulář zobrazí „Behavior check“.
Řešení problémů
- Po kliknutí na „Odeslat“ se nic nestane.
- Běží stránka přes http místo https? Konzole prohlížeče pak zobrazí varování „[SilentShield] Web Crypto fehlt im Worker …“ (zpráva je v němčině). Poskytujte stránku přes https.
- Contact Form 7 hlásí „There was an error trying to send your message“.
- Ověření prošlo; selhalo odeslání e-mailu z WordPressu. Zkontrolujte nastavení pošty (například SMTP), ne ochranu proti botům.
- Skuteční návštěvníci dostávají „Behavior check“.
- Nejčastější příčinou je optimalizační plugin, který odkládá nebo slučuje JavaScript — viz poznámka níže. Zkontrolujte také, zda klíč patří k doméně stránky.
- Formulář WPForms se neodešle nebo bloková pokladna odmítá každou objednávku.
- Aktualizujte plugin SilentShield na verzi 2.15.14 nebo novější. Oba problémy jsme naměřili u verze 2.15.12; u verze 2.15.14 se již neobjevují.
- Chcete vidět, co skript dělá.
- Připojte ?silentshield-debug k adrese stránky. Konzole prohlížeče pak zobrazí každý krok ověření.
Vyjměte SilentShield z optimalizátorů JavaScriptu
Cachovací a zrychlovací pluginy (WP Rocket, Perfmatters, LiteSpeed, Autoptimize a další) umí odkládat JavaScript až na první interakci návštěvníka a slučovat soubory do jednoho balíku. Obojí rozbíjí SilentShield: widget se pak spustí až po kliknutí, chybí signály chování od načtení stránky (pohyb myši, rytmus psaní, časování) a ochrana pracuje se zlomkem toho, co potřebuje. Skenování formulářů neběží vůbec. Přidejte tyto vzory do seznamů výjimek svého optimalizátoru — pro „odložit JavaScript“ i „sloučit JavaScript“:
client.js
behavior-captcha
silentshieldOvěření: otevřete stránku s formulářem a spusťte performance.getEntriesByType("resource").map(r=>r.name).filter(n=>n.includes("client.js")).join() v konzoli prohlížeče BEZ předchozího kliknutí. Prázdný výsledek znamená, že se SilentShield ještě nenačetl — chybí výjimka.
Omezení
- Chráněny jsou jen pluginy formulářů, které zapnete v „SilentShield → Forms“.
- Uvádíme pouze ověřené verze. Plugin rozpozná i další pluginy formulářů; zda fungují se SilentShield, jsme neověřovali.
- Plugin má vlastní kontroly (například honeypot a měření času) a zobrazuje pro ně vlastní zprávy, například „JavaScript check“.
- SilentShield chrání formuláře před boty. Nenahrazuje firewall webových aplikací ani ochranu proti DDoS.
Provoz
- Plugin aktualizujete přes WordPress jako každý jiný. Skript v prohlížeči přichází vždy od nás v aktuální verzi.
- Každé odeslání se do kvóty počítá dvakrát: jednou za hlášení z prohlížeče, jednou za ověření na vašem serveru.
- Výsledky hodnocení a odmítnutá odeslání vidíte v dashboardu SilentShield.
Bez pluginu: vlastní integrace
Pro vlastní formuláře nebo bez pluginu vložte skript sami a ověřujte každé odeslání na vašem serveru. Bez tohoto ověření skript nechrání: přímo odeslaný požadavek nezastaví.
1. Přidejte skript
Přidejte tento kód do souboru functions.php vaší šablony nebo použijte plugin jako „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. Ověření na straně serveru
Přidejte ověření nonce do handleru formuláře. Pro vlastní formuláře přidejte toto do své zpracovávací funkce:
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));
}
}Uložení API klíče
Pro bezpečnost přidejte svůj API klíč do wp-config.php:
// wp-config.php
define('SILENTSHIELD_API_KEY', 'your-api-key-here');Sledování AI agentů
Kromě ochrany formulářů může WordPress také zaznamenávat, které AI crawlery (GPTBot, ClaudeBot, PerplexityBot, …) čtou váš web — dnes pomocí malého souboru must-use pluginu; nadcházející aktualizace pluginu to přinese vestavěné.