Hack anti-spam de Noël pour MT

Publié le :

Je teste avec joie depuis ce midi une version simplifiée d'un hack anti-spam pour Movable Type. Vu le nombre de spams que je reçois en commentaires, vous ne pouvez pas savoir combien ça fait plaisir de voir ce flot putride se tarir instantanément.

Les spammeurs utilisent des scripts automatiques qui visent les scripts de commentaires des systèmes de publication, aussi bien MT que WordPress pour ne citer que ces deux-là. Le truc, pour éviter ça, consiste à rendre difficile pour les spammeurs de trouver l'adresse de votre script. Difficile, parce qu'impossible n'est pas français et si votre script est vraiment impossible à trouver, personne ne viendra jamais laisser de commentaire sur votre blog, et ce n'est pas le but recherché.

Voici comment faire dans MT (c'est trivial à implémenter pour d'autres systèmes) :

1. cherchez dans tous les gabarits qui affichent un formulaire de commentaire (n'oubliez pas ceux de prévisualisation ou d'erreur, car sinon vos efforts ne serviraient à rien) et cherchez la ligne suivante :

<form method="post" action="<$MTCGIPath$><$MTCommentScript$>" name="comments_form" onsubmit="if (this.bakecookie[0].checked) rememberMe(this)">

Dans cette ligne, remplacez le contenu de l'attribut action par une URL invalide, par exemple action="/nospam.html". (Vous pouvez pointer vers un fichier existant pour afficher un message si vous voulez).

N.B. : vérifiez bien la présence de l'attribut name="comments_form" dans le tag <form ...>, il est indispensable au fonctionnement de ce hack. C'est ce qui provoquait l'erreur chez moi, car ce nom était absent des templates preview et error.

2. Toujours dans ces mêmes gabarits, après le tag </form>, placez le code suivant :

<script language='Javascript'>document.comments_form.action = '<$MTCGIPath$>'+'<$MTCommentScript$>'; </script>

3. Renommez votre script de commentaires (mt-comments.cgi) et modifiez le fichier mt.cfg pour refléter le nouveau nom (CommentScript nouveaunomdusscript.cgi). Même si vous aviez déjà pris cette précaution, ça ne mange pas de pain de le modifier à nouveau, surtout si vous recevez du spam.

4. Regénérez les archives individuelles de votre blog (ou les gabarits qui contiennent les formulaires de commentaires).

Voilà.

Il y a deux choses importantes à noter avec ce hack. D'abord il ne fonctionne que si les visiteurs ont activé javascript dans leur navigateur, sinon ils seront envoyés vers l'URL que vous aurez placé dans l'attribut action à l'étape 1. Ensuite, vous pouvez être sûr qu'il ne fonctionnera qu'un temps, le temps que les spammeurs mettront à trouver le chemin de votre script de commentaire.

C'est une course aux armements, boucliers et contre-mesures contre les missiles de l'ennemi et il s'agit de placer la barre un cran plus haut jusqu'à ce qu'ils trouvent le trou dans votre armure. J'ai la faiblesse de croire que les clés sont entre les mains de Google et Yahoo! tant qu'ils ne rendront pas leur moteur de recherche respectif insensibles à ces petits jeux de référencement, il n'y aura pas de solution miracle contre le spam de blogs. Michel Valdrighi, co-développeur de WordPress, n'est pas d'accord, j'attends avec impatience sa solution.