Protéger son adresse e-mail contre le spam

Vous trouverez sur ce guide quelques méthodes astucieuses et bonnes pratiques pour lutter contre le spam et éviter que vos adresses e-mail ne soient récupérées sur des listes de spam :

  • Limiter l’accès des robots spammeurs (ou spambots) à vos adresses e-mail et et leur indexation dans leurs répertoires / listes.
  • Eviter la pollution de vos boîtes de messagerie, en même temps que les éventuelles tentatives d'escroquerie et de vol de données.
  • Comment les spammeurs ont-ils accès à votre adresse e-mail et la capturent-ils ?
  • Comment éviter que votre adresse e-mail ne se retrouve dans une liste de diffusion / base de données de spam ?
  • Comment protéger son adresse e-mail sur internet pour prévenir toute récupération illicite et éviter les spams ?

 

1) Collecte d’emails : comment les spambots traquent les adresses email ? Les méthodes utilisées par les spammeurs.

La collecte d’adresse e-mail, ou moissonnage d’adresses e-mail selon le terme anglais « email address harvesting », est l’acquisition illicite et en masse d’adresses e-mail à diverses fins, notamment publicitaires (spam), phishing, etc.

Des programmes informatiques spécialisés, appelés robots moissonneurs d’emails ou spambots, passent en permanence Internet au peigne fin ainsi que le contenu des sites web, les formulaires et listes de contacts, les forums et les réseaux sociaux à la recherche d’adresses e-mail à récupérer.

Voici un tour d’horizon des différentes méthodes utilisées par les spammeurs pour récupérer des adresses e-mail sur Internet :

Moissonnage des groupes de discussions - forums
Les groupes de discussions fourmillent d’adresses emails, et il est très facile pour les spammeurs de les récupérer.

Moissonnage du web
Il s’agit probablement de la technique la plus utilisée : le spammeur utilise des programmes informatiques “robots” qui analysent toutes les pages web à la recherche d’adresses e-mail. Dès qu'une adresse e-mail est visible sur un site internet, elle est identifiée et récupérée pour être enregistrée sur des listes de diffusion de spam.

Génération automatique d’adresses e-mail (aléatoire)
Le spammeur choisit un domaine cible et va tenter de déterminer aléatoirement les adresses email existantes (généralement il essaie avec des adresses communément utilisées telles que par exemple admin@, administrator@, hostmaster@, webmaster@, postmaster@, contact@, etc.).

Attaques par virus
Les spammeurs ont de plus en plus recours à des virus dont l’unique but est de récupérer une liste d’adresses e-mail contenues dans des fichiers ou dans le carnet d’adresses de l’ordinateur infecté. Une fois la liste volée, le virus peut envoyer des spams lui-même, ou bien envoyer la liste de contacts pour qu’elle soit utilisée ou revendue.

Piratage
Lorsque des pirates s’introduisent dans des systèmes informatiques, ils tombent parfois sur des listes d’adresses email qu’ils ne se gênent pas de récupérer et de revendre.

Activité légale parallèle
Il arrive qu’un site web ayant une activité tout à fait légale soit édité et contrôlé par un spammeur. Méfiez-vous des sites douteux, préférez une adresse e-mail alternative, cela évitera que votre adresse email personnelle ou professionnelle soit polluée et récupérée.

Achat – Revente de listes de diffusion
De nombreuses sociétés revendent des listes d’adresses email légalement et/ou illégalement constituées. Malheureusement ce type d’activité n’est pas illégal.

Note :
- Les robots ou spambots recherchent généralement le caractère @ pour identifier une adresse email, mais les plus élaborés incluent souvent d’autres orthographes comme [at], (at), [AT] ou (AT), [point], (point), [POINT] ou (POINT) dans leur recherche :

email@exemple.com
email[at]exemple.com
email[AT]exemple.com
email(AT)exemple[POINT]com
etc.

- Le format email HTML mailto « mailto:email@exemple.com » permet également aux spambots d’identifier sans ambiguïté une adresse email qu’ils peuvent ainsi facilement récupérer.

 

2) Format d’une adresse e-mail non protégée

Afin de mieux se protéger contre les spammeurs et les attaques des robots, il est indispensable de ne pas afficher son adresse e-mail en clair sur internet et sur son site web.

Généralement, les sites web utilisent un dispositif simple et facilement détectable par les robots pour afficher une adresse électronique, le mailto :

<p> Contactez-nous par email à l'adresse suivante
<a href="mailto:email@exemple.com">email@exemple.com</a>
</p>

Du point de vue de l’internaute, c’est la meilleure option pour rendre visible et accessible une adresse email sur internet. Du point de vue du spammeur, c'est aussi la meilleure option pour l'identification et la récupération lorsque l'adresse est visible en clair.

