SilentShield

WordPress-formulieren beschermen met SilentShield

De officiële plugin “SilentShield – Captcha & Anti-Spam” voegt het script toe en controleert elke inzending op uw server — zonder eigen code. Deze handleiding vermeldt alleen wat we zelf met de plugin hebben getest.

Plugin bekijken in de WordPress-plugindirectory

Vereisten

  • WordPress 5.2 of hoger en PHP 7.4 of hoger (volgens de plugin in de WordPress-plugindirectory).
  • Uw website draait via https. Zonder beveiligde context stelt de browser geen Web Crypto-functies beschikbaar, ontstaat er geen nonce en kunnen beschermde formulieren niet worden verzonden.
  • Een SilentShield-account met een sleutel voor uw domein. Subdomeinen zoals www. of staging. horen erbij.

Welke formulieren kunnen worden beschermd

Getest op 7-10-2026 met plugin 2.15.14 en WordPress 7.1.2: een mens komt erdoor en wordt op de server bevestigd, een inzending zonder browser wordt geweigerd.

FormulierGeteste versieStatus
Contact Form 76.2Werkt
Fluent Forms6.2.15Werkt
WordPress-reacties7.1.2Werkt
WordPress-login7.1.2Werkt
WordPress-registratie7.1.2Werkt
WooCommerce-afrekenpagina (klassiek)11.1.2Werkt
WPForms2.0.2.2Werkt
WooCommerce-afrekenpagina (blokafrekening)11.1.2Werkt
Elementor Forms4.3.4 (Pro 4.2.1)Werkt
Avada Forms7.11.7Werkt

Installatie

  1. Open in WordPress “Plugins → Nieuwe plugin” en zoek naar “SilentShield”.
  2. Installeer en activeer “SilentShield – Captcha & Anti-Spam for WordPress”.
  3. In het menu verschijnt nu het item “SilentShield”.

Sleutel invoeren en formulieren inschakelen

  1. Maak in het SilentShield-dashboard een sleutel voor uw domein aan en kopieer deze.
  2. Open in WordPress “SilentShield → API / SilentShield”, plak de sleutel bij “API Key” en klik op “Validate”.
  3. Schakel “Activate API” in en klik op “Save”.
  4. Open “SilentShield → Forms” en schakel de bescherming in voor elke formulierplugin die in de tabel hierboven als “Werkt” staat.

De plugin gebruikt de sitesleutel zowel in de browser als voor de controle op uw server. Een serversleutel is hiervoor niet nodig.

Serversleutel voor de plug-in f12-security

De plug-in f12-security kan optioneel aanwijzingen over bots uitwisselen met SilentShield: hij meldt vingerafdrukken van bekende bots en haalt een ondertekende lijst op voor uw account. Deze aanroepen worden door uw server gedaan, niet door de browser van uw bezoekers. Hiervoor heeft de plug-in de serversleutel van uw domein nodig, niet de gewone websitesleutel die in de broncode van uw pagina's staat.

  1. Open in het SilentShield-dashboard “API-sleutels” en de sleutel van uw domein.
  2. Ga naar de pagina “Beveiliging” en klik in het gedeelte “Serversleutel” op “Serversleutel aanmaken”.
  3. Kopieer de waarde direct. Deze wordt maar één keer getoond en wij bewaren geen kopie.
  4. Voer de sleutel in bij f12-security in het veld met het label serversleutel en sla op.

De serversleutel hoort alleen in de instellingen van uw server, nooit in een pagina of script dat aan bezoekers wordt geleverd. Bent u de sleutel kwijt, maak dan in het dashboard een nieuwe aan; de oude wordt daardoor ongeldig.

Werking controleren

Een echte inzending

Open de pagina met het formulier in een privévenster, vul het met de hand in en verzend het. U ziet de normale bevestiging van uw formulier, en de inzending verschijnt met het oordeel in het SilentShield-dashboard.

Een geweigerde inzending

Verstuur hetzelfde zonder browser, bijvoorbeeld een reactie via curl op een bericht met open reacties. Vervang het adres en de bericht-ID:

Terminalbash
curl -i -X POST https://example.com/wp-comments-post.php \
  -d "comment_post_ID=1&author=Test&[email protected]&comment=Test"

Verwacht een weigering met de melding van de plugin, op een Engelstalige site “Captcha not correct: Behavior check”. Bij Contact Form 7 toont het formulier “Behavior check”.

