Skydda WordPress-formulär med SilentShield
Det officiella tillägget ”SilentShield – Captcha & Anti-Spam” lägger in skriptet och kontrollerar varje inskickning på din server — utan egen kod. Den här guiden tar bara upp det vi själva har testat med tillägget.
Visa tillägget i WordPress-katalogen
Krav
- WordPress 5.2 eller senare och PHP 7.4 eller senare (enligt tilläggets uppgifter i WordPress-katalogen).
- Din webbplats körs över https. Utan en säker kontext tillhandahåller webbläsaren inga Web Crypto-funktioner, ingen nonce skapas och skyddade formulär kan inte skickas.
- Ett SilentShield-konto med en nyckel för din domän. Underdomäner som www. eller staging. ingår.
Vilka formulär som kan skyddas
Testat 2026-10-07 med tillägg 2.15.14 och WordPress 7.1.2: en människa kommer igenom och bekräftas på servern, en inskickning utan webbläsare avvisas.
| Formulär | Testad version | Status |
|---|---|---|
| Contact Form 7 | 6.2 | Fungerar |
| Fluent Forms | 6.2.15 | Fungerar |
| WordPress-kommentarer | 7.1.2 | Fungerar |
| WordPress-inloggning | 7.1.2 | Fungerar |
| WordPress-registrering | 7.1.2 | Fungerar |
| WooCommerce-kassa (klassisk) | 11.1.2 | Fungerar |
| WPForms | 2.0.2.2 | Fungerar |
| WooCommerce-kassa (blockkassa) | 11.1.2 | Fungerar |
| Elementor Forms | 4.3.4 (Pro 4.2.1) | Fungerar |
| Avada Forms | 7.11.7 | Fungerar |
Installation
- Öppna ”Tillägg → Lägg till nytt” i WordPress och sök efter ”SilentShield”.
- Installera och aktivera ”SilentShield – Captcha & Anti-Spam for WordPress”.
- Menyn har nu ett alternativ ”SilentShield”.
Ange nyckeln och slå på formulär
- Skapa en nyckel för din domän i SilentShield-instrumentpanelen och kopiera den.
- Öppna ”SilentShield → API / SilentShield” i WordPress, klistra in nyckeln under ”API Key” och klicka på ”Validate”.
- Slå på ”Activate API” och klicka på ”Save”.
- Öppna ”SilentShield → Forms” och slå på skyddet för varje formulärtillägg som står som ”Fungerar” i tabellen ovan.
Tillägget använder webbplatsnyckeln både i webbläsaren och för kontrollen på din server. Ingen servernyckel behövs för detta.
Servernyckel för pluginet f12-security
Pluginet f12-security kan som tillval utbyta tips om bottar med SilentShield: det rapporterar fingeravtryck från kända bottar och hämtar en signerad lista för ditt konto. Dessa anrop görs av din server, inte av besökarnas webbläsare. För detta behöver pluginet din domäns servernyckel, inte den vanliga webbplatsnyckeln som finns i källkoden på dina sidor.
- Öppna ”API-nycklar” i SilentShield-panelen och välj nyckeln för din domän.
- Gå till sidan ”Säkerhet” och klicka på ”Skapa servernyckel” i avsnittet ”Servernyckel”.
- Kopiera värdet direkt. Det visas bara en gång och vi sparar ingen kopia.
- Ange det i f12-security i fältet som är märkt servernyckel och spara.
Servernyckeln hör bara hemma i inställningarna på din server, aldrig på en sida eller i ett skript som levereras till besökare. Om du har tappat bort den skapar du en ny i panelen; den gamla slutar då att gälla.
Kontrollera att det fungerar
En äkta inskickning
Öppna sidan med formuläret i ett privat fönster, fyll i det för hand och skicka det. Du ser formulärets vanliga bekräftelse, och inskickningen visas med sin bedömning i SilentShield-instrumentpanelen.
En avvisad inskickning
Skicka samma sak utan webbläsare, till exempel en kommentar via curl till ett inlägg med öppna kommentarer. Byt ut adressen och inläggets ID:
curl -i -X POST https://example.com/wp-comments-post.php \
-d "comment_post_ID=1&author=Test&[email protected]&comment=Test"Förvänta dig ett avvisande med tilläggets meddelande, på en engelskspråkig webbplats ”Captcha not correct: Behavior check”. Med Contact Form 7 visar formuläret ”Behavior check”.
Felsökning
- Ingenting händer när du klickar på ”Skicka”.
- Levereras sidan över http i stället för https? Då visar webbläsarkonsolen varningen ”[SilentShield] Web Crypto fehlt im Worker …” (meddelandet är på tyska). Leverera sidan över https.
- Contact Form 7 rapporterar ”There was an error trying to send your message”.
- Kontrollen har godkänts; det som misslyckades är WordPress utskick av e-posten. Kontrollera e-postinställningarna (till exempel SMTP), inte botskyddet.
- Riktiga besökare får ”Behavior check”.
- Den vanligaste orsaken är ett optimeringstillägg som fördröjer eller slår ihop JavaScript — se anmärkningen nedan. Kontrollera också att nyckeln hör till sidans domän.
- Ett WPForms-formulär skickas inte, eller blockkassan avvisar varje beställning.
- Uppdatera SilentShield-tillägget till version 2.15.14 eller senare. Vi mätte båda problemen med version 2.15.12; med 2.15.14 uppstår de inte längre.
- Du vill se vad skriptet gör.
- Lägg till ?silentshield-debug i sidans adress. Webbläsarkonsolen visar då varje steg i kontrollen.
Undanta SilentShield från JavaScript-optimerare
Cache- och prestandaplugin (WP Rocket, Perfmatters, LiteSpeed, Autoptimize med flera) kan fördröja JavaScript till besökarens första interaktion och slå ihop filer till ett paket. Båda bryter SilentShield: widgeten startar först vid ett klick, beteendesignalerna från sidladdningen (musrörelse, skrivrytm, tidsförlopp) saknas, och skyddet arbetar med en bråkdel av vad det behöver. Formulärskanningar körs inte alls. Lägg till dessa mönster i optimerarens undantagslistor — både för ”fördröj JavaScript” och ”kombinera JavaScript”:
client.js
behavior-captcha
silentshieldKontroll: öppna en sida med formulär och kör performance.getEntriesByType("resource").map(r=>r.name).filter(n=>n.includes("client.js")).join() i webbläsarkonsolen UTAN att klicka först. Ett tomt resultat betyder att SilentShield inte har laddats än — då saknas ett undantag.
Begränsningar
- Bara de formulärtillägg som du slår på under ”SilentShield → Forms” är skyddade.
- Vi anger bara testade versioner. Tillägget känner igen fler formulärtillägg; om de fungerar med SilentShield har vi inte testat.
- Tillägget har egna kontroller (som honeypot och tidsmätning) och visar egna meddelanden för dem, till exempel ”JavaScript check”.
- SilentShield skyddar formulär mot botar. Det ersätter inte en brandvägg för webbapplikationer eller DDoS-skydd.
Drift
- Du uppdaterar tillägget via WordPress som vilket annat tillägg som helst. Skriptet i webbläsaren kommer alltid från oss i aktuell version.
- Varje inskickning räknas två gånger mot kvoten: en gång för rapporten från webbläsaren och en gång för kontrollen på din server.
- Du ser bedömningar och avvisade inskickningar i SilentShield-instrumentpanelen.
Utan tillägget: egen integration
För egna formulär, eller utan tillägget, lägger du själv in skriptet och kontrollerar varje inskickning på din server. Utan den kontrollen skyddar skriptet inte: det stoppar inte en förfrågan som skickas direkt.
1. Lägg till scriptet
Lägg till den här koden i ditt temas functions.php eller använd ett plugin som '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. Verifiering på serversidan
Lägg till nonce-verifiering i din formulärhanterare. För anpassade formulär, lägg till detta i din bearbetningsfunktion:
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));
}
}Spara API-nyckeln
Lägg till din API-nyckel i wp-config.php för ökad säkerhet:
// wp-config.php
define('SILENTSHIELD_API_KEY', 'your-api-key-here');Observera AI-agenter
Utöver formulärskyddet kan WordPress också registrera vilka AI-crawlers (GPTBot, ClaudeBot, PerplexityBot, …) som läser din webbplats — idag via en liten must-use-pluginfil; en kommande pluginuppdatering bygger in detta.