D’une manière générale les méthodes de protection d’une adresse email visent principalement à la garder visible pour l’utilisateur, tout en la rendant invisible dans le code source. Les méthodes les plus efficaces consistent donc à remplacer, masquer ou encoder l’adresse email dans le code source pour qu’elle ne soit pas visible et détectable par les robots.

 

3) Remplacer une adresse e-mail pour la rendre invisible et la protéger

Une adresse e-mail peut être facilement protégée en la remplaçant par une image ou par un lien de redirection vers le mailto.

  • Intégrer une adresse email sous forme d’image

Lorsqu’une adresse email est insérée sous forme d’image, elle reste visible par les internautes mais elle est difficile à identifier par les robots. Il existe bien quelques spambots pouvant analyser les images à l’aide de la reconnaissance optique de caractères (OCR), mais il s’agit là d’une infime minorité.

La protection sous forme d’image procure par conséquent une très bonne protection contre les spams, efficace et facile à mettre en place.

Le code HTML suivant vous permet d’intégrer une adresse email en tant qu’image sur un site web :

<a href="mailto:email@exemple.com">
<img src="https://antispam.png" width="120" height="120" alt="Contactez-nous
par email à : email@exemple.com"</img>
</a>

Pour les visiteurs du site Web, l’image s’affiche dans le navigateur comme une image classique, de la manière suivante :

Contactez-nous par email à : email@exemple.com

Attention à l’accessibilité : les informations textuelles présentées sous forme d’image ne sont généralement pas accessibles aux personnes malvoyantes. Il est donc conseillé d’inclure une description d’image sous forme de texte alternatif (Alt) qui doit cependant être protégée, car elle est en revanche facile à déchiffrer par les spambots.

 

  • Lien HTML de redirection

Cette méthode consiste à séparer l’adresse email du site web pour qu’elle ne soit pas liée aux pages scannées et indexées par les robots. Pour cela, on utilise généralement un script qui redirige les internautes vers le lien du mailto. Ceci a l’avantage d’ouvrir directement le client / application de messagerie de l’utilisateur avec l’adresse email correspondante pré-remplie dans le champ « À ». Pour les spambots, ce lien ressemble à un fichier quelconque. Cette technique de protection peut notamment être mise en œuvre à l’aide d’un lien vers un fichier PHP contenant la redirection :

<p>
Contactez-nous par email à
<a href="redirect-mailto.php">Adresse e-mail</a>.
</p>

Le contenu du fichier redirect-mailto.php est un script qui redirige vers le vrai lien mailto.

<?php
header("Location:mailto:email@exemple.com");
?>

Si vous souhaitez que l’adresse e-mail apparaisse visuellement sur la page, il est nécessaire de combiner cette méthode à celle de l’image.

 

4) Masquer une adresse e-mail grâce à l’encodage

Il est possible d’encoder son adresse email afin de la masquer en y intégrant des éléments supplémentaires, ou en compilant ces éléments dans le navigateur web à l’aide de JavaScript. Un encodage simple peut être créé notamment grâce à des entités HTML, ainsi qu’avec des encodages URL et HEX.

Les méthodes pour masquer une adresse email utilisent les fonctionnalités de commentaires, ainsi que les éléments HTML et CSS. Il existe aussi une solution plus complexe qui consiste à masquer son e-mail grâce à une composition dynamique de l’adresse en JavaScript.

  • Masquer une adresse e-mail en encodant les caractères

L’encodage de caractères utilisé pour masquer les adresses e-mail dans le code source est basé sur les entités HTML, sur le code HEX, ou encore sur l’Encodage-pourcent d’URL.

1. &commat; = @
2. &period; = . (point)

Plus d'infos :
Special Characters for use in HTML documents
w3schools HTML Unicode (UTF-8) Reference


Ceci s’affichera ainsi dans le code source :

<p>
Contactez-nous par email à :
<a href="mailto:email&commat;exemple&period;com">
email&commat;exemple&period;com</a>
</p>

Dans la mesure où les entités HTML ont été définies uniquement pour les caractères spéciaux, ni l’adresse e-mail dans sa totalité ni la référence HTML mailto ne peuvent être encodées. Une description avec l’encodage HEX est toutefois possible en utilisant le caractère Unicode correspondant ou référence numérique de caractère (NCR), qui apparaîtra ainsi :

&#numero;
L’adresse email <email@exemple.com> incluant le lien mailto ("mailto:email@exemple.com") sera donc écrite de la façon suivante en hexadecimal (HEX) :

<p>
Contactez-nous par email à :
<a href= "6d61696c746f3a656d61696c406578656d706c652e636f6d">
Adresse e-mail</a>.
</p>

Autre exemple de codage Unicode code points NCR (hexadecimal) :

<p>
Contactez-nous par email à :
<a href= "&#x65; &#x6d; &#x61; &#x69; &#x6c; &#x40; &#x65; &#x78; &#x65;
&#x6d; &#x70; &#x6c; &#x65; &#x2e; &#x63; &#x6f; &#x6d;">
Adresse e-mail</a>.
</p>

Encodeurs / Décodeurs en ligne (exemples) :
https://cryptii.com/
https://www.hexator.com/

Symboles HTML, entités et codes de caractères ASCII


Une autre méthode pour protéger son adresse email contre les spams est d’utiliser l’encodage URL (URL encoding) ou Encodage-pourcent, qui permet d’insérer dans une URL des caractères spéciaux interprétables par le navigateur. Il s’agit de combinaisons de trois caractères contenant le symbole pourcentage (%), et suivies du code hexadécimal ASCII du signe voulu à 2 caractères. L’exemple ci-après montre comment le caractère @ est masqué par cet encodage URL :

<p>
Contactez-nous par email à :
<a href="mailto:email%40exemple.com">Adresse e-mail</a>.
</p>

Attention : si cette méthode d’encodage des caractères est plutôt simple et rapide à mettre en place, elle offre aussi une protection relativement faible comparativement aux autres méthodes, car presque tous les spambots d’aujourd’hui sont capables de les décoder.
URL encoder and decoder

  • Masquer une adresse e-mail en ajoutant des caractères en HTML ou CSS

Il est également possible de masquer son adresse e-mail en ajoutant des caractères inutiles dans le code source, qui vont le "polluer". Avec cette méthode, les robots ne parviennent pas à lire et à identifier l’adresse email. Les commentaires HTML constituent notamment une solution facile pour mettre en place cette protection.

<!– 123@abc –>
<!– @def.fr –>

En insérant les commentaires de cette façon, les robots ne sont pas capables de les lire et d’identifier l’adresse email :

<p>
Contactez-nous par email à :
em<!-- 123@abc -->ail@exem<!-- @def.fr -->ple.com.
</p>

Dans le navigateur web, les commentaires HTML ne sont pas visibles sur la page : l’internaute peut donc voir l’adresse email correctement affichée et lisible en clair, sans les commentaires, dans son format "normal" : « Contactez-nous par email à : email@exemple.com. ».

La méthode CSS : cette solution consiste à insérer n’importe quel caractère sans commentaire, qui est invisible dans le navigateur grâce au CSS.

Dans cet exemple, on insère un span dans l’adresse email. Le contenu du tag n’est pas interprété par le navigateur car la propriété display est nulle (valeur = none).

<style type="text/css">
span.spamkiller {display:none;}
</style>

<p>
Contactez-nous par email à :
email<span class="spamkiller">votresuitedecaracteres</span>@exemple.com.
</p>

Cette méthode permet d’afficher la bonne adresse e-mail dans le navigateur pour qu’elle soit lisible uniquement par l’internaute, alors que le spambot lira le texte contenu dans l’élément span. Ceci permet d’utiliser une adresse email dédiée à la lutte contre le spam, ici par exemple  <emailvotresuitedecaracteres@exemple.com>, comme honeypot ou pot de miel, afin d’attirer les spammeurs sur cette adresse, les identifier et les neutraliser.

NB : cette méthode ne permet pas d’insérer un mailto.

  • Inverser l’affichage des caractères de l’adresse e-mail

Il est possible également d’avoir recours au CSS pour inverser une suite de caractères, et plus précisément dans notre cas, pour l’affichage des caractères d’une adresse e-mail. Ceci permet de saisir des adresses email avec un code source en ordre inversé (sens de lecture de droite à gauche) pour tromper les robots.

<style type="text/css">
span.ltrText {unicode-bidi: bidi-override; direction: rtl}
</style>
<p> Contactez-nous par email à :
<span class="ltrText">moc.elpmexe@liame</span>
</p>

Les robots vont donc lire l’adresse email à l’envers <moc.elpmexe@liame> dans le code source. Cependant, pour les visiteurs du site l'adresse e-mail s'affichera correctement, car la propriété CSS unicode-bidi avec la valeur bidi-override et la direction rtl (right to left) permet que tous les caractères de l’élément span soient remis dans le bon sens et lisibles au bon format par l’internaute dans le navigateur.

NB : les spambots les plus perfectionnés sont aussi capables de décoder cela.

  • JavaScript

JavaScript simple

Principe : utiliser une fonction JavaScript afin d’afficher l’adresse email uniquement au moment du rendu par le navigateur : le JavaScript est traité par le navigateur web et non par le serveur.

