Accueil/Blog/Protéger ses formulaires contre les SPAMs

Protéger ses formulaires contre les SPAMs

Dernière mise à jour : septembre 2026

Formulaire de contact, inscription à une newsletter, commentaires d’articles — chaque formulaire sur un site WordPress est une cible pour les bots. Sans protection, vous recevez des dizaines de soumissions par jour : liens vers des sites douteux, tentatives de phishing, messages publicitaires automatisés. Au-delà de la nuisance, le spam de formulaire peut affecter la délivrabilité de vos emails (si votre serveur relaye des notifications polluées) et fausser vos données analytiques.

Plusieurs méthodes complémentaires permettent de bloquer le spam efficacement, sans dégrader l’expérience de vos visiteurs légitimes.

1. Honeypot : le piège invisible

Le honeypot est la méthode la plus élégante et la moins intrusive. Le principe : un champ caché est ajouté au formulaire, invisible pour un visiteur humain (masqué en CSS), mais visible et rempli par les bots qui analysent le code HTML brut. Si le champ est rempli à la soumission, c’est un bot — le message est rejeté silencieusement.

L’avantage du honeypot : zéro friction pour l’utilisateur. Pas de case à cocher, pas de puzzle à résoudre, pas de widget visible. Les visiteurs ne savent même pas qu’une protection est en place.

La plupart des plugins de formulaire WordPress intègrent un honeypot nativement :

  • WPForms : honeypot activé par défaut sur tous les formulaires
  • Contact Form 7 : disponible via le plugin compagnon Honeypot for CF7
  • Gravity Forms : option activable dans les réglages anti-spam de chaque formulaire
  • Elementor Pro Forms : champ honeypot ajouté en un clic depuis l’éditeur

Le honeypot seul bloque la majorité des bots basiques. Mais les bots plus sophistiqués savent détecter et ignorer les champs cachés — c’est pourquoi il faut le combiner avec d’autres méthodes.

2. Cloudflare Turnstile : l’alternative moderne à reCAPTCHA

Cloudflare Turnstile est un service de vérification gratuit qui remplace avantageusement reCAPTCHA. Son fonctionnement est invisible dans la majorité des cas : Turnstile analyse le comportement du navigateur en arrière-plan et valide l’utilisateur sans interaction. Quand un doute subsiste, il affiche un simple widget de vérification — jamais de grille d’images à cliquer.

Les avantages par rapport à reCAPTCHA :

  • Respect de la vie privée : Turnstile ne collecte pas de données personnelles à des fins publicitaires, contrairement à reCAPTCHA qui alimente l’écosystème Google. Un point important pour la conformité RGPD
  • Gratuit sans limite : pas de seuil de requêtes, pas de plan payant nécessaire
  • Pas besoin d’être derrière Cloudflare : Turnstile fonctionne sur n’importe quel site, même sans utiliser le CDN ou le DNS Cloudflare
  • Expérience utilisateur supérieure : validation invisible dans la plupart des cas, widget discret quand une vérification est nécessaire

Pour l’intégrer à WordPress, créez un compte Cloudflare (gratuit), générez vos clés Turnstile dans le dashboard, puis installez un plugin compatible :

  • Simple Cloudflare Turnstile : plugin léger qui ajoute Turnstile aux formulaires de connexion, d’inscription, de commentaire et aux principaux plugins de formulaire (WPForms, CF7, Gravity Forms, WooCommerce)
  • Intégration native : WPForms et Gravity Forms proposent Turnstile comme option CAPTCHA dans leurs réglages, sans plugin supplémentaire

3. reCAPTCHA v3 : la solution Google

reCAPTCHA v3 fonctionne entièrement en arrière-plan : il attribue un score de risque (de 0.0 à 1.0) à chaque visiteur en analysant son comportement sur le site. Un score proche de 1.0 indique un humain, un score proche de 0.0 un bot. Le site décide du seuil à partir duquel une soumission est acceptée ou rejetée.

L’intégration est simple — la plupart des plugins de formulaire WordPress (WPForms, Gravity Forms, Contact Form 7) supportent reCAPTCHA v3 nativement. Il suffit de renseigner la clé de site et la clé secrète obtenues depuis la console Google reCAPTCHA.

