Lutter contre le spam dans dotclear
Par Ploum, samedi 29 avril 2006 à 13:40 :: hacker vaillant, spam :: #105 :: rss
Non content d'envahir notre boîte aux lettres, voilà que le spam devient de plus en plus présent sur les blogs, aux points de rendre ceux-ci inutilisables avec les commentaires activés.
Si vous n'avez pas de blog, je ne peux que vous conseiller d'en créer un (avec DotClear par exemple) et d'y raconter des histoires que vous inventez ! Si vous avez un blog sous DotClear, nous allons voir ensemble comment solutionner le problème du spam.
Un bon système antispam
À mes yeux, un bon système anti-spam doit avant tout être invisible pour les utilisateurs. Je suis très flatté que des gens prennent la peine de commenter mon blog, je me refuse à leur imposer la moindre épreuve pour pouvoir poster un commentaire.
Il est donc hors de question de voir sur mon blog un système comme les captchas. Avec une vue parfaite (selon mes derniers tests médicaux) et un très bon écran, j'échoue à près du quart des sites avec des captchas ! Je n'ose donc pas imaginer ce que doivent endurer les visiteurs avec une déficience visuelle (même minime), un vieil écran ou surfant depuis un PDA par exemple.


Exemples réels de captchas. Savez-vous les lire ?
Autre chose : je pense qu'il est possible, dans la plupart des cas, de distinguer à coup sûr un robot d'un visiteur normal (contrairement aux mails). Je ne suis donc pas pour l'utilisation d'un système probabiliste comme SpamClear, système qui oblige de temps en temps à aller vérifier si un commentaire légitime ne s'est pas glissé dans le spam.
Désactiver à 100% les spams dans les trackbacks
Un trackback est un signal envoyé par un site sur votre blog pour dire "Eho ! Je parle de ce billet !". Le trackback comporte donc un lien vers le site qui parle de votre billet. Les spams eux sont envoyés par des robots et comportent un lien vers un site de vente de médicaments.
Il suffit donc de vérifier si le site qui a envoyé le trackback est le même que celui dont l'adresse est décrite dans le trackback. Un spammeur ne peut pas se permettre cela car il pourrait être facilement retrouvé et attaqué en justice. Ils utilisent donc des robots un peu partout sur le net pour envoyer son trackback, pas le site décrit lui-même. Cette idée a été proposée par Digimag et fonctionne à 100% sous DotClear 1.2.3.
Dans le fichier tb.php de votre installation dotclear, identifiez la ligne
require dirname(__FILE__).$app_path.'/inc/prepend.php';
(aux alentours de la ligne 25)
Juste après, rajoutez le code suivant :
function ipCheck()
{
$siteInfo = @parse_url($_REQUEST['url']);
if (!$siteInfo)
return false;
$ip = gethostbynamel($siteInfo['host']);
if ($ip && in_array($_SERVER['REMOTE_ADDR'],$ip))
return true;
else
return false;
}
Ensuite, trouvez le else aux alentours de la ligne 124. Il ressemble à :
}
else
{
$url = $_REQUEST['url'];
Dans la ligne juste avant le else (entre le symbole "}" et le "else"), insérez :
elseif (!ipCheck())
{
$content =
'<error>1</error>'."\n".
'<message>The URL of the post and the IP from the trackback don\'t match !</message>';
}
Et voilà ! Plus de trackbacks spam. Les trackbacks légitimes eux passeront sans problème.
UPDATE : il semblerait que ce faisant vous bloquez aussi malheureusement quelques trackbacks légitimes de blogs chez certains hébergeurs. Dans mon cas personnel, les personnes concernées peuvent continuer à faire un trackback en utilisant tb_nospam.php à la place de tb.php.
UPDATE 2 : Sacha a finalement réussi à affiner et améliorer sa solution
Désactiver 90% des spams dans les commentaires
L'idée de base que j'ai vu sur un site est le suivant : mettre dans le formulaire des commentaires un champ vide avec la marque : "laissez ce champ vide pour poster un commentaire". Il y a fort à parier que la majorité des robots va remplir ce champ par une adresse internet ou un nom quelconque. Jérôme Combaz a découvert que les robots spammers sont tellement bête qu'on peut appliquer ce système en mettant ce champ "magique" en commentaire dans le code. Vos visiteurs ne verront aucune différence mais les robots, eux, rempliront le champ.
Mise en oeuvre :
Dans le fichier /themes/votredossiertheme/form.php, ("votredossiertheme" étant généralement "default") ajoutez cette ligne :
<!-- <input name="pauvgars" value="vatecoucher" /> -->
juste avant "</fieldset>" (il y'en a en fait deux. Vous pouvez rajouter la ligne aux deux, ça ne coûte rien) .
Et dans /layout/prepend.php, chercher la ligne contenant :
if ($blog->addComment($post_id,$c_nom,$c_mail,$c_site,
et transformez-la en :
if (isset($_POST['pauvgars']) ||
$blog->addComment($post_id,$c_nom,$c_mail,$c_site,
Voilà ! Si les spammers commencent à comprendre ce système, on cachera le champ magique dans la CSS.
Et pour ce qui passe encore...
Je vous conseille d'installer le plugin Spamplemousse pour dotclear qui fait du filtre sur les mots clés. Au début, j'ai du supprimé pas mal de mots clés qui induisaient des faux positifs. Par contre, je vous conseille fortement de rajouter le mot clé "a href".
Mais bon, spamplemousse est-il encore nécessaire ?
UPDATE : ces techniques ne sont malheureusement pas efficace contre une nouvelle forme de spam ne mettant que des messages appropriés genre : "thanks" ou "great, I'm using Firefox".
REUPDATE : J'explique ici comment faire un faux champ "site" dans son blog. Cela m'a permis de n'avoir plus que un ou deux spams par semaine, tous détectés par spamplemousse.
- Send to friend -
Or il existe visiblement des solutions assez simples pour limiter un gros pourcentage de ce spam. Reste à vérifier...



Commentaires
1. Le samedi 29 avril 2006 à 14:20, par azeus :: site
2. Le samedi 29 avril 2006 à 15:42, par Sacha :: site
3. Le samedi 29 avril 2006 à 15:50, par chat-loupe :: site
4. Le samedi 29 avril 2006 à 16:00, par Ploum :: site
5. Le samedi 29 avril 2006 à 16:14, par chat-loupe :: site
6. Le samedi 29 avril 2006 à 16:19, par Sacha :: site
7. Le samedi 29 avril 2006 à 16:22, par Sacha :: site
8. Le samedi 29 avril 2006 à 16:24, par Ploum :: site
9. Le samedi 29 avril 2006 à 16:43, par chat-loupe :: site
10. Le samedi 29 avril 2006 à 16:44, par Sacha :: site
11. Le samedi 29 avril 2006 à 16:56, par Ploum :: site
12. Le samedi 29 avril 2006 à 20:15, par CSCMEUH :: site
13. Le samedi 29 avril 2006 à 21:25, par eks
14. Le samedi 29 avril 2006 à 23:14, par a3_nm :: site
15. Le samedi 29 avril 2006 à 23:50, par Vinch :: site
16. Le dimanche 30 avril 2006 à 00:02, par Monique :: site
17. Le dimanche 30 avril 2006 à 11:25, par Sacha :: site
18. Le dimanche 30 avril 2006 à 11:48, par Omnisilver
19. Le dimanche 30 avril 2006 à 12:04, par Vinch :: site
20. Le lundi 1 mai 2006 à 14:00, par Laurent GUERBY :: site
21. Le lundi 1 mai 2006 à 16:14, par Ploum :: site
22. Le lundi 1 mai 2006 à 17:16, par theClimber :: site
23. Le mardi 2 mai 2006 à 20:42, par Monique :: site
24. Le mercredi 3 mai 2006 à 13:55, par Philippe Worontzoff :: site
25. Le mercredi 3 mai 2006 à 13:57, par Philippe Worontzoff :: site
26. Le mercredi 3 mai 2006 à 13:59, par Philippe Worontzoff :: site
27. Le mercredi 3 mai 2006 à 19:26, par Ploum :: site
28. Le mercredi 3 mai 2006 à 19:52, par Matt :: site
29. Le jeudi 4 mai 2006 à 18:20, par Sacha :: site
30. Le vendredi 5 mai 2006 à 10:42, par Sacha :: site
31. Le samedi 6 mai 2006 à 11:22, par Plam
32. Le samedi 6 mai 2006 à 12:09, par ploum :: site
33. Le samedi 6 mai 2006 à 18:40, par François :: site
34. Le dimanche 7 mai 2006 à 09:57, par rémy de la Hoya :: site
35. Le mardi 9 mai 2006 à 12:45, par Sacha :: site
36. Le jeudi 1 juin 2006 à 22:14, par Janick :: site
37. Le dimanche 4 juin 2006 à 17:49, par Black
38. Le mercredi 7 juin 2006 à 01:54, par David Latapie :: site
39. Le mardi 4 juillet 2006 à 16:11, par john doe
40. Le mardi 25 juillet 2006 à 13:44, par kim :: site
41. Le mardi 25 juillet 2006 à 15:06, par Ploum :: site
42. Le mardi 25 juillet 2006 à 15:14, par kim :: site
43. Le mercredi 30 août 2006 à 00:16, par William
44. Le dimanche 24 septembre 2006 à 13:49, par StyleLotußien :: site
45. Le mardi 26 septembre 2006 à 12:47, par Meojifo :: site
46. Le mardi 26 septembre 2006 à 19:52, par StyleLotußien :: site
47. Le mardi 3 octobre 2006 à 17:58, par Meojifo KamKam
48. Le mercredi 20 décembre 2006 à 20:01, par Joe :: site
49. Le jeudi 28 décembre 2006 à 19:58, par Bogoris :: site
50. Le jeudi 18 janvier 2007 à 09:26, par Marcha
51. Le vendredi 19 janvier 2007 à 23:08, par Slachz
52. Le mercredi 24 janvier 2007 à 12:23, par Fogg :: site
53. Le dimanche 11 mars 2007 à 16:43, par Macak
54. Le mercredi 14 mars 2007 à 17:23, par Maxx :: site
55. Le samedi 19 mai 2007 à 16:49, par biou
56. Le lundi 28 mai 2007 à 14:37, par Nicolas Quenault :: site
57. Le mardi 7 août 2007 à 16:28, par Marjorie :: site
Ajouter un commentaire
Poster un commentaire n'est pas une obligation. Rappelez-vous de tourner 7 fois votre clavier dans votre bouche avant de poster (oui, il m'a fallu des années de streching pour y arriver).
Si votre commentaire a été effacé, c'est sans doute pour une de ces raisons.
Les commentaires pour ce billet sont fermés.