Proteggere i moduli WordPress con SilentShield
Il plugin ufficiale «SilentShield – Captcha & Anti-Spam» integra lo script e verifica ogni invio sul suo server — senza codice proprio. Questa guida riporta solo ciò che abbiamo testato noi stessi con il plugin.
Vedere il plugin nella directory di WordPress
Requisiti
- WordPress 5.2 o successivo e PHP 7.4 o successivo (come indicato dal plugin nella directory di WordPress).
- Il suo sito web funziona su https. Senza un contesto sicuro il browser non fornisce le funzioni Web Crypto, non viene creato alcun nonce e i moduli protetti non possono essere inviati.
- Un account SilentShield con una chiave per il suo dominio. I sottodomini come www. o staging. sono inclusi.
Quali moduli possono essere protetti
Testato il 07/10/2026 con il plugin 2.15.14 e WordPress 7.1.2: una persona passa e viene confermata sul server, un invio senza browser viene respinto.
| Modulo | Versione testata | Stato |
|---|---|---|
| Contact Form 7 | 6.2 | Funziona |
| Fluent Forms | 6.2.15 | Funziona |
| Commenti di WordPress | 7.1.2 | Funziona |
| Accesso a WordPress | 7.1.2 | Funziona |
| Registrazione a WordPress | 7.1.2 | Funziona |
| Checkout di WooCommerce (classico) | 11.1.2 | Funziona |
| WPForms | 2.0.2.2 | Funziona |
| Checkout di WooCommerce (checkout a blocchi) | 11.1.2 | Funziona |
| Elementor Forms | 4.3.4 (Pro 4.2.1) | Funziona |
| Avada Forms | 7.11.7 | Funziona |
Installazione
- In WordPress apra «Plugin → Aggiungi nuovo» e cerchi «SilentShield».
- Installi e attivi «SilentShield – Captcha & Anti-Spam for WordPress».
- Nel menu compare ora la voce «SilentShield».
Inserire la chiave e attivare i moduli
- Crei una chiave per il suo dominio nella dashboard di SilentShield e la copi.
- In WordPress apra «SilentShield → API / SilentShield», incolli la chiave in «API Key» e clicchi su «Validate».
- Attivi «Activate API» e clicchi su «Save».
- Apra «SilentShield → Forms» e attivi la protezione per ogni plugin di moduli indicato come «Funziona» nella tabella sopra.
Il plugin usa la chiave del sito sia nel browser sia per la verifica sul suo server. Non serve una chiave server.
Verificare il funzionamento
Un invio autentico
Apra la pagina con il modulo in una finestra privata, lo compili a mano e lo invii. Vedrà la normale conferma del suo modulo, e l’invio comparirà con il relativo verdetto nella dashboard di SilentShield.
Un invio respinto
Invii lo stesso senza browser, ad esempio un commento tramite curl a un articolo con i commenti aperti. Sostituisca l’indirizzo e l’ID dell’articolo:
curl -i -X POST https://example.com/wp-comments-post.php \
-d "comment_post_ID=1&author=Test&[email protected]&comment=Test"Il risultato atteso è un rifiuto con il messaggio del plugin, su un sito in inglese «Captcha not correct: Behavior check». Con Contact Form 7 il modulo mostra «Behavior check».
Risoluzione dei problemi
- Cliccando su «Invia» non succede nulla.
- La pagina viene servita su http anziché https? In tal caso la console del browser mostra l’avviso «[SilentShield] Web Crypto fehlt im Worker …» (il messaggio è in tedesco). Serva la pagina su https.
- Contact Form 7 segnala «There was an error trying to send your message».
- La verifica è stata superata; a non riuscire è l’invio della mail da parte di WordPress. Controlli le impostazioni di posta (ad esempio SMTP), non la protezione dai bot.
- I visitatori reali ricevono «Behavior check».
- La causa più frequente è un plugin di ottimizzazione che ritarda o accorpa il JavaScript — veda la nota qui sotto. Controlli inoltre che la chiave appartenga al dominio della pagina.
- Un modulo WPForms non viene inviato, oppure il checkout a blocchi respinge ogni ordine.
- Aggiorni il plugin SilentShield alla versione 2.15.14 o successiva. Abbiamo misurato entrambi i problemi con la versione 2.15.12; con la 2.15.14 non si verificano più.
- Vuole vedere cosa fa lo script.
- Aggiunga ?silentshield-debug all’indirizzo della pagina. La console del browser mostrerà quindi ogni passaggio della verifica.
Escludi SilentShield dagli ottimizzatori JavaScript
I plugin di cache e prestazioni (WP Rocket, Perfmatters, LiteSpeed, Autoptimize e altri) possono ritardare il JavaScript fino alla prima interazione del visitatore e unire i file in un unico bundle. Entrambe le cose rompono SilentShield: il widget parte solo quando qualcuno clicca, mancano i segnali comportamentali dal caricamento della pagina (movimento del mouse, ritmo di digitazione, tempi) e la protezione lavora con una frazione di ciò che le serve. Le scansioni dei moduli non partono affatto. Aggiunga questi schemi alle liste di esclusione del Suo ottimizzatore, sia per «ritardare JavaScript» sia per «unire JavaScript»:
client.js
behavior-captcha
silentshieldPer verificare: apra una pagina con un modulo ed esegua performance.getEntriesByType("resource").map(r=>r.name).filter(n=>n.includes("client.js")).join() nella console del browser SENZA cliccare prima. Un risultato vuoto significa che SilentShield non è ancora caricato: manca un'esclusione.
Limiti
- Sono protetti solo i plugin di moduli che attiva in «SilentShield → Forms».
- Indichiamo solo versioni testate. Il plugin rileva altri plugin di moduli; non abbiamo verificato se funzionino con SilentShield.
- Il plugin include controlli propri (come honeypot e misurazione dei tempi) e mostra per questi messaggi propri, come «JavaScript check».
- SilentShield protegge i moduli dai bot. Non sostituisce un web application firewall né una protezione DDoS.
Funzionamento
- Il plugin si aggiorna tramite WordPress come qualsiasi altro. Lo script nel browser proviene sempre da noi nella versione attuale.
- Ogni invio conta due volte ai fini della quota: una volta per la segnalazione dal browser, una volta per la verifica sul suo server.
- Verdetti e invii respinti sono visibili nella dashboard di SilentShield.
Senza plugin: integrazione propria
Per moduli propri, o senza il plugin, integri lo script autonomamente e verifichi ogni invio sul suo server. Senza questa verifica lo script non protegge: non ferma una richiesta inviata direttamente.
1. Aggiungere lo script
Aggiunga questo codice al file functions.php del Suo tema o utilizzi un plugin come « 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. Verifica lato server
Aggiunga la verifica del Nonce al Suo gestore di moduli. Per i moduli personalizzati, aggiunga questo alla Sua funzione di elaborazione:
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));
}
}Archiviazione dell'API Key
Aggiunga la Sua API Key in wp-config.php per maggiore sicurezza:
// wp-config.php
define('SILENTSHIELD_API_KEY', 'your-api-key-here');Osservare gli agenti IA
Oltre alla protezione dei moduli, WordPress può anche registrare quali crawler IA (GPTBot, ClaudeBot, PerplexityBot, …) leggono il Suo sito — oggi tramite un piccolo file must-use plugin; un prossimo aggiornamento del plugin lo integrerà.