Description
SilentShield est une extension CAPTCHA et antispam unifiée pour WordPress.
Il fonctionne avec les constructeurs de formulaires les plus populaires et protège les formulaires de connexion, d’inscription et de commentaires, sans ralentir votre site.
Pourquoi choisir SilentShield ?
– Défense invisible : CAPTCHA, pot-de-miel et listes noires fonctionnant en silence.
– Résultats instantanés : installez, activez et bloquez les indésirables.
– Support universel : compatible avec Contact Form 7, WPForms, Elementor, WooCommerce, etc.
– Confidentialité avant tout : sans cookies, sans suivi, entièrement conforme au RGPD/DSGVO.
SilentShield ne protège pas seulement les formulaires.
Il protège votre temps, vos clients et votre entreprise.
Fonctionnalités principales
- CAPTCHA invisible (arithmétique, pot-de-miel, image)
- Blocage IP intelligent & listes noires
- Filtres anti-indésirables pour les liens, le code & les mots-clés
- Liste blanche pour les administrateurs & les clients
- Compatible RGPD, pas de cookies, pas de suivi
Extension de formulaires pris en charge & intégrations
SilentShield protège les formulaires pour tous les principaux constructeurs de formulaires WordPress et les fonctionnalités du coeur :
Constructeurs de formulaires :
– Contact Form 7 (CF7)
– WPForms / WPForms Lite
– Elementor Pro Forms
– Gravity Forms
– Fluent Forms
– JetFormBuilder
– Avada (Fusion Builder) Forms
WooCommerce :
– Commande (Payement classique & PayPal)
– Connexion
– Inscription
Coeur de WordPress :
– Formulaire de connexion (wp-login.php)
– Formulaire d’inscription
– Formulaire de commentaires
Autre :
– Ultimate Member (Connexion & Inscription)
– WP Job Manager (Offres d’emploi)
Chaque intégration peut être activée ou désactivée individuellement dansus Réglages > Étendus.
Calques de protection
SilentShield utilise +10 mécanismes de protection travaillant ensemble :
- CAPTCHA – CAPTCHA arithmétique, pot de miel ou à base d’image
- Protection JavaScript – Détecte les envoismissions des robots sans prise en charge de JS
- Détection du navigateur – Valide les chaînes User-Agent
- Protection temporisateur – Bloque les envois plus rapidement qu’un humain peut taper
- Protection envois mutilples – Empêche les envois rapides en double
- Limitation du taux d’IP – Limite les requêtes par IP et fenêtre de temps
- Liste noire d’IP – Bloque les mauvaises IP connues
- Règles de contenu – Limite les URL, bloquer BBCode, miset en liste noire de mot-clé
- Liste blanche – Passe la validation pour les comptes d’administration, les comptes connectés ou les e-mails/IP spécifiques
- API SilentShield (Bêta) – Détection d’indésirables basée sur le cloud
La promesse
SilentShield n’est pas « une autre extension ».
C’est un mur invisible contre le bruit de fond d’internet.
Activez-le une fois et vos formulaires redeviennent humains.
Confidentialité & télémétrie
- Aucun cookie, pas de traçage des internautes.
- Stockage IP chiffré (max. 2 mois, uniquement pour la défense anti-indésirables).
- La télémétrie est facultative et anonymisée.
- Vous pouvez désactiver la télémétrie à tout moment dans les réglages de l’extension.
Champs collectés :
– plugin_slug, plugin_version
– snapshot_date
– settings_json (configuration anonymisée – drapeaux uniquement booléen/entier, aucun texte libre)
– features_json (fonctionnalités activées)
– created_at, first_seen, last_seen
– counters_json (événements indésirables)
– wp_version, php_version, locale
Conformité RGPD/DSGVO
– Bases : Art. 6 Abs. 1 lit. f DSGVO (intérêt légitime – optimisation extension).
– Aucune donnée personnelle, aucun cookie, aucun suivi utilisateur.
Captures d’écrans
Installation
- Téléverser vers
/wp-content/plugins/. - Activer via le menu « Extensions » de WordPress.
- Configurer les réglages de protection dans Réglages > SilentShield.
Pour des instructions de configuration détaillées, voir docs/installation.md.
FAQ
-
Est-ce que cela va stopper tous les indésirables ?
-
Pas tous, mais ça le réduit considérablement. SilentShield combine plusieurs couches de détection (CAPTCHA, pot de miel, blocage IP, détection JavaScript, temporisation, règles de contenu) pour une couverture maximale.
-
Est-il conforme au RGPD ?
-
Oui – aucun de cookies, aucun suivi, seulement des données anonymisées. Les adresses IP sont stockées chiffrées pendant 2 mois maximum (uniquement pour la défense anti-indésirable). Voir la section Confidentialité ci-dessous.
-
Ai-je besoin de compétences en codage ?
-
Non : tout est géré via le tableau de bord de WordPress.
-
Fonctionne-t-il avec WooCommerce PayPal Payments ?
-
Oui. SilentShield injecte automatiquement des horodatages de protection JavaScript dans les demandes de validation PayPal. Les boutons standard PayPal et les champs de carte sont pris en charge.
-
Puis-je personnaliser l’apparence du CAPTCHA ?
-
Oui. Choisissez à partir de 3 modèles intégrés, personnalisez le libellé et le texte de le texte indicatif, puis sélectionnez une couleur d’icône de rechargement (noir/blanc). Les développeurs peuvent personnaliser davantage la sortie via des filtres.
-
Puis-je désactiver des calques de protection spécifiques ?
-
Oui. Chaque mécanisme de protection (CAPTCHA, temporisateurs, JavaScript, navigateur, IP, règles, etc.) peut être activé ou désactivé individuellement.
-
Comment puis-je mettre en liste blanche mes comptes administrateur ?
-
Dans Réglages > Etendus > Liste blanche, activez « Liste blanche pour le rôle d’administration » et/ou « Liste blanche des comptes connectés ». Vous pouvez également mettre en liste blanche des e-mails et des adresses IP spécifiques.
-
Quelles données la télémétrie collecte-t-elle et pourquoi ?
-
SilentShield inclut une télémétrie anonyme facultative (désactivable).
Cela nous permet de comprendre quelles fonctionnalités sont utilisées, afin d’améliorer la convivialité et de supprimer la complexité inutilisée.Nous sommes une petite équipe indépendante : nous ne gagnons pas d’argent avec cette extension et nous ne vendons ni ne partageons de données.
La télémétrie est utilisée uniquement à des fins d’optimisation et de maintenance. -
Où se trouve la documentation complète ?
-
Voir le répertoire docs/ dans le dossier de l’extension pour une documentation complète de tous les réglages, crochets, API REST et référence du développeur.
Avis
Contributeurs/contributrices & développeurs/développeuses
« SilentShield – Captcha & Anti-Spam pour WordPress (CF7, WPForms, Elementor, WooCommerce) » est un logiciel libre. Les personnes suivantes ont contribué à cette extension.
Contributeurs“SilentShield – Captcha & Anti-Spam pour WordPress (CF7, WPForms, Elementor, WooCommerce)” a été traduit dans 2 locales. Remerciez l’équipe de traduction pour ses contributions.
Le développement vous intéresse ?
Parcourir le code, consulter le SVN dépôt, ou s’inscrire au journal de développement par RSS.
Journal des modifications
2.3.5
- Fix [Fluent Forms]: Fixed JavaScript protection failing for Conversational Forms (
[fluentform type="conversational"]). Conversational Forms render as a Vue.js app inside a<div>instead of a<form>element, so the regularrender_item_submit_buttonhook and the JS form discovery (querySelectorAll("form")) never fired. Timing fields (php_start_time,js_start_time,js_end_time) are now injected viajQuery.ajaxPrefilterdirectly into the innerdataPOST parameter where the PHP backend expects them. Hooks into bothwp_footer(embedded forms) andfluentform/conversational_frame_footer(standalone pages).
2.3.4
- Fix [Templates]: Reload button inline styles were stripped by
wp_kses()CSS property filtering (safecss_filter_attr), causingdisplay:inline-flex,align-items,box-sizingetc. to be removed. Reload button HTML is now output directly (all values are escaped at construction viaesc_attr/esc_url), ensuring per-form and per-integration style overrides work correctly. - Fix [CSS]: Removed hardcoded
width:32px; height:32px; display:flex; background-colorfrom template-1.c-reload aCSS rule that overrode per-form settings. All visual properties are now controlled exclusively via inline styles fromget_reload_button(). - Fix [CSS]: Removed
!importantdeclarations on reload button icon dimensions in template-1 CSS that prevented per-form icon size overrides from taking effect. - Fix [CSS]: Removed redundant global inline CSS (
wp_add_inline_style) for reload button styling that conflicted with the hierarchical settings resolution (form > module > global). - Fix [CSS]: Reload button icon is now vertically centered using flexbox (
display:inline-flex; align-items:center) instead ofmargin-top:5px. - Improvement [CSS]: All reload button inline styles now use
!importantto prevent theme and plugin CSS from overriding configured values (background-color, padding, border-radius, display, icon dimensions, margin, max-width). - Fix [Core]: Replaced deprecated
CF7Captcha::getInstance()calls in UI_Extended withCF7Captcha::get_instance().
2.3.3
- New [Admin UI]: Added full reload button styling options: background color, border color (color pickers), padding, border radius, and icon size (number inputs). All settings have backward-compatible defaults.
- New [Admin UI]: All reload button styling settings can be overridden per integration (CF7, Avada, WPForms, etc.) and per individual form via the existing override panel system.
- New [Admin UI]: Added live preview for the reload button in global settings and all override panels (integration + form level). Changes are reflected in real-time.
- New [Admin UI]: Added « Asset Loading » section with global toggle to force-load all plugin assets (CSS/JS) on every page, useful when automatic form detection fails.
- New [Admin UI]: Added custom URL path exceptions textarea. Define URL paths (one per line) where assets should always be loaded, e.g. for custom login pages (WPS Hide Login) or exotic page builders.
- Improvement [Core]:
should_load_assets()now checks global asset loading toggle and custom URL paths before falling back to automatic form detection.
2.3.2
- Fix [Captcha]: Fixed reload button href being stripped by wp_kses. Changed
javascript:void(0)to#to be compatible with WordPress HTML sanitization.
2.3.1
- New [Admin UI]: Added per-integration and per-form override settings. Protection settings can now be customized at the integration level (e.g. all CF7 forms) or for individual forms, with hierarchical inheritance (Global > Integration > Form).
- New [Admin UI]: Added slide-in configuration panels on the Extended and Forms admin pages. Click « Configure » next to any integration or form to open the override panel.
- New [Admin UI]: Added Forms admin page listing all discovered forms across installed integrations (CF7, WPForms, Elementor, Gravity Forms, etc.) with override status badges.
- New [REST API]: Added
POST /overrides/saveendpoint for persisting integration and form-level override settings via AJAX with admin permission checks and rate limiting. - New [Core]: Added hierarchical settings resolution system (
Settings_Resolver) that merges Global, Integration, and Form-level settings with proper inheritance. - New [Core]: Added form discovery system (
Form_Discovery) that detects forms across all supported integrations. - New [Core]: Added
ProtectionContextfor per-form setting resolution during spam validation, enabling form-specific protection behavior. - Fix [Compatibility]: Resolved « Translation loading triggered too early » PHP Notice on WordPress 6.7+ that caused « Cookies are blocked due to unexpected output » errors on login pages, breaking compatibility with plugins like SecuPress Move Login.
- Fix [JavaScript]: Resolved global scope collision where the bundled
WPFormsclass overwrotewindow.WPForms, breaking the WPForms plugin. Build output is now wrapped in an IIFE. - Improvement [Translations]: Added 57 new translatable strings for override panels and Forms page to all language files (de_DE, de_DE_formal, es_ES, fr_FR, it_IT, pt_PT).
- Improvement [Compatibility]: Updated integration controllers (Avada, CF7, FluentForms, Gravity Forms, WPForms) with form discovery support and per-form protection context.
2.3.0
- Fix [Security]: Closed mass-assignment vulnerability in IPBan and IPLog classes. Properties are now set via explicit allowlist instead of
property_exists(), preventing overwrite of internal state like the logger or ID fields. - Fix [Security]: Replaced
parse_str()on raw POST data in API verification with targeted regex extraction, eliminating a potential denial-of-service vector via deeply nested keys. - Fix [Security]: Added
esc_html()to spam error messages informat_spam_message()as defense-in-depth against potential XSS if future modules include dynamic content in messages. - Fix [Security]: Added
defined('ABSPATH')guards to 10 PHP files that were missing them (BaseController, BaseModul, Api, Browser, IP_Blacklist_Validator, Whitelist_Validator, Javascript_Validator, Log_WordPress_Interface, Validator, Browser_User_Agent). - Fix [WooCommerce / WordPress Login]: Resolved a cross-concern filter leak where WooCommerce registration validation could accidentally bypass WordPress login spam checks (and vice versa). Each integration now uses its own scoped filter (
f12_cf7_captcha_wc_login_validated,f12_cf7_captcha_wc_registration_validated). - Fix [WordPress Registration]: Changed error code from integer
500to string'spam'for consistency with all other controllers. - Fix [Comments]: Replaced abrupt
wp_die()with a proper error page that includes the specific spam reason, a « Go Back » link, and HTTP 403 status. - Fix [CF7]: Changed greedy regex
(.*)to non-greedy(.*?)in submit button detection, preventing incorrect captcha placement when multiple input elements exist on the same line. - Fix [Telemetry]: Counters now track request-local deltas and merge them with the current database values at shutdown, significantly reducing lost updates under concurrent requests.
- Fix [Database]: Standardized all
$wpdbnull-checks in IPBan and IPLog to use strictnull === $wpdbcomparison consistently. - Fix [Core]:
set_blocked_time()parameter type changed fromstringtointto match its semantic purpose (number of seconds). - Improvement [API]: Server-side verification endpoint is now configurable via the
F12_CAPTCHA_API_URLconstant, matching the frontend configuration. This enables mock API servers in automated tests and self-hosted deployments. - Improvement [API]: Network errors during API verification now respect a configurable fail mode via the
f12-cf7-captcha-api-fail-closedfilter. Default remains fail-open for backwards compatibility; set totrueto block submissions when the API is unreachable. - Improvement [Assets]: Added
FORGE12_CAPTCHA_VERSIONas cache-busting version parameter to all enqueued scripts and stylesheets, ensuring browsers load updated assets after plugin upgrades. - Improvement [Code Quality]: Deprecated method aliases (
getInstance(),get_modul()) now emit_deprecated_function()notices to help developers migrate to the current API. - Improvement [Logging]: Standardized all log messages from mixed German/English to English for consistent log parsing and compatibility with international teams and log aggregation tools.
- Performance [Frontend]: Added
deferscript strategy (WP 6.3+) to frontend scripts, allowing the browser to continue parsing HTML while scripts load. - Performance [Frontend]: Removed unnecessary jQuery dependency from the SilentShield API client loader (client.js uses only vanilla DOM APIs).
- Performance [Admin]: Moved admin toggle.js to the footer to eliminate render-blocking in the dashboard.
- Performance [Build]: Disabled source maps in production builds, removing the 160KB .map file reference from the deployed bundle.
2.2.76
- Fix [WooCommerce Checkout]: Resolved « Captcha nicht korrekt: Javascript-Schutz » error when checking out with PayPal Payments (Standard Buttons and Card Fields). The JavaScript protection timestamps are now injected into AJAX checkout requests automatically, fixing compatibility with payment gateways that submit the checkout without clicking the #place_order button.
2.2.75
- Fix [JetFormBuilder]: Captcha now renders correctly on JetFormBuilder v3.5+ where the legacy
before-start-form-rowhook no longer fires for the submit button. Addedbefore-end-formfilter as a reliable fallback that works across all versions. - Fix [JetFormBuilder]: Registered
before-start-formandbefore-end-formas filters (not actions) to match JetFormBuilder’sapply_filters()API, ensuring captcha HTML is properly injected into the form output. - Improvement [JetFormBuilder]: Added dedicated
JetFormBuilderFormsJavaScript handler with MutationObserver for dynamic form detection, captcha repositioning before the submit button, submit interception for captcha verification, and AJAX-aware captcha reload. - Fix [JetFormBuilder]: Corrected Gutenberg block name in E2E test setup from
jet-forms/action-buttontojet-forms/submit-fieldto match the registered block name.
2.2.74
- Fix [Security]: Removed
$wpdb->prepare()call without placeholders in Salt class, which triggered a PHP notice on WordPress 6.x+. - Fix [Security]: Replaced
hash_pbkdf2()with negligible 10-iteration count byhash_hmac('sha512')for IP hashing — clearer intent, no misleading key stretching. - Fix [Code Quality]: Removed commented-out
debug_backtrace()block from production code. - Improvement [Security]: Added IP-based rate limiting (30 req/min) to
captcha/reloadandtimer/reloadREST endpoints, preventing table flooding by rapid unauthenticated requests.
2.2.73
- Improvement [Code Quality]: Standardized mixed German/English naming conventions across the entire codebase (
$_moduls$_modules,init_moduls()init_modules(),get_modul()get_module()). Deprecated wrapper methods preserve backwards compatibility.
2.2.72
- Improvement [Database]: Added index on
hashcolumn for IPBan, IPLog, Captcha, and CaptchaTimer tables. Existing installations receive the index automatically on update. - Improvement [Resilience]: Database tables are now auto-created on first write if missing, removing the need to manually reactivate the plugin after table loss.
2.2.71
- Improvement [Performance]: Telemetry counters are now accumulated in memory and flushed once at shutdown, replacing per-submission
update_option()calls that caused unnecessary database writes on high-traffic sites.
2.2.70
- Improvement [Performance]: Logger methods now check
F12_DEBUGbefore any processing, eliminating unnecessary overhead (sanitization, glob, file I/O) when debug mode is off.
2.2.69
- Improvement [Core]: Replaced ~60 manual
require_oncecalls with a custom PSR-4 autoloader (autoload.php). Classes are now loaded on demand, reducing upfront file I/O.
2.2.68
- Fix [Privacy]: Telemetry now only transmits boolean/integer feature flags. API keys, blacklist content, and all other free-text settings are stripped before transmission.
2.2.67
- Fix [Security]: Removed hardcoded development API URL from shipped plugin. Production URL (
api.silentshield.io) is now the default. - New [Configuration]: Added
F12_CAPTCHA_API_URLconstant to override the API endpoint for development or staging environments (define inwp-config.php).
2.2.66
- Fix [Security]: IP detection now defaults to
REMOTE_ADDRonly, preventing IP spoofing via forgedHTTP_CLIENT_IPorHTTP_X_FORWARDED_FORheaders. - New [Configuration]: Added
F12_TRUSTED_PROXY_HEADERconstant for sites behind a reverse proxy or load balancer (define inwp-config.php). - Improvement [Validation]: IP addresses are now validated with
filter_var( FILTER_VALIDATE_IP )instead ofsanitize_text_field().
2.2.65
- Fix [Security]: Added
wp_kses_post()escaping to the plugin upgrade notice output to prevent potential XSS from unescaped update data.
2.2.64
- Fix [Security]: Added
wp_kses()escaping for captcha HTML output in all captcha templates to prevent potential XSS. - Fix [Templates]: Fixed double-escaping bug in template-2 where
esc_attr()was incorrectly applied to a pre-escaped attribute string.
2.2.63
- Fix [Security]: Replaced all
sprintf+esc_sqlSQL queries with$wpdb->prepare()across IPBan, IPLog, and Captcha classes to prevent potential SQL injection.
2.2.62
- Improvement [Security]: Migrated all AJAX endpoints to WP REST API (
f12-cf7-captcha/v1), adding built-in permission checks, schema validation, and proper HTTP responses. - Fix [Security]: Blacklist sync endpoint now restricted to
manage_optionscapability (was previously accessible to unauthenticated users). - Improvement [API]: Captcha reload, timer reload, and blacklist sync now use REST routes with JSON request/response format.
2.2.61
- Fix [JavaScript]: Updated a bug causing the reload captcha to trigger infinite in some rare cases
2.2.60
- Improvement [JavaScript]: Switched Elementor form handling ensuring captcha logic is triggered reliably even when forms are dynamically destroyed and re-rendered by Elementor.
2.2.58
- Improvement [JavaScript]: Updated default form to exclude additional wordpress components which have be extracted to different components.
2.2.57
– Fix [WordPress Login / Registration]: Resolved an issue where enabling one protection feature incorrectly activated both.
2.2.56
- Fix [Form Detection] Resolved an issue where a recent script adjustment caused default WordPress/WooCommerce forms to be unintentionally registered as protected SilentShield forms. This led to conflicts with the WooCommerce « Add to cart » process for anonymous sessions. The form detection logic has been corrected to properly exclude default forms.
2.2.55
- Fix [JavaScript] Fixed a build issue where the minifier renamed classes to _, overwriting window._ (Underscore.js) and breaking WordPress/WooCommerce scripts by reserving _ during mangling and adding a safe global namespace.
2.2.54
- Fix [WP Job Manager]: Added reliable detection for WP Job Manager plugin presence before initializing compatibility hooks, preventing unnecessary execution and log noise when the plugin is not installed or active.
- Improvement [JavaScript]: Refactored JavaScript interception logic and updated compatibility with the latest plugin versions. This reduces the number of loaded scripts and improves overall page performance by using optimized, minified files.
- Improvement [API]: When using the beta API (SaaS service), the system now automatically disables legacy protection mechanisms to prevent potential conflicts.
- Fix [Avada / Contact Form 7]: Reworked the form submission script to prevent duplicate submissions.
- Fix [Elementor]: Updated integration with the latest Elementor version to ensure form submissions require valid CAPTCHA verification.
- Fix [Elementor]: Resolved an issue caused by Elementor’s internal caching, which stored forms (including CAPTCHA data) in the database. The system now reloads CAPTCHA immediately after attaching it to the form to ensure proper validation.
2.2.53
- Improvement [Whitelist]: Added global AJAX/REST whitelist for WooCommerce and major payment gateways (PayPal, Stripe, Klarna, Mollie, Amazon Pay, Apple Pay, Google Pay, Link) to prevent false CAPTCHA validation during checkout.
- Improvement [Captcha Math Generator]: Improved numeric CAPTCHA validation logic to correctly handle 0 results (e.g., 5 − 5 = 0) and prevent false negatives from empty or non-numeric inputs.
2.2.52
- New [WooCommerce Checkout]: Now protected with Captcha. Enable or disable under Settings > Extended. More security. Less spam.
- Improvement [API v2]: Refactored server-side validation for greater consistency and reduced error rate.
2.2.51
- Improvement [API v2/JavaScript]: Refactored client-side validation for consistency and reduced error rate
2.2.50
- Fix [API v2]: Updated key and endpoint configuration.
- Fix [JavaScript]: Adjusted script to align with latest Chrome behavior, resolving issues with event forwarding from WooCommerce/WordPress.
2.2.49
- New [API v2]: Started implementing the new Captcha SaaS solution.
- Fix [JavaScript]: Fixed a bug that prevented WooCommerce from triggering its own events on form submit.
- Fix [Logger]: No longer tied to WP_DEBUG. Enable with F12_DEBUG.
- Fix [Core]: Updated paths for blacklist and set timeout value to 3s.
2.2.46
- Fix [Core]: Removed dynamic property creation in CaptchaTimer; explicit initialization.
- Fix [JS]: Validation now works when the submit button has an inline onclick; our callback is no longer blocked.
- Fix [Gravity Forms]: CAPTCHA now renders at the configured position; misplacement previously caused constant protection triggering.
- Fix [Logs]: Removed properties are no longer tracked; prevents excessive log size growth.
2.2.44
- Fixed: Updated the comparison of
$setting_valueby adding an explicit(int)cast to ensure numeric strings like'1'are correctly converted to integers.
2.2.43
- Fixed: Adjusted hooks to clear database entries by user.
- Fixed: Fatal error caused by IPLogs using array_keys
2.2.4
- New: JetForm support
- New: IP Blacklist Validator
- New: Anonymous telemetry (opt-out)
- Improved: Simplified configuration defaults
- Improved: Reload & error handling for form plugins
- Fixed: Admin whitelist for Ajax forms
(Older versions trimmed – full changelog on plugin site.)







