Blog Web & Design

Anti-spam pour vos formulaires : La technique du Honeypot

Antispam Wordpress Honeypot

Vous allez découvrir comment éviter les spams sur votre site WordPress avec la technique du honeypot (pot de miel).

Le pot de miel est une façon de piéger les robots spammeurs qui parcourent la toile.

Lorsque vous rencontrez un problème sur votre site WordPress, et plus précisément sur la reception répétée d’e-mails publicitaires, il vous est possible de réparer WordPress en utilisant une technique dont le principe est simple.

La technique consiste à ajouter un champ de saisie factice dans votre formulaire, celui-ci étant destiné à ne pas être rempli, du moins par un humain.
Pour cela, le champ est masqué aux visiteurs, ainsi le robot spammeur étant programmé pour remplir tous les champs de votre formulaire sans distinctions, va renseigner ce champ est sera directement étiqueté comme spam.

Besoin de faire sécuriser un site wordpress ou réparer un site wordpress ? Contactez-moi

1. Ajouter un champ dans votre formulaire

Le champ de saisie que vous allez rajouter, est un champ factice uniquement destiné à tromper les robots.
Ce champ sera masqué visuellement de l’utilisateur, et en le remplissant le robots destiné à vous spammer se trahira lui-même et déclenchera une fonction spéciale.

Dans votre formulaire Contact Form 7 :
Voici le code à ajouter dans votre formulaire CF7 pour ajouter votre honeypot

[text fake-field]

Ce qui aura pour rendu en HTML :
Voici le rendu

<div class="fake"><input name="fake-field"></div>

2. Masquer le champ par CSS

Dans votre fichier CSS ou dans votre code HTML :

form .fake{display:none}

3. Créer une fausse page de confirmation

Certains robots vont chercher à savoir si le message à bien été envoyé, et pour ce faire ils vont vérifier que le formulaire renvoie bien vers une page de confirmation. Vous allez donc en créer une, spécialement dediée aux spammeurs.

Votre fausse page sera page exemple :

http://www.monsite.com/fake-confirmation/

4. Ajouter la fonction de redirection

Voici donc la fonction à utiliser avec le plugin Contact Form 7 pour bloquer l’envoi de l’email et rediriger les faussaires vers votre page factice.

Besoin de faire sécuriser un site wordpress ou réparer un site wordpress ? Contactez-moi

Ce code est à rajouter dans votre fichier functions.php de votre thème WordPress :

 

// On désactive le Javascript de CF7 par défaut
add_filter( 'wpcf7_load_js', '__return_false' );
add_filter( 'wpcf7_load_css', '__return_false' );

function func1234_wpcf7_antispam_fake_input($cf7) {

      // if you wanna check the ID of the Form $wpcf->id
      if(isset($_POST['fake-field']) && $_POST['fake-field'] != ''){
          wp_safe_redirect( get_bloginfo("url") . '/fake-confirmation/');
          exit;
      }
  }

// perform the check when the_posts() function is called
add_action("wpcf7_before_send_mail", "func1234_wpcf7_antispam_fake_input");

Si vous souhaitez faire de même sans WordPress
Voici le code à utiliser en PHP simple :

if(isset($_POST['fake-field']) && $_POST['fake-field'] != ''){
          header('Location: http://www.monsite.com/fake-confirmation/');
          exit('Redirecting you to http://www.monsite.com/fake-confirmation/');
} else {
// OK, envoyer l'email
}

Conclusion

La technique du honeypot permet en complément de sécuriser un formulaire face aux bots de spam et ceci sans utiliser captcha. Vous pouvez aussi Un anti-spam WordPress sans captcha : Le questionnaire pour éviter les spams.

Autre source : stackoverflow.com

Besoin de faire sécuriser un site wordpress ou réparer un site wordpress ? Contactez-moi

Dernière mise à jour le Auteur : Thomas Dufranne

Ce contenu vous a-t-il été utile ?

Merci pour votre avis !

Si vous pensez pouvoir aider d'autres personnes, pensez à partager le contenu

Merci pour votre avis !

Désolé que vous n'ayez pas trouvé votre réponse.

Je vous invite à me poser vos question par commentaire ou par e-mail !

2 réponses sur “Anti-spam pour vos formulaires : La technique du Honeypot”

Anthony

Bonjour.
Très intéressant comme tuto.
Je souhaite également créer une fausse redirection à partir de l’extension redirection for contact form 7, qui possède différente option dont celle de renseigner un script.
J’ai recopier dans ce script le code php simple que vous proposez en modifiant « fake-field » par le nom du champ honeypot « adresse », ainsi que l’url par celle de ma page de fausse confirmation créée.
Lorsque j’effectue le test en remplissant le champ du honeypot et que je valide en appuyant sur « envoyer », un message d’erreur s’affiche. Du coup honeypot fonctionne bien mais je n’ai pas de redirection.
Le code que j’ai copier n’est-il pas bon ?
Merci pour votre aide

    Thomas Dufranne

    Bonjour Anthony, il me semble que l’extension « redirection for contact form 7 » utilise déjà la fonction wp_safe_redirect() (ou wp_redirect()), ce qui à mon avis doit créer un conflit, car une seule redirection n’est possible à la fois.

Repondre

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.