<script language=JavaScript>
function genereadresse(prenom,nom,reste) {
document.write("<a href=" + "mail" + "to:" + prenom + nom + "@" + reste + ">" +
prenom + nom + "@" + reste + "</a>")
}
</script>

<!-- affichage de l'adresse email sur la page web -->
<script language=JavaScript>genereadresse("john","doe","votredomaine.com");
</script>

 

Composition dynamique JavaScript

JavaScript offre une autre option pour s’assurer que l’adresse email est correctement saisie dans le navigateur. L’adresse est divisée en plusieurs parties, qui sont composées dynamiquement par le navigateur lorsque le site web est affiché, puis assemblées, et l’adresse email est alors reconstituée.

<script type="text/JavaScript">
var part1 = "email";
var part2 = Math.pow(2,6);
var part3 = String.fromCharCode(part2);
var part4 = "exemple.com"
var part5 = part1 + String.fromCharCode(part2) + part4;
document.write("Contactez-nous par email à : <a href=" + "mai" + "lto" + ":" +
part5 + ">" + part1 + part3 + part4 + "</a>");
</script>

Résultat :
« Contactez-nous par email à : email@exemple.com »

Chacune des différentes parties de l’adresse email est définie unitairement de la ligne 2 à 6.

Le caractère spécial @ est défini en deux parties : l'expression Math.pow(2,6) dans part2 désigne le nombre correspondant au caractère dans la combinaison de caractères compatibles ASCII (26 = 64). Puis ce nombre est converti en caractère grâce à part3 et à la fonction String.fromCharCode(part2).

Les étapes définies en part1 et part5 sont exécutées au sein de la ligne 7 par la fonction document.write().

L’adresse email est uniquement disponible une fois que le script est exécuté côté client par le navigateur web. Il est aussi possible de lancer l’exécution du script après un clic.

 

5) Chiffrer une adresse e-mail

JavaScript permet également de chiffrer son adresse email pour la protéger des robots et des spams, grâce à un algorithme de chiffrement par rotation des plus courants, le ROT13, qui peut facilement être mis en œuvre avec quelques lignes de code en JavaScript comme détaillé ci-dessous.

<script type="text/JavaScript">
function decode(a) {
return a.replace(/[a-zA-Z]/g, function(c){
return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) +
13)
? c : c - 26);
})
};
function openMailer(element) {
var y = decode("znvygb:wbuaqbr@ibgerqbznvar.pbz");
element.setAttribute("href", y);
element.setAttribute("onclick", "");
element.firstChild.nodeValue = "Ouvrir l'application de messagerie";
};
</script>
<a id="email" href=" " onclick='openMailer(this);'>Cliquez ici pour voir
l'e-mail de contact</a>



Explications du code :

Lignes 2 à 7 - les instructions pour le chiffrement : codage et décodage de l’adresse email.

Ligne 9 - la version chiffrée de l’adresse email servant d'exemple <johndoe@votredomaine.com> en utilisant le ROT13, qui inclut le mailto : "znvygb:wbuaqbr@ibgerqbznvar.pbz".

Lignes 8 à 13 - les fonctionnalités permettant d’ouvrir l’application de messagerie configurée par défaut par l’utilisateur et de pré-remplir le champ « À » avec l’adresse email de contact.

Le script se lance lorsqu’on clique sur le lien affiché : « Cliquez ici pour voir l’e-mail de contact » (ligne 15). Après avoir cliqué on affiche le lien « Ouvrir l’application de messagerie » (ligne 12).

NB : Vous pouvez aussi utiliser l’adresse email chiffrée comme un honeypot. Dans ce cas, le nom de domaine et l’extension ne doivent pas être chiffrés.

 

6) Le CAPTCHA

Les solutions CAPTCHA offrent une protection supplémentaire contre les spams. La plus répandue, la solution gratuite de Google : reCAPTCHA.

Notre conseil : mettez en place un CAPTCHA le plus lisible possible, et pour cela préférez l'utilisation des séries de mots dans la langue de l’internaute et faiblement déformés. Vous pouvez accepter aussi une légère tolérance aux fautes de frappe.

NB : il existe aujourd’hui des solutions capables de résoudre et passer les captchas image.

 

7) Le formulaire de contact

La dernière solution pour protéger votre adresse email sur internet est l’utilisation de formulaire de contact, qui permet de ne pas publier et afficher ses adresses e-mail sur le site web. Afin d’éviter que les robots ne remplissent automatiquement vos formulaires, pensez à les protéger à l’aide de captchas.

 

8) Adresses email alternatives

Lors de l'inscription sur certains sites, réseaux sociaux ou newsletter, évitez simplement de communiquer votre adresse email principale et préférez l'utilisation d'adresses email dédiées à cette utilisation ou d'adresses jetables.