Beskyt WordPress-formularer med SilentShield
Det officielle plugin »SilentShield – Captcha & Anti-Spam« indsætter scriptet og kontrollerer hver indsendelse på din server — uden din egen kode. Denne vejledning nævner kun det, vi selv har testet med pluginnet.
Se pluginnet i WordPress-biblioteket
Krav
- WordPress 5.2 eller nyere og PHP 7.4 eller nyere (som angivet af pluginnet i WordPress-biblioteket).
- Dit website kører over https. Uden en sikker kontekst stiller browseren ingen Web Crypto-funktioner til rådighed, der oprettes ingen nonce, og beskyttede formularer kan ikke indsendes.
- En SilentShield-konto med en nøgle til dit domæne. Underdomæner som www. eller staging. er inkluderet.
Hvilke formularer kan beskyttes
Testet den 7.10.2026 med plugin 2.15.14 og WordPress 7.1.2: et menneske kommer igennem og bekræftes på serveren, en indsendelse uden browser afvises.
| Formular | Testet version | Status |
|---|---|---|
| Contact Form 7 | 6.2 | Virker |
| Fluent Forms | 6.2.15 | Virker |
| WordPress-kommentarer | 7.1.2 | Virker |
| WordPress-login | 7.1.2 | Virker |
| WordPress-registrering | 7.1.2 | Virker |
| WooCommerce-kasse (klassisk) | 11.1.2 | Virker |
| WPForms | 2.0.2.2 | Virker |
| WooCommerce-kasse (blok-checkout) | 11.1.2 | Virker |
| Elementor Forms | 4.3.4 (Pro 4.2.1) | Virker |
| Avada Forms | 7.11.7 | Virker |
Installation
- Åbn »Plugins → Tilføj nyt« i WordPress, og søg efter »SilentShield«.
- Installer og aktivér »SilentShield – Captcha & Anti-Spam for WordPress«.
- Menuen har nu et punkt »SilentShield«.
Indtast nøglen, og slå formularer til
- Opret en nøgle til dit domæne i SilentShield-dashboardet, og kopiér den.
- Åbn »SilentShield → API / SilentShield« i WordPress, indsæt nøglen under »API Key«, og klik på »Validate«.
- Slå »Activate API« til, og klik på »Save«.
- Åbn »SilentShield → Forms«, og slå beskyttelsen til for hvert formular-plugin, der står som »Virker« i tabellen ovenfor.
Pluginnet bruger webstedsnøglen både i browseren og til kontrollen på din server. Der kræves ingen servernøgle til dette.
Kontrollér, at det virker
En ægte indsendelse
Åbn siden med formularen i et privat vindue, udfyld den manuelt, og send den. Du ser formularens normale bekræftelse, og indsendelsen vises med sin vurdering i SilentShield-dashboardet.
En afvist indsendelse
Send det samme uden browser, for eksempel en kommentar via curl til et indlæg med åbne kommentarer. Erstat adressen og indlæggets ID:
curl -i -X POST https://example.com/wp-comments-post.php \
-d "comment_post_ID=1&author=Test&[email protected]&comment=Test"Forvent en afvisning med pluginnets meddelelse, på et engelsksproget website »Captcha not correct: Behavior check«. Med Contact Form 7 viser formularen »Behavior check«.
Fejlfinding
- Der sker ingenting, når du klikker på »Send«.
- Leveres siden over http i stedet for https? Så viser browserkonsollen advarslen »[SilentShield] Web Crypto fehlt im Worker …« (meddelelsen er på tysk). Lever siden over https.
- Contact Form 7 melder »There was an error trying to send your message«.
- Kontrollen er bestået; det, der fejlede, er WordPress' afsendelse af mailen. Kontrollér mailindstillingerne (for eksempel SMTP), ikke botbeskyttelsen.
- Rigtige besøgende får »Behavior check«.
- Den hyppigste årsag er et optimeringsplugin, der forsinker eller samler JavaScript — se bemærkningen nedenfor. Kontrollér også, at nøglen hører til sidens domæne.
- En WPForms-formular bliver ikke sendt, eller blok-checkout afviser hver ordre.
- Opdater SilentShield-pluginet til version 2.15.14 eller nyere. Vi målte begge problemer med version 2.15.12; med 2.15.14 optræder de ikke længere.
- Du vil se, hvad scriptet gør.
- Tilføj ?silentshield-debug til sidens adresse. Browserkonsollen viser så hvert trin i kontrollen.
Undtag SilentShield fra JavaScript-optimering
Cache- og hastighedsplugins (WP Rocket, Perfmatters, LiteSpeed, Autoptimize med flere) kan udsætte JavaScript til besøgendes første interaktion og samle filer i ét bundt. Begge dele ødelægger SilentShield: widgetten starter først ved et klik, adfærdssignalerne fra sideindlæsningen (musebevægelse, skriverytme, timing) mangler, og beskyttelsen arbejder med en brøkdel af det, den har brug for. Formularscanninger kører slet ikke. Tilføj disse mønstre til din optimerings undtagelseslister — både for “udsæt JavaScript” og “kombinér JavaScript”:
client.js
behavior-captcha
silentshieldTjek: åbn en side med en formular og kør performance.getEntriesByType("resource").map(r=>r.name).filter(n=>n.includes("client.js")).join() i browserkonsollen UDEN at klikke først. Et tomt resultat betyder, at SilentShield endnu ikke er indlæst — så mangler der en undtagelse.
Begrænsninger
- Kun de formular-plugins, du slår til under »SilentShield → Forms«, er beskyttet.
- Vi nævner kun testede versioner. Pluginnet genkender flere formular-plugins; om de virker med SilentShield, har vi ikke testet.
- Pluginnet har sine egne kontroller (såsom honeypot og tidsmåling) og viser sine egne meddelelser for dem, såsom »JavaScript check«.
- SilentShield beskytter formularer mod bots. Det erstatter ikke en webapplikationsfirewall eller DDoS-beskyttelse.
Drift
- Du opdaterer pluginnet via WordPress som ethvert andet. Scriptet i browseren kommer altid fra os i den aktuelle version.
- Hver indsendelse tæller dobbelt i kvoten: én gang for rapporten fra browseren og én gang for kontrollen på din server.
- Du ser vurderinger og afviste indsendelser i SilentShield-dashboardet.
Uden pluginnet: din egen integration
Til dine egne formularer eller uden pluginnet indsætter du selv scriptet og kontrollerer hver indsendelse på din server. Uden den kontrol beskytter scriptet ikke: det stopper ikke en direkte sendt anmodning.
1. Tilføj scriptet
Tilføj denne kode til dit temas functions.php eller brug et 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. Serversideverificering
Tilføj nonce-verificering til din formular-handler. For tilpassede formularer, tilføj dette til din behandlingsfunktion:
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));
}
}Opbevaring af API-nøglen
Tilføj din API-nøgle til wp-config.php for sikkerhed:
// wp-config.php
define('SILENTSHIELD_API_KEY', 'your-api-key-here');Observér AI-agenter
Ud over formularbeskyttelsen kan WordPress også registrere, hvilke AI-crawlere (GPTBot, ClaudeBot, PerplexityBot, …) der læser dit website — i dag via en lille must-use-pluginfil; en kommende pluginopdatering bygger det ind.