Probleemoplossing

Bij een klik op “Verzenden” gebeurt er niets.
Wordt de pagina via http in plaats van https geleverd? De browserconsole toont dan de waarschuwing “[SilentShield] Web Crypto fehlt im Worker …” (de melding is in het Duits). Lever de pagina via https.
Contact Form 7 meldt “There was an error trying to send your message”.
De controle is geslaagd; mislukt is het verzenden van de e-mail door WordPress. Controleer de e-mailinstellingen (bijvoorbeeld SMTP), niet de botbescherming.
Echte bezoekers krijgen “Behavior check”.
De meest voorkomende oorzaak is een optimalisatieplugin die JavaScript uitstelt of samenvoegt — zie de opmerking hieronder. Controleer ook of de sleutel bij het domein van de pagina hoort.
Een WPForms-formulier wordt niet verzonden, of de blokafrekening weigert elke bestelling.
Werk de SilentShield-plugin bij naar versie 2.15.14 of nieuwer. We hebben beide problemen gemeten met versie 2.15.12; met 2.15.14 komen ze niet meer voor.
U wilt zien wat het script doet.
Voeg ?silentshield-debug toe aan het adres van de pagina. De browserconsole toont dan elke stap van de controle.

Sluit SilentShield uit van JavaScript-optimalisatie

Caching- en snelheidsplugins (WP Rocket, Perfmatters, LiteSpeed, Autoptimize en andere) kunnen JavaScript uitstellen tot de eerste interactie van de bezoeker en bestanden samenvoegen. Beide breken SilentShield: het widget start dan pas als iemand klikt, de gedragssignalen vanaf het laden van de pagina (muisbeweging, typritme, timing) ontbreken en de bescherming werkt met een fractie van wat ze nodig heeft. Formulierscans draaien helemaal niet. Voeg deze patronen toe aan de uitsluitingslijsten van uw optimalisator, voor zowel “JavaScript uitstellen” als “JavaScript samenvoegen”:

Uitsluitingspatronentext
client.js
behavior-captcha
silentshield

Controleren: open een pagina met een formulier en voer performance.getEntriesByType("resource").map(r=>r.name).filter(n=>n.includes("client.js")).join() uit in de browserconsole ZONDER eerst te klikken. Een leeg resultaat betekent dat SilentShield nog niet geladen is — dan ontbreekt een uitsluiting.

Beperkingen

  • Alleen de formulierplugins die u onder “SilentShield → Forms” inschakelt, zijn beschermd.
  • We vermelden alleen geteste versies. De plugin herkent nog andere formulierplugins; of die met SilentShield werken, hebben we niet getest.
  • De plugin heeft eigen controles (zoals honeypot en tijdmeting) en toont daarvoor eigen meldingen, zoals “JavaScript check”.
  • SilentShield beschermt formulieren tegen bots. Het vervangt geen webapplicatiefirewall en geen DDoS-bescherming.

Beheer

  • U werkt de plugin net als elke andere bij via WordPress. Het script in de browser komt altijd in de actuele versie van ons.
  • Elke inzending telt twee keer mee voor het quotum: één keer voor de melding uit de browser, één keer voor de controle op uw server.
  • Oordelen en geweigerde inzendingen ziet u in het SilentShield-dashboard.

Prijzen en quota bekijken

Zonder plugin: eigen integratie

Voor eigen formulieren, of zonder de plugin, voegt u het script zelf toe en controleert u elke inzending op uw server. Zonder die controle beschermt het script niet: een rechtstreeks verzonden verzoek houdt het niet tegen.

1. Het script toevoegen

Voeg deze code toe aan het bestand functions.php van uw thema of gebruik een plugin zoals « 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. Serververificatie

Voeg Nonce-verificatie toe aan uw formulierverwerking. Voor aangepaste formulieren voegt u dit toe aan uw verwerkingsfunctie:

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));
    }
}

De API Key opslaan

Voeg uw API Key toe aan wp-config.php voor extra beveiliging:

wp-config.phpphp
// wp-config.php
define('SILENTSHIELD_API_KEY', 'your-api-key-here');

AI-agents observeren

Naast formulierbescherming kan WordPress ook vastleggen welke AI-crawlers (GPTBot, ClaudeBot, PerplexityBot, …) uw site lezen — vandaag via een klein must-use pluginbestand; een komende plugin-update bouwt dit in.

Meer hierover: AI-agents observeren →