Le point à considérer : reCAPTCHA collecte des données comportementales pour alimenter les services Google. En contexte européen (RGPD), cela nécessite le consentement de l’utilisateur — ce qui complique l’implémentation. Si votre site cible un public européen ou si la protection des données est une priorité, Cloudflare Turnstile est l’alternative à privilégier.

4. Protéger les commentaires avec Akismet

Si votre site WordPress utilise les commentaires, Akismet est la première ligne de défense. Développé par Automattic (l’éditeur de WordPress), Akismet filtre automatiquement les commentaires spam en les comparant à une base de données mondiale de spam connu. Il est préinstallé sur toute installation WordPress — il suffit de l’activer avec une clé API (gratuite pour les sites personnels).

Akismet est efficace pour les commentaires mais ne protège pas les formulaires de contact ni les formulaires personnalisés. Pour une protection complète, combinez Akismet (commentaires) avec un honeypot et Turnstile ou reCAPTCHA (formulaires).

Si votre site n’utilise pas les commentaires, désactivez-les complètement dans Réglages → Discussion et supprimez le champ de commentaire du thème. Un formulaire de commentaire actif mais inutilisé est une surface d’attaque gratuite pour les bots.

5. Désactiver xmlrpc.php

xmlrpc.php est un fichier WordPress historique qui permet la communication avec des services externes (applications mobiles, outils de publication à distance). En pratique, il est rarement utilisé aujourd’hui — mais il reste activé par défaut et constitue un vecteur d’attaque majeur : brute-force sur les identifiants, pingback DDoS et injection de spam.

Si vous n’utilisez pas d’application mobile WordPress ni de service de publication externe, désactivez-le. Plusieurs méthodes :

  • Via un plugin : Disable XML-RPC bloque toutes les requêtes vers xmlrpc.php en une activation
  • Au niveau serveur (recommandé) : bloquez l’accès directement dans la configuration du serveur web. Sur OpenLiteSpeed, ajoutez une règle de réécriture qui retourne un 403 pour toute requête vers xmlrpc.php. Sur Nginx :
location = /xmlrpc.php {
    deny all;
    return 403;
}

Le blocage côté serveur est plus efficace car la requête est rejetée avant même que PHP ne s’exécute — zéro consommation de ressources.

6. Bonnes pratiques complémentaires

  • Validation côté serveur : ne faites jamais confiance uniquement à la validation JavaScript côté client. Un bot peut soumettre un formulaire directement sans passer par le navigateur. La validation des champs (format email, longueur minimale, champs requis) doit toujours être faite côté serveur
  • Rate limiting : limitez le nombre de soumissions par IP et par intervalle de temps. CrowdSec ou Fail2ban peuvent détecter et bloquer les IP qui soumettent des formulaires en masse (voir notre article sur la sécurité serveur)
  • Token anti-CSRF : les plugins de formulaire WordPress sérieux (WPForms, Gravity Forms) intègrent des nonces WordPress qui empêchent les soumissions provenant de sites tiers. Vérifiez que votre solution de formulaire les utilise
  • Bloquer les patterns récurrents : certains plugins de formulaire permettent de créer des règles de filtrage par mot-clé (URL suspectes, mots-clés pharmaceutiques). C’est un complément utile quand un type de spam spécifique persiste malgré les autres protections

Conclusion

La protection anti-spam la plus efficace combine plusieurs couches : un honeypot pour bloquer les bots basiques, Cloudflare Turnstile (ou reCAPTCHA v3) pour les bots plus sophistiqués, Akismet pour les commentaires si vous les utilisez, et la désactivation de xmlrpc.php si vous n’en avez pas besoin. Aucune méthode seule n’est infaillible — c’est leur combinaison qui réduit le spam à un niveau négligeable, sans impacter l’expérience de vos visiteurs.

Si vous souhaitez mettre en place une protection anti-spam efficace sur vos sites WordPress ou auditer votre configuration actuelle, nous pouvons en discuter.

← Tous les articles Parlons de votre projet