[spip-dev] [Validation des Emais] ecrire/inc/filtres.php function email_valide()

Bonjour.

Ca faisait un petit temps que ça me démangeait, et je pose aujourd'hui une question ouverte :

"Doit-on restreindre la permissivité de SPIP concernant la vérification des emails ?"

Je pense que la grande majorité des SPIPeurs ont un usage sur Internet (et non local) de SPIP (mais je me trompe peut être).

Aujourd'hui, sous couvert de respect de la RFC 822 (qui en plus n'est pas "parfaitement" respectée cf. tests), SPIP autorise dans les formulaires CVT qui vérifient les mails, ou simplement les utilisateurs à s'enregistrer avec par exemple les adresses :
- utilisateur@domaine.f
- utilisateur@domaine.frfrfrfrfrfr
- d@d
- &&?spip@domaine.fr
qui me semblent clairement devoir être rejetées.

La norme est TRES permissive :
Jun 20 21:29:32 <cerdic> "Par exemple, l'adresse complètement farfelue: #+^-`&%_=|/|_?=!§{}$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$@mail.com est, suivant la norme, une adresse parfaitement valide."

Doit-on pour autant autoriser des adresses de ce type ?? A ce moment là, à quoi sert de faire des vérifications si TOUT passe et que RIEN n'est filtré ??

J'ai ouvert un Ticket :
http://trac.rezo.net/trac/spip/ticket/1788

J'ai créé un filtre de test qui contient plus d'explications :
http://zone.spip.org/trac/spip-zone/browser/core/tests/filtres/email_valide.php?rev=29311

Est-ce qu'on ne devrait pas sinon avoir 2 arguments pour la fonction actuelle ? email_valide($mail,$portee) où portée serait NULL(local+Internet) et Internet (pas de local)

Je sais pas trop s'il fallait poster ici ou ailleurs, mais maintenant c'est posté partout ! :smiley:

Bonne journée.

D'autres se sont déjà évidemment posé la question.

http://www.linuxjournal.com/article/9585

Je continue de penser qu'être trop permissif (même en respectant les règles) ne sert à rien, et qu'autant ne pas vérifier.

En revanche, cet article introduit des idées intéressantes je pense :
- vérification du nom de domaine via la fonction PHP checkdnsrr (partant de la RFC 2821 3.6)
- références à des RFC plus détaillées : RFC 2822 3.4.1 / RFC 2822 3.2.4 / RFC 1035 2.3.1 / RFC 2821 4.5.3.1 / etc.

Et il comporte du code PHP de test ! :slight_smile: