En développant le site transactiv-exe, je me suis retrouvé confronté à
un problème délicat : comment faire pour que les adresses email apparaissant
sur notre site ne soient pas utilisées à notre insu par des spammers ?
Quand un visiteur laisse un message dans un forum
associé à un article, nous l’incitons à laisser son adresse email.
Je crois utile cette possibilité qui lui est offerte, car d’autres visiteurs peuvent ensuite le contacter directement, sans
passer par le forum public. La manière la plus simple de réaliser cette fonction consiste à placer un lien hypertexte de type "mailto" dans la page HTML.
Malheureusement, ceci rend l’adresse email parfaitement lisible pour les
logiciels de collecte (spambots) qui parcourent les sites web à la recherche
des adresses d’internautes, afin de constituer ces gigantesques listes
utilisées ensuite par le SPAM (voir
l’enquête de la CNIL sur ces courriers emails non sollicités).
Le spam me hérisse. J’en suis victime depuis trop longtemps déjà. Voulant
compliquer la vie des spammers, j’ai mis en place une première mesure anti-spam.
Celle-ci reposait sur une astuce trouvée sur le site de
Web-Balzonry. Cette astuce
permet de cacher l’adresse email dans la page HTML d’une manière telle que
le visiteur puisse effectivement utiliser cette adresse, mais que le code source
de la page HTML ne fasse pas apparaître l’adresse en clair.
La méthode consiste à utiliser des instructions javascript, pour découper en
petits morceaux la chaîne de caractères constituant le lien hypertexte "mailto".
La chaîne n’est assemblée qu’au moment de l’affichage par votre butineur.
Ce type de défense anti-spam repose sur le fait que les spambots ne vont
pas exécuter les instructions javascript pour interpréter le résultat
de ces instructions. En théorie, rien ne s’y opposerait, mais ceci les
ralentirait trop, et augmenterait inutilement la complexité de leur
programmation ; inutilement, car ils trouvent déjà bien assez d’adresses à collecter, même sans cette sophistication.
Et puis en répondant au début de ce mois de mars 2003 à un message posté sur la liste de discussion de SPIP, j’ai déclenché une discussion sur la validité de cette solution javascript. Il en ressortait que certains internautes, hostiles à javascript et à son manque de sécurité, désactivaient les scripts : ils ne pourraient donc pas naviguer pleinement sur notre site. Dans le cours de la discussion, Ivan (dont je ne connais que le prénom) m’a indiqué le site suisse de Cuk. Et là, j’ai été emballé. Ce site a développé une parade simple et géniale pour stopper les spambots ou autres robots dans leur quête des adresses email :
faire résoudre par l’internaute une tâche élémentaire (recopier un mot en minuscules) ; un robot est incapable de comprendre ce qu’on lui demande, il est incapable de répondre, et par conséquent, il ne peut pas accéder à l’adresse email demandée. Simple et efficace.
Bien sûr, un jour, les robots seront devenus tellement intelligents que même cette parade ne les arrêtera plus. Mais ce jour est encore si loin...
Les développeurs de Cuk, François Cunéo et Noé Cunéo m’ont autorisé à reproduire leur technique sur notre site. Je les en remercie. Vous pourrez tester cette technique en cliquant sur l’adresse des auteurs de commentaires au bas des articles (par exemple sur mon adresse, dans le commentaire de cet article).
Le code source de la solution que j’ai développée figure dans l’archive adresse.zip jointe à ce texte. Le mode d’emploi de ces fichiers se trouve dans le document anti-spambot.pdf également joint à l’article. Cette version est compatible avec SPIP 1.8.
Le code précédent ne fonctionne plus sur une version de SPIP à partir de la version 2.0. On trouvera dans l’archive formulaire-sesame.zip jointe à cet article une version qui fonctionne avec les formulaires au nouveau format.
Le fonctionnement repose sur un simple formulaire : FORMULAIRE_SESAME qui sera placé dans une boucle FORUMS et recevra en contexte le critère id_forum.
Le mode d’emploi en est simplifié :
insérer ajout_mes_fonctions.php dans votre fichier mes_fonctions.php
placer les fichiers sesame.html et sesame.php dans votre dossier squelette/formulaires
insérer dans votre code l’appel au formulaire :
<div class='ajax'>
#FORMULAIRE_SESAME
</div>
Vous êtes autorisés à réutiliser librement les fragments de code que je
publie ci-dessus, comme ceux qui figurent dans les archives ci-jointes (copyright Yves Grenier) ;
cependant, je décline par avance toute responsabilité vis
à vis de toute conséquence que pourrait avoir l’usage que vous pourriez
faire de ce code.
mode d’emploi de l’archive adresse.zip
Version pour SPIP 1.8, archive contenant le code source HTML et PHP.
Version simplifiée pour SPIP 2.0 utilisant ajax et un formulaire au format CVT.
Y aurait-il un moyen de convertir l’adresse e-mail en image ?
Convertir l’adresse email en image permet de cacher cette adresse d’une manière assez efficace. Pour relire l’adresse à partir de l’image, il faudrait un programme de lecture de caractères. Il en existe beaucoup, mais on peut penser qu’aucun robot n’incorpore ce type de fonctionnalité.
Par contre, l’inconvénient est qu’on ne propose plus de lien "mailto" sur lequel en un seul clic le visiteur peut lancer l’écriture d’un message. Le visiteur est obligé de taper l’adresse email. La procédure que nous utilisons permet de taper un code plus court qu’une adresse email, avec un risque d’erreur moindre.
Autre inconvénient : le recours à une image ne permet plus à un non-voyant de récupérer l’adresse email.
Grâce à un lien trouvé sur le site de Joi Ito, dans un message posté par Nik Cubrilovic, j’ai pu découvrir le projet CAPTCHA à l’Université Carnegie-Mellon. Ce projet étudie les accès sécurisés par des tests que l’humain sait résoudre, mais devant lesquels l’ordinateur échoue. Par exemple EZ-GIMPY propose une image distordue dans lequel un texte est à lire, un test qui est une version sophistiquée et imagée de celui que nous avons mis en place.
Le plus intéressant dans ce site (le plus inquiétant aussi pour l’emploi de ces test dans la sécurisation d’accés) est l’extrait suivant :
"Greg Mori and Jitendra Malik of the University of California at Berkeley have written a program that can solve ez-gimpy with accuracy 83% (see Breaking a Visual CAPTCHA for details). More recently, Thayananthan, Stenger, Torr, and Cipolla of the Cambridge vision group have written a program that can achieve 93% correct recognition rate against ez-gimpy, and Malik and Mori have matched their accuracy. Their programs represent significant advancements to the field of computer vision.".
Pour essayer la solution que j’ai mise en place, il vous suffit de cliquer sur mon nom en haut de ce commentaire.