Protection des adresses e-mails contre le SPAM sur eZ Publish

Catégories : "Astuces", "Technologie" par Brahim Abdesslam Brahim Abdesslam le 10 Février 2009

Protection des adresses e-mails contre le SPAM sur eZ Publish

Aujourd'hui, nous aimerions partager un peu de notre expérience sur une problématique simple mais récurrente sur la plupart des projets web. Nous avons souvent la nécessité d'afficher une adresse e-mail cliquable à l'aide d'un un lien mailto, notamment sur les pages de contact.

Vous avez certainement remarqué qu'il ne faut pas très longtemps après avoir laissé une adresse e-mail en libre accès sur un site pour recevoir toute sorte de courriers non désirés. Ceci est dû aux e-mails spambots ou « harvesting bots », des programmes mal intentionnés parcourant le web de page en page à la recherche d'adresses e-mails déposées par les internautes ici et là.

eZ Publish possède un système assez simple de modification automatisée des adresses e-mails avant publication, aussi appelé « address munging ». Ce système utilise des chaînes de caractères de remplacement qui sont spécifiées dans le fichier de configuration settings/template.ini, qu'il est bien-sûr nécessaire d'overrider :

[WashSettings]
# Replacements strings for the . and @ in an email
# Used to display emails in a way that SPAM engines
# cannot fetch automatically
EmailDotText=chaine_de_remplacement_dot
EmailAtText=chaine_de_remplacement_at

Pour l'adresse e-mail Cet adresse mail est protégé contre les spambots. Vous avez d'activer le javascript pour la visualiser. ,on obtient après publication :

mailchaine_de_remplacement_atdomainchaine_de_remplacement_dotcom

Bien que très pratique, le rendu n'est visuellement pas très esthétique vous en conviendrez.

Voici donc une fonction javascript que nous utilisons pour réaliser la substitution inverse des chaînes de caractères de remplacement à l'affichage de la page. A noter, bien que cet exemple soit donné dans un contexte Mootools, il est tout à fait possible de l'adapter à un autre framework javascript.

window.addEvent('domready', function(){
 
  var washEmails = function() {
    $$('a[href^=mailto:]').each(function(e) {
 
      var dot = new RegExp('chaine_de_remplacement_dot', 'g');
      var at = new RegExp('chaine_de_remplacement_at', 'g');
 
      e.setProperty(
         'href',
         e.getProperty('href').replace(dot, '.').replace(at, '@')
      );
      e.set(
        'text',
        e.get('text').replace(dot, '.').replace(at, '@')
      );
    });
  };
 
  washEmails();
 
});

Cette technique, très simple à mettre en place, n'est malheureusement pas infaillible.

D'une part, il y a bien longtemps que les robots collecteurs prennent en compte un certain nombre de filtres de substitutions de chaînes de caractères. Évitez donc d'utiliser les chaînes de caractères [at] ou [dot] comme c'est encore si souvent le cas.

D'autre part, cette technique de substitution est souvent considérée, et à juste titre, comme ne répondant pas aux standards d'accessibilité. Il en va de même pour toutes les variantes : utilisation d'un script intrusif d'obfuscation, remplacement par une image, etc ...

Pendant de nombreuses années, la technique « transparent name mangling » fut considérée comme étant suffisamment efficace. Cette technique consiste simplement à remplacer chaque caractère par son équivalent numérique dans la table des entités de caractères HTML.

Notre avis est clair : cette technique permet uniquement de ralentir les robots dans leur quête mais ne corrige en aucun cas le problème... Dans ce contexte, la technique utilisée par eZ Publish reste temporairement la plus efficace à condition de choisir des chaînes de caractères de remplacement pertinentes !

Protection des adresses e-mails contre le SPAM sur eZ Publish

A propos

Bienvenue sur le Workshop de l'agence interactive Maecia : notre espace d'actualités, de veille et de publications sur les nouvelles tendances d'Internet. Vous y trouverez aussi le fruit de certains de nos développements techniques que nous mettons à disposition de la communauté. Découvrez notre vision du web et surtout n'hésitez pas à prendre la parole !