Passer au contenu principal

WordPress - Comment arrêter le spam sur votre formulaire de contact

Mis à jour cette semaine

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 :

  1. Allez dans Apparence > Éditeur de thème (utilisez un thème enfant si possible)

  2. Ouvrez le fichier functions.php

  3. 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 :

  1. Connectez-vous à votre cPanel > Gestionnaire de fichiers

  2. Naviguez vers le dossier /public_html/

  3. Localisez le fichier .htaccess (s'il n'existe pas, créez-le)

  4. 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 :

  1. Installez le plugin Contact Form 7 reCAPTCHA (ou utilisez l'intégration native)

  2. Obtenez des clés gratuitement sur reCAPTCHA website security and fraud protection

  3. 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.

Avez-vous trouvé la réponse à votre question ?