Quand tu te fais massacrer par le SPAM sous WordPress

Obligé de faire un encart sur WordPress… bien sûr je l’utilise pour le blog et il est vraiment bien pratique. Le problème c’est le SPAM… les robots qui postent des faux commentaires et qui commençaient sérieusement à m’énerver… du coup il fallait intervenir.



Wordpress victime de son succès

Comme la plateforme WordPress est numéro 1 dans le monde (euh il me semble)… ben elle devient la cible des hackers et des spammers… Du coup pour le SPAM c’est vraiment usant, parce que des robots forcent la publication de faux commentaires, histoire de faire des faux liens… le problème c’est qu’ils deviennent de plus en plus malin pour passer les filtres de sécurités…

Tu as mis Akismet ?
Ce plugin Antispam pour WordPress est très puissant, donc oui je l’ai installé… mais je me retrouve ensuite avec une centaine de SPAM par jour… c’est chiant, car ensuite je dois quand même vérifier avant de les supprimer… parce que parfois dedans il y’a des commentaires valides (c’est rare mais ça arrive). Mettre un autre plugin encore ? Oui pourquoi pas… mais le problème c’est que les spammers essaient de contrer les plugins les plus populaires… du coup ils ont toujours une longueur d’avance (oui c’est la course).

Alors chaque jour plein de SPAM à trier
Pour finir… il y’a quelques jours… j’ai crisé.. Marre de voir ce commentaire moisi en chinois… Marre de voir de la pub pour du mega-x-porn-trop-bon… Marre de voir la publication par un faux profil Facebook… A mon tour de les entuber… Finalement, j’ai décidé de faire un captcha tout simple… que le robot ne saurait pas détourner pour le moment, car il ne s’agit pas d’un plugin populaire… donc il ne connait pas les règles pour tenter de passer la sécurité au moment de la validation du commentaire.

Ajouter un filtre Antispam aux commentaires
Je vais vous montrer comment j’ai procédé… (j’ai utilisé mon thème donc il peut y avoir des variantes pour vous). Notez aussi que je suis pas un expert WordPress… j’ai fais peut être ça comme un babouin, mais ça marche.

Dans le fichier comments.php de votre thème, il faut trouver le bouton submit (dans mon cas) :

<p class="info"><input name="submit" type="submit" id="submit" tabindex="5" value="Valider" class="prosto_button" /><p>

Et ajouter  les lignes suivantes juste avant le code ci-dessus.

<?php
    $nb1 = rand(1,10);
    $nb2 = rand(1,10);
?>
<p>
    <label for="nobot"><small>Code anti-spam <?php if ($req) echo "<span>*</span>"; ?></small></label>
    <input type="text" name="nb1" id="nb1" value="<?php echo $nb1; ?>" size="1" tabindex="2"  maxlength="2" readonly style="text-align:center" /> +
    <input type="text" name="nb2" id="nb2" value="<?php echo $nb2; ?>" size="1" tabindex="2"  maxlength="2" readonly style="text-align:center" /> =
    <input type="text" name="total" id="total" value="" size="2" tabindex="2"  maxlength="2" style="text-align:center;font-weight:bold;" />
</p>

Dans le fichier wp-comments-posts.php il faut trouver cette section :

if ( get_option('require_name_email') && !$user->ID ) {
	if ( 6 > strlen($comment_author_email) || '' == $comment_author )
		wp_die( __('Error: please fill the required fields (name, email).') );
	elseif ( !is_email($comment_author_email))
		wp_die( __('Error: please enter a valid email address.') );
}

Et ajouter  les lignes suivantes juste après le code ci-dessus.

// Webbax - 09.07.13 - vérifie le code antibot
if($_POST['nb1']+$_POST['nb2']!=$_POST['total']){
    wp_die( __('Erreur : le code anti-spam n\'est pas correct') );
}

Et voilà le résultat… du coup l’internaute doit répondre à la question (c’est pas trop dur hein… au pire tu prends la machine à calculer). Le résultat a porté ses fruits direct, ces derniers jours j’ai eu zéro spam… ça fait du bien ahh… viens robot… viens poster… tu peux plus et oui c’est la life ! Pour ceux qui veulent les sources complètes, voici les deux fichiers pour que vous puissiez reprendre le code.

Et faire une mise à jour WordPress ?
Je sais pas si deviens déjà un vieux grigou, mais je déteste faire les mises à jour… quand un truc marche bien je fais surtout pas de mise à jour… j’ai pas envie d’avoir des plugins plantés ou le site à moitié en rade… Pour Prestashop j’applique le même discours… quand ça marche on évite de tout chambouler… (ouai c’est en voyant l’envers du décors que je me dis de plus en plus cela).

Bilan
Oui j’aurais pu utiliser un plugin captcha pour WordPress… mais je sais pas j’ai pu facilement intégrer cette modification et je me suis dit que c’était pas si mal en fait… Et comme du coup ça semblait fonctionner, j’ai décidé de garder ce changement… J’aime pas non plus devoir installer X filtres de sécurité sur le formulaire après on se retrouve avec des validations qui marchent à moitié… et c’est ce que je veux éviter à tout prix… Voilà, si t’es envahis…. tu sais ce que tu peux faire 😀 !

Notez mon billet, Google va adorer :
1 étoiles - J'aime pas !2 étoiles - Bof !3 étoiles - Bien !4 étoiles - Très bien !5 étoiles - Génial ! (Soyez le premier à noter ce billet)
Loading...

6 commentaires sur “Quand tu te fais massacrer par le SPAM sous WordPress”

  1. C’est une bonne idée ce captcha et en plus il est simple d’utilisation pour le visiteur, ça change de ces captcha illisibles qu’on a l’habitude de voir sur certains sites et qui découragent les gens à laisser des commentaires.
    Bon week-end 😉

    1. Encore ça… parfois il m’arrive de saisir faux genre 5 fois tellement les chiffres sont déformés…
      Véridique : il m’est arrivé parfois d’abandonner la soumission de formulaire tellement c’était illisible, à chaque fois refusé

      Profite bien du soleil ! Bybye !

    1. Oui très souvent c’est le cas, si le site a une bonne cote très vite le formulaire des avis sera aussi spamé…
      J’avais appliqué le même concept à l’époque sur la fiche produit, faudra que j’en parle… un jour 🙂

  2. Hello Webbax.

    Pour WordPress si tu utilise NoSpamNX + Akismet logiquement tu ne devrais pas avoir de soucis !
    J’utilise c’est 2 plugins sur quasiment TOUS mes sites & je recoit pas de spam 🙂

    @+

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *