“Miscellanées”

movable type

Movable Type [3.1.x] : Réduire le spam

Les utilisateurs de Movable Type sont les principales victimes d’un fléau grandissant : le spam des commentaires. Médicaments, casinos, pornographie, consolidation de crédits, les mêmes merdes qui envahissaient déjà vos comptes de courriel se retrouvent sur votre blogue. La différence essentielle étant que le spammeur ne souhaite pas vraiment faire de la publicité à destination de votre personne et de vos lecteurs, mais veut augmenter son “Google rank” en profitant de votre éventuelle notoriété.

Une tactique courante est d’ailleurs d’envoyer des messages anodins, “Hello, what a nice site, I will come back often”, le spammeur ne comptant que sur le lien vers son site figurant dans la signature, tout en espérant passer ainsi plus inaperçu du propriétaire du blogue.

Cette stratégie a été mise en échec à partir de la version 2.66 de Movable Type, qui a remplacé le lien direct par une redirection, normalement non suivie par les robots indexeurs des moteurs de recherche. Mais beaucoup de gens ont encore des versions antérieures à 2.66 et les spammeurs ne font pas de distinguo. Cela a contraint cependant la plupart des spammeurs à placer désormais leurs liens dans le corps du commentaire. Mais, même si vous avez désactivé le HTML dans les commentaires (pour éliminer les liens), vous serez quand même attaqués, car le spammeur ne viendra jamais vérifier physiquement la version de votre MT et sa configuration.

En effet, si vous avez une version de Movable Type à jour et que vous avez désactivé le HTML dans vos commentaires, vous observez que vous êtes toujours autant spammé. Vous pouvez alors vous dire : ils sont vraiment un peu cons ces spammeurs, cela ne sert strictement à rien puisqu’il n’y a plus aucun lien direct vers leur site qui pourrait renforcer leur position dans les moteurs de recherche. Si vous vous dites cela, c’est qu’il vous manque un paramètre essentiel : plus de 9 spammeurs sur 10 n’ont jamais visité votre site, le spam est réalisé à l’aide robots qui vont de lien en lien dans la blogosphère et scannent le code de vos pages à la recherche de votre système de commentaires. Le spammeur se fout royalement de la pertinence de l’attaque sur votre site, il ne l’a même pas choisi, ni même souvent ne connaît son existence. Il compte juste sur le volume de son attaque en se disant qu’il tombera bien sur des blogues bons pour lui (idéalement, un blogue non surveillé — abandon, vacances —, avec le HTML activé ou une version antérieure à la 2.66).

Ces derniers mois, je recevais régulièrement de 5 à 10 spams par jour, ciblant principalement des vieux billets, et subissais exceptionnellement de grosses attaques (une centaine de spams en très peu de temps, voire même 5 000 en un jour). Il résulte de ces attaques un sentiment de dégradation de votre espace personnel, de viol de votre site, et des envies de meurtres. Sans compter le temps perdu à faire le nettoyage (même si la version 3 de Movable Type a bien amélioré la gestion des commentaires).

Il ne vous reste alors que deux choix : fermer vos commentaires ou trouver une parade contre ces chiens galeux.

Il est très regrettable que SixApart n’ait jamais proposé de système de filtrage, ce qui aurait pu décourager les spammeurs dès le début. En fait, l’éditeur de MT a mis beaucoup de temps à prendre en compte l’importance du problème, ayant quasi-abandonné le développement pendant une longue période au profit de Typepad. Et la dernière version (3.11) est toute aussi susceptible d’attaques de spam que toutes les précédentes (à moins d’imposer TypeKey à tous vos visiteurs).

Alors que faire ?

1. Bannir des IP. Oubliez tout de suite, ne faites jamais ça : non seulement cela ne sert à rien, mais en plus, vous risquez de bloquer des utilisateurs légitimes (surtout si vous bannissez par plages d’IP). Pour l’avoir vécu, j’ai déjà reçu 100 spams identiques en une journée, avec 100 adresses IP différentes. Les adresses IP sont généralement fausses, et pour le peu qui ne l’est pas, ce sont des IP dynamiques, et donc le bannissement ne vous protège pas du tout. (Cf. MTB 2.0 and IP banning).

2. Désactiver le HTML dans les commentaires. Et éventuellement retirer le lien sur le nom du commentateur. Oubliez aussi, comme expliqué plus haut, cela ne vous épargnera aucune attaque.

3. Installer un filtrage bayésien. Séduisant sur le papier, mais impraticable. L’algorythme est gourmand en ressources machine (en hébergement mutualisé, vous risquez un kill process automatisé, ou encore de vous faire virer) et la période d’apprentissage est pénible. Le faux positif est aussi un risque non négligeable.

4. Imposer l’enregistrement TypeKey. Cette solution, bien qu’efficace (mais pour combien de temps ?), ne me satisfait pas. Je suis persuadé que nombreux sont ceux qui abandonneront à l’idée de devoir s’inscrire chez TypeKey pour pouvoir commenter chez moi. Et il n’y a pas encore d’interface en français…

5. Activer la validation manuelle des commentaires avant publication. Cela ne me convient pas non plus. Outre que ça fait toujours autant de spam à supprimer, je ne suis pas assez présent derrière mon ordinateur pour maintenir une certaine fluidité des débats et ne pas engendrer une certaine frustration chez mes commentateurs.

6. Installer une validation par code. Vous savez, l’image avec un code alphanumérique que vous devez recopier, ce qui permet de piéger les robots… J’aime bien cette solution, mais j’entends déjà les plaintes de mes chers lecteurs : “mais, c’est pas accessibleuuuuhhhhh !”. Étant plus ennuyé par les plaintes des apôtres de l’accessibilité que par le fait de priver de commentaires un hypothétique lecteur aveugle, j’ai laissé de côté cette solution (peu élégante, il est vrai).

7. Installer le plug-in MT-Blacklist. J’ai essayé, et j’ai abandonné. Outre le fait que MT-Blacklist est lourd et complexe à mettre en oeuvre, la version pour la 3.1 est encore au stade de beta (“emergency release” pour être exact) et comporte donc de nombreux bogues. De plus, le plug-in exige la dernière version de Perl (5.8.5) alors que de trop nombreux hébergeurs n’ont hélas que la version 5.005_03 [c’est mon moment de faire de la publicité pour OVH “Solutions d’hébergement haute technologie” qui reste désespérément scotché à la 5.005_03, malgré les supplications de ses clients]. Pour en rajouter, Jay Allen a parfois, pour des raisons personnelles, de longues périodes d’absence et la “blacklist-mère” n’est pas mise à jour en fonction des attaques en cours. De fait, un tel projet ne peut reposer sur une seule personne. Et je n’ai pas trop apprécié la réponse de Jay Allen : “But first, get a new Perl. They’ve got 5.8 now, you know! It has air-conditioning and electric windows!”.

8. Clore automatiquement les commentaires sur les anciens billets. C’est très efficace et je recommande cette solution. Toutefois faut-il accepter de, justement, fermer les commentaires…

Voilà, ce sont toutes les pistes que j’avais exploré sans succès.

J’ai cependant fait quelque chose de très simple il y a trois semaines, et depuis, je n’ai plus aucun spam (je croise les doigts, pourvu que ça dure). Pour mon cas, cela a été redoutablement efficace.

En fait, c’est le tout premier truc à essayer, et ça piège l’essentiel des robots spammeurs (enfin, pour l’instant). Les robots sont à la recherche de votre système de commentaires, ils scannent donc votre code pour trouver l’URL de votre mt-comments.cgi. Il s’agit donc de changer le nom du script gérant le commentaires, et c’est très simple à faire :

  1. Changez le nom du fichier mt-comments.cgi par ce que vous voulez (ex. commentaire.cgi, ou encore j-encule-les-spammeurs.cgi)
  2. Informez votre installation Movable Type du changement d’identité de votre programme de commentaires : modifiez dans votre fichier de configuration mt.cfg le nom du script de commentaires.
  3. Reconstruisez votre blogue pour répercuter le changement de votre URL de commentaire (sauf si vous êtes passé en version dynamique PHP).

Dans mt.cfg, remplacer :

# AdminScript mt.pl
# CommentScript mt-comments.pl
# TrackbackScript mt-tb.pl
# SearchScript mt-search.pl
# XMLRPCScript mt-xmlrpc.pl
# ViewScript mt-view.pl

par :

# AdminScript mt.pl
CommentScript commentaire.cgi
# TrackbackScript mt-tb.pl
# SearchScript mt-search.pl
# XMLRPCScript mt-xmlrpc.pl
# ViewScript mt-view.pl

(Le “commentaire.cgi” étant le nouveau nom que vous avez choisi. N’oubliez pas de supprimer le # en début de ligne.)

P.S. En parlant de commentaires, comme il se passe souvent plus de choses intéressantes dans mes commentaires du “journal de bord” que dans les billets eux-mêmes, j’ai mis en place un fil RSS des commentaires du “journal de bord”. (Je ne suis pas près de fermer mes commentaires, contrairement à certains)

P.S. bis. J’offrirai une sucette à l’auteur de mon 10 000e commentaire.

1. Le 25 septembre 2004,
Altereco

Je retrouve là un avantage majeur de l’utilisation de dotclear. En effet: - Dotclear est un système de blog pour l’instant assez franco-français. - Dotclear n’est pas aussi répandu et connu que MT - La gestion des commentaires sous Dotclear semble efficace.

Serais ce une solution ? sachant qu’a ma connaissance il existe des outils de migration MT -> Dotclear et que Dotclear n’enrichi pas LLM ?

2. Le 25 septembre 2004,
Laurent

Mais c’est quoi ce spam pour DotClear ??? ;-)

3. Le 25 septembre 2004,
Olivier

Laurent, tu pardonneras, je l’espère, ces utilisateurs enthousiastes ;-)

Le seul avantage de DotClear dans cette affaire est sa faible notoriété, rien de plus.

4. Le 25 septembre 2004,
padawan

Sur le point 8, c’était vrai dans le passé. Maintenant je constate (en tout cas chez moi) que les spammeurs s’attaquent désormais à des billets postés très récemment (dans mon cas parfois dans les 24h). Et le principe de clore les commentaires pour tout le monde m’emmerde plus que de placer un code CAPTCHA pas sympa pour les aveugles, j’ai de temps en temps un commentaire intéressant sur un vieux billet et ça, ça m’encourage à les laisser ouverts.

5. Le 25 septembre 2004,
Olivier G.

Altereco, ce n’est pas parce que Dotclear n’est pas encore spammé (et encore, il y a eu une comapagne de spams pour un site Firefox en français, mais elle était peut être manuelle) qu’il est à l’abri d’un tel problème.

Méfiance, méfiance…

6. Le 25 septembre 2004,
altereco

pardon pour mon enthousiasme :) et puis un spam pour Firefox est il vraiment du spam ?

7. Le 25 septembre 2004,
Benoit

Le spam n’était pas pour firefox, mais pour un site allemand qui essayait de profiter de sa (relative) notoriété. Il n’était d’ailleurs pas limité à DotClear mais est apparu également sur wikipédia et ailleurs.

8. Le 25 septembre 2004,
Olivier G.

Quand les intentions ne sont pas claires et qu’il existe déjà un excellent site qui fait exactement la même chose, oui…

9. Le 25 septembre 2004,
le roncier

quel genre de sucette? ok, ok, elle était facile. ;)

10. Le 25 septembre 2004,
Steph

Un aperçu du cocktail que j’utilise sur mon blog (après une ou deux attaques massives). (Sous WordPress, je précise):

  • un plugin qui permet de rajouter des mots tirés du commentaire à la liste de mots qui mettra le commentaire dans la file de modération (Kitten’s spam words)
  • un autre plugin qui envoie les visiteurs dont l’IP est contenue dans la liste de modération sur une page “accès interdit” après les avoir fait attendre (TarPit)
  • changé le délai minimum entre deux commentaires pour un même visiteur (300 secondes)
  • un plugin que je peux activer en un clic pour bloquer la publication de nouveaux commentaires sur le blog (en cas d’attaque)
  • bientôt, un autre plugin qui met automatiquement les commentaires sur de vieux billets dans la file de modération.

Voilà… c’est avec ça que je tourne, et ça marche pas trop mal (c’est pas parfait, hein, mais qui sait, ça peut peut-être donner des idées aux développeurs de plugins MT!)

11. Le 25 septembre 2004,
Houssein

