Description d’une technique anti-spam, le « plus-addressing », qui a malheureusement ses limites car la plupart des sites Web ne respectent pas complètement les normes.
Vous connaissez probablement la fonctionnalité appelée « [plus-addressing->http://en.wikipedia.org/wiki/E-mail_address#Plus_.28or_Minus.29_addressing]« [[Il existe aussi le minus-addressing, qui utilise le signe moins, principalement utilisé avec le serveur mail Qmail]] qui consiste à ajouter un signe plus « + » à la suite de votre identifiant, juste avant l’arrobas, dans votre adresse email. Elle a été popularisé par [Google->http://www.google.com/] avec ses comptes [gmail->http://mail.google.com/].
Par exemple, si vous avez une adresse toto@gmail.com, vous pouvez aussi utiliser toutes les variantes du type toto+[un truc]@gmail.com car les messages arriveront dans votre boite toto@gmail.com.

Pour quoi faire ?

Quel intérêt me direz vous ?
Tout simple, cela permet de filtrer vos messages très facilement sans avoir à créer une nouvelle adresse dès que vous désirez vous inscrire sur un site.

Par exemple, pour vous inscrire sur eXgobz, entrez simplement votre adresse toto+exgobz@gmail.com. Ainsi il vous sera facile de créer un filtre sur tous les messages provenant d’exgobz. Cerise sur le gâteau, si exgobz revend illégalement votre adresse à trucmuche, et que vous recevez un spam de trucmuch chez qui vous ne vous êtes jamais volontairement inscrit, le coupable de la fraude sera vite découvert puisque l’adresse à laquelle vous aurez reçu le mail de trucmuche sera toto+exgobz@gmail.com.

Quand plus rien ne marche et que ça fait ch***

Bref, que du bonheur, sauf que, bien que le caractère plus soit autorisé dans les adresses email par la [RFC 2822->http://tools.ietf.org/html/rfc2822][[Chapitre 3.4 : [Address Specification->http://tools.ietf.org/html/rfc2822#section-3.4] ]] qui spécifie l’utilisation des mails, il arrive fréquemment que vous ne puissiez pas utiliser cette syntaxe.

Si vous l’utilisez, vous avez en effet probablement constaté que de nombreux sites ont du mal avec ce signe plus.

Il y a ceux qui vérifient la validité des adresses email entrées dans leurs formulaires et qui interdisent le signe plus. On n’y peut pas grand chose, à part faire un message au webmestre pour lui indiquer l’URL de la RFC et lui dire que, du coup, on ne s’inscrira pas sur son site pourri.

Mais il y a aussi ceux qui l’acceptent et vous plantent plus loin.

Prenez par exemple une inscription à des alertes de cours de bourse sur un site[[pas de noms, désolé, je ne peux pas me le permettre, c'est un client]], vous devez saisir votre email pour être prévenu de l’évolution des cours de certaines valeurs et vous saisissez votre adresse avec la syntaxe plus.
Ensuite, le site vous envoie un message de confirmation par mail avec une URL à cliquer pour valider votre inscription. Et là l’url est par exemple
http://www.monsite-de-bourse-en-ligne.com/confirmation.php?email=toto+bourse@gmail.com

Jamais vous ne pourrez confirmer. En effet, le signe plus de votre email sera considéré comme un espace dans ce contexte d’url.

Pour contourner ce problème, remplacez manuellement le + par son équivalent échappé « %2B », ce qui vous donnera http://www.monsite-de-bourse-en-ligne.com/confirmation.php?email=toto%2Bbourse@gmail.com

{{{Comment résoudre le problème ?}}}
Si vous êtes webmestre et que vous gérez un site qui pose ce genre de problème, vous voudrez probablement le résoudre, enfin j’espère.

Pour cela, rien de plus simple. Tout est dans le mécanisme de vérification de votre mail.

Si vous utilisez un CMS[[Content management system, système de gestion de contenu]] ou d’une utilisation de librairies qui ne vérifient pas correctement les emails, il est probable que celle-ci ait une librairie spécifique à la vérification que vous pouvez modifier dans le cas d’un open-source.

Dans le cas d’un CMS propriétaire à code source fermé, ou que vous ne désirez pas modifier, remontez ce bug – car c’en est bien un – à son éditeur ou à la communauté.

Dans le cas d’un site développé intégralement par vous même, je vous conseille de faire vos vérifications en utilisant des [expressions régulières->178] plutôt que des structures IF…ELSE… imbriquées.
Vous pourrez modifier les règles de vérifications sans avoir à modifier la logique de votre code.
Une modification de la chaine de l’expression régulière suffit.
De plus vous trouverez sur le Web, des expressions régulières déjà faites[[Par exemple [http://regexlib.com/default.aspx] mais cherchez « regular expression » sur [un moteur de recherche->http://www.google.com/search?q=regular+expression] ou dans [wikipedia->http://en.wikipedia.org/wiki/Regular_expression] et vous trouverez probablement votre bonheur.]] pour de nombreux types de données, ce qui vous facilitera la vie.

Enfin, pour notre problème d’URL invalide dans le mail de confirmation, il y a une solution toute simple : systématiquement encoder les paramètres de l’URL avec une fonction telle que [urlencode()->http://fr2.php.net/manual/en/function.urlencode.php] en [php->http://php.net/] qui vous donnera alors une URL de la former suivante : http://www.monsite-de-bourse-en-ligne.com/confirmation.php%3Femail%3Dtoto%2Bbourse%40gmail.com
Certes, c’est moins joli côté paramètres, mais au moins vous avez l’assurance que votre URL fonctionnera.

Notez que je propose l’encodage des paramètres uniquement et non de l’URL entière pour des raisons de lisibilité pour le destinataire du mail. Si on encode la partie « domaine » de l’URL comme cela : http%3A%2F%2Fwww.monsite-de-bourse-en-ligne.com%2Fconfirmation.php%3Femail%3Dtoto%2Bbourse%40gmail.com , l’utilisateur risque de ne pas reconnaitre le site ni le protocole et d’avoir peur que ce soit une sorte de [hammeçonnage->http://fr.wikipedia.org/wiki/Hame%C3%A7onnage][[Fishing]] (je pars du principe utopique que les utilisateurs sont de plus en plus sensibles à ces sujets, mais c’est une autre discussion). De plus, la partie « domaine » est une partie prévisible, c’est vous qui la définissez contrairement aux paramètres saisis par l’internaute. Il est donc peu probable qu’elle contienne des caractères problématiques. C’est en tout cas à vous d’y faire attention.

Laisser un Commentaire

RSS | XHTML | CSS