Protéger son email contre le spam
Comment protéger son adresse email sur internet pour prévenir les spams ?
Vous trouverez sur cette page quelques méthodes astucieuses pour limiter l’accès des robots spammeurs ou spambots à vos adresses email et éviter ainsi la pollution de vos boîtes de messagerie.
Comment les spammeurs ont-ils accès à votre adresse et la capturent-ils ?
Comment éviter que votre adresse email se retrouve dans une base de données de spam ?
1) Collecte d’emails : comment les spambots traquent les adresses ? Les méthodes utilisées par les spammeurs.
La collecte d’emails ou moissonnage d’emails, selon le terme anglais « email address harvesting« , est l’acquisition en masse d’adresses email à 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 email.
Tour d’horizon des différentes méthodes utilisées par les spammeurs pour récupérer des adresses email sur internet :
Moissonnage des groupes de discussions
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 email.
Génération automatique d’adresses (aléatoire)
Le spammeur choisit un domaine cible et va tenter de déterminer les adresses email existantes.
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 email 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 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, utilisez une adresse email alternative, cela évitera que votre adresse email personnelle ou professionnelle soit polluée.
Achat – Revente
De nombreuses sociétés revendent des listes d’adresses emails légalement et/ou illégalement constituées. Malheureusement ce type d’activité n’est pas illégal.
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 facilement récupérer.
2) Format d’une adresse email non protégée
Afin de mieux se protéger contre les attaques des robots, il est indispensable de ne pas afficher son adresse email 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.
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 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 email
Une adresse email 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.
<img src="antispam.png" with="120" height="20" alt=" Contactez-nous par email à : email@exemple.com">
Pour les visiteurs du site Web, l’image s’affiche dans le navigateur comme une image classique, de la manière suivante :
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 text) 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 par les robots. 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/logiciel 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 apparaisse visuellement sur la page, il est nécessaire de combiner cette méthode à celle de l’image.
4) Cacher/masquer une adresse email 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 à 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 email grâce à une composition dynamique de l’adresse en JavaScript.
• Masquer une adresse email en encodant les caractères
L’encodage de caractères utilisé pour masquer les adresses emails dans le code source est basé sur les entités html, sur le code HEX, ou encore sur l’Encodage-pourcent d’URL.
@ = @
. = . (point)
Voir http://4umi.com/web/html/characterspecial.php
Ceci s’affichera ainsi dans le code source :
<p> Contactez-nous par email à :
<a href="mailto:email@exemple.com"> email@exemple.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 email 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 sera donc écrite de la façon suivante en hexadecimal (HEX) :
<p> Contactez-nous par email à :
<a href=
"e m a i l @ e x e m p l e . c o m"
>Adresse e-mail</a>.
</p>
Encodeur/ Décodeur en ligne : https://cryptii.com/
Symboles HTML, entités et codes de caractères ASCII : https://www.toptal.com/designers/htmlarrows/
Une autre méthode pour protéger son adresse email contre les spams est d’utiliser l’encodage URL 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.
• Masquer une adresse email en ajoutant des caractères en HTML ou CSS
Il est également possible de masquer son adresse email en ajoutant des caractères inutiles dans le code source. 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 les commentaires HTML ne sont pas visibles : l’internaute peut donc voir l’adresse email en clair sans les commentaires.
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 email dans le navigateur pour qu’elle soit visible par l’internaute, tandis 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 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 email
Il est possible également d’avoir recours au CSS pour inverser une suite de caractères, et plus précisément l’affichage des caractères d’une adresse email. 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 lire l’adresse email à l’envers moc.elpmexe@liame dans le code source. Cependant, 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 vus par l’internaute correctement dans le navigateur.
NB : les spambots les plus perfectionnés sont capables de décoder cela.
• JavaScript
JavaScript simple
Principe : utiliser une fonction JavaScript afin d’afficher l’adresse uniquement au moment du rendu par le navigateur : le JavaScript est traité par le navigateur 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>
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 : le 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. Il est possible de lancer l’exécution du script après un clic.
5) Chiffrer une adresse email
JavaScript permet également de chiffrer son adresse email pour la protéger des spams, grâce à un algorithme de chiffrement par rotationdes plus courants, le ROT13 (https://fr.wikipedia.org/wiki/ROT13), qui peut facilement être mis en œuvre avec quelques lignes de code en JavaScript.
<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 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 préférez pour cela utiliser 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 formulaires de contact. Afin d’éviter que les robots ne remplissent automatiquement vos formulaires, pensez à les protéger à l’aide de captchas.