Le spam dans les formulaires de contact peut rapidement saturer votre boîte de réception. Voici les solutions les plus efficaces pour bloquer ces messages indésirables, de la plus simple à la plus avancée.
Pré-requis
Accès au fichier .htaccess via cPanel ou FTP
Accès au tableau de bord WordPress de votre site
Connaissances de base en édition de fichiers
Accomplissement de la tâche: dépend du niveau d’expertise
Expertise : intermédiaire
Comment faire?
Méthode 1 : Ajouter un Honeypot (sans plugin)
Le honeypot est un champ caché que les robots remplissent automatiquement, contrairement aux humains.
Instructions :
Allez dans Apparence > Éditeur de thème (utilisez un thème enfant si possible)
Ouvrez le fichier functions.php
Ajoutez ce code à la fin (pour Contact Form 7) :
add_action('wp_footer', 'ajout_champ_honeypot');
function ajout_champ_honeypot() {
if (is_page('contact')) {
echo '<style>.hp-email-field { display: none; }</style>';
echo '<input type="text" name="email_confirm" class="hp-email-field" value="">';
}
}
add_filter('wpcf7_validate', 'verification_honeypot', 10, 2);
function verification_honeypot($result, $tags) {
if (!empty($_POST['email_confirm'])) {
$result->invalidate('', 'Robot détecté.');
}
return $result;
}
Méthode 2 : Protéger votre formulaire via .htaccess
Cette méthode protège spécifiquement votre formulaire contre les injections de code et les requêtes POST malveillantes.
Instructions :
Connectez-vous à votre cPanel > Gestionnaire de fichiers
Naviguez vers le dossier /public_html/
Localisez le fichier .htaccess (s'il n'existe pas, créez-le)
Ajoutez ces règles de protection avant la ligne # BEGIN WordPress :
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} /contact|/formulaire|/wp-contact-form|/contact-form [NC]
RewriteCond %{HTTP_REFERER} !^https?://(www.)? [NC]
RewriteRule ^(.*)$ - [F,L]
##Bloque les soumissions contenant du code PHP ou JavaScript
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} /contact [NC]
RewriteCond %{QUERY_STRING} (eval(|base64_|<?php|javascript:) [NC,OR]
RewriteCond %{QUERY_STRING} (INSERT INTO|SELECT.FROM|UNION.SELECT) [NC]
RewriteRule ^(.*)$ - [F,L]
##Bloque les User-Agents de spammeurs connus
RewriteCond %{HTTP_USER_AGENT}
(ahrefs|mj12bot|rogerbot|semrush|spbot|dotbot|mail.ru|bot|crawler|spider|scanner) [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>
##Protège le fichier .htaccess lui-même
<Files .htaccess>
order allow,deny
deny from all
</Files>
Important :
Si le site devient inaccessible après modification du .htaccess renommez le fichier .htaccess en .htaccess_old Le site devrait redevenir accessible. Vérifiez la syntaxe de vos règles et réessayez.
Le honeypot ne bloque pas tous les spams car il n'est efficace que contre les robots basiques.
Combinez-le avec la méthode .htaccess pour une meilleure protection.
Si vous ne trouve pas le fichier .htaccess assurez-vous d'activer l'affichage des fichiers cachés dans le Gestionnaire de fichiers.
Méthode 3 : Ajouter un Captcha
Si les méthodes précédentes ne suffisent pas, ajoutez un Captcha à votre formulaire.
Instructions :
Pour Contact Form 7 :
Installez le plugin Contact Form 7 reCAPTCHA (ou utilisez l'intégration native)
Obtenez des clés gratuitement sur reCAPTCHA website security and fraud protection
Allez dans Contact > Intégration et saisissez vos clés
Pour WPForms / Elementor :
L'option Captcha est disponible directement dans les réglages du plugin.