J’ai déjà entendu parler de cette solution qui consiste à changer le nom du script de commentaires… Mais je me demande si ça marchera à long terme parce que le nom du script est disponible sur le source de cette même page :

form method=”post” action=”http://embruns.net/mt/commentaires.cgi” id=”comments_form”

??!!

12. Le 25 septembre 2004,
Pierre CARION

Meme en tant qu’artisan traditionnel du blog (j’ai mon propre systeme de blog avec mes propres scripts PHP fait avec amour) je suis quand meme attaque par les spammers. J’ai trouve egalement une parade qui marche pour l’instant a 100%: toutes les spams contiennent des URLs dans le titre, le corps du billet et meme le nom du commenteur … facile a detruire automatiquement ;-)

14. Le 26 septembre 2004,
aqb

Merci de partager tes différentes expérimentations. Je vais tester ton astuce. Reste la solution du pauvre, éliminer les spams directement dans la base de données et reconstruire le site (ce qui hélas prend du temps avec le temps).

15. Le 26 septembre 2004,
padawan

Houssein > tu as raison.

J’ai changé le nom de mon script de commentaire il y a deux jours et paf… ce dimanche, 8 spams ! Ils ont je pense été laissés à la main, il n’y a aucune trace suspecte dans mes logs.

Moralité, dans mon cas c’est loin d’être “redoutablement efficace” :-(.

16. Le 26 septembre 2004,
vchahun

J’ai de la chance, mon système perso de blog n’est pas encore trop connu …..

17. Le 27 septembre 2004,
Damien Bonvillain

Perso je suis chez un hébergeur de blogs, qui ne semble pas affecté par le spam des commentaires (même pour les blogs très lus), et pourtant il ne semble qu’utiliser la liste de MT-Blacklist (la liste en elle-même, pas le plug-in)…

18. Le 27 septembre 2004,
padawan

Damien > Je pensais que les spammeurs visaient en fonction du PageRank Google et peut-etre de certains mots-clés (j’ai plus de spam sur les entrées qui parlent du spam). En quoi l’hébergeur peut-il etre un facteur dans ce problème ?

19. Le 27 septembre 2004,
Damien Bonvillain

Je mentionnais l’hébergeur pour dire que je ne maitrisais pas la plate-forme technique, et que c’était lui qui était en charge de la mise en place de la stratégie anti-spam (referrers et commentaires).

20. Le 30 septembre 2004,
wendy

Il ne faudrait accepter que les trackbacks et les personnes qui se font connaître par un premier mail par exemple, au moins pas de spammeurs et de plus je vois mal faire un commentaire avec trackback sur son blog si le sujet ne s’y prête pas. Curieusement l’utilisation du trackback par les blog français n’est pas à la mode, c’est le moins qu’on puisse dire.

21. Le 13 octobre 2004,
David Mollière

ALtereco, Dotclear est sympa, mais TRES simple. Rien à voir avec MT. IL faudrait comparer avec Expression Engine ou Texpattern. En ce qui me concerne je peux témoigner que Textpattern est spam-proof de ce côté là, par contre il oblige l’utilisateur à prévisualiser avant d’envoyer le commentaire, c’est un peu chiant. Mais ça marche. En tout cas pour MT ta solution me semble bien mieux que MT-blacklist. Merci du tuyau ! A+

22. Le 13 octobre 2004,
Martin Lessard

Je me demande si cette idée pourrait marcher (une variante accessible du gif):

  1. on utilise un script pour générer dynmamiquement le submit comme : http://www.javascript-coder.com/html-form/html-form-action.phtml Ce script permet de “choisir” quelle “Action” on prend en fonction du “Radio button”

Voir un exemple HTML : http://www.javascript-coder.com/html-form/html-form-action-example2.html

  1. Un bouton par défaut pourrait indiquer : “Ne pas publier” et l’autre : “Autoriser la publication”. Il faut simplement que le commentateur clique sur le bon bouton. Si c’est le bon choix, l’Action est effectuée.

Pour l’utilisabilité, on peut afficher un message JS si l’utilisateur ne s’en rend pas compte du premier coup et ne change pas de bouton…

3.Évidemment il faut aussi changer le nom du cgi dans mt, sinon ça sert à rien…

Blah ?