Page 1 sur 1
FILTER_VALIDATE_EMAIL
Posté : 25 mai 2009, 14:52
par AlainAlpe
Bonjour,
j'ai vu qu'il existait une faille de sécurité en utilisant le filtre
filter_var('
[email protected]', FILTER_VALIDATE_EMAIL)
Je suis en PHP Version 5.2.9 : cette faille est corrigée ??
Merci de vos réponses
Alain
Posté : 25 mai 2009, 16:18
par geoffroy
Il semblerait que des
bugs aient été relevés par la communauté au niveau du code source de PHP en version 5.2.5. En effet, la regexp qui se charge de valider les adresses e-mails n'est pas complètement juste. D'autre part, cette fonction ne valide pas lesTLDs, c'est à dire que si ton adresse est
[email protected] alors elle sera validée bien que .xxx ne soit pas un TLD valide. Il n'existe donc pas de véritable solution pour valider pleinement une adresse e-mail. Mais au final, filter_var() reste une méthode plus sûre qu'une regexp écrite à la main et plus approximative.
Source
Posté : 25 mai 2009, 16:49
par stopher
Slt ,
il y a effectivement plusieurs bug remontés au niveau de filter_var , pour la faille de sécurité , il s'agissait di fait que l'on pouvait injecter du code dans les entetes d'un mail , car filter_var ( pour les emails ) ne voyait pas le retour à la ligne \n.
Mais c'était pour les version 5.2.1 et 5.2.2 ... , j'ai cherché , mais je n'ai pas trouvé d'autres bugs ( d'injection de code ) non corrigés pour la version 5.2.9
La liste est
ici
Posté : 25 mai 2009, 17:02
par AB
On ne peux pas appeler ça une faille de sécurité... il n'y a aucune sécurité en jeu dans l'utilisation de cette fonction.
C'est juste pour valider grossièrement une adresse email en regardant si elle est conforme à la norme. Mais tu peux très bien écrire une adresse email qui ne corresponde à rien et qui soit conforme. Et même le regex le plus sophistiqué n'y verra rien.
Tu peux appliquer cette fonction et pour vérifier les domaines, la compléter par
http://www.commentcamarche.net/faq/suje ... resse-mail
ça limite encore un peu mais encore une fois aucune méthode n'est infaillible donc pas la peine d'en rajouter des tonnes.
Le plus efficace pour une inscription dans un forum par exemple est d'envoyer un message de validation à l'adresse email indiquée. Mais bon le visiteur peut toujours en changer par la suite ou donner une adresse temporaire...
Posté : 25 mai 2009, 17:13
par AB
Slt , il y a effectivement plusieurs bug remontés au niveau de filter_var , pour la faille de sécurité , il s'agissait di fait que l'on pouvait injecter du code dans les entetes d'un mail , car filter_var ( pour les emails ) ne voyait pas le retour à la ligne \n.
J'ai répondu sans voir ta réponse ... mais je ne comprend pas comment on pourrait injecter du code en utilisant la fonction if(filter_var($e_mail, FILTER_VALIDATE_EMAIL) !== false)... ?
Posté : 25 mai 2009, 17:48
par stopher
Au moment ou la faille était là ,
imaginons , une adresse mail du type : mail + injection
Si la vérification de l'adresse mail ne parvient pas à détecter l'injection , le mail finale sera construit avec l'injection .
Donc , le danger se trouve dans le fait que si l'adresse mail est vérifier uniquement pas filter_var( ... ) , et rien d'autre , il est alors possible d'utiliser l'envoi de mail pour envoyer du spam , à partir du moment ou l'on peut injecter du code dans les entêtes des mails , on peut en faire un peu ce que l'on en veux ..
Le risque est donc principalement de devenir spammeur à son insu ...
Posté : 25 mai 2009, 19:01
par AB
Au moment ou la faille était là ,
imaginons , une adresse mail du type : mail + injection
Si la vérification de l'adresse mail ne parvient pas à détecter l'injection , le mail finale sera construit avec l'injection .
Donc , le danger se trouve dans le fait que si l'adresse mail est vérifier uniquement pas filter_var( ... ) , et rien d'autre , il est alors possible d'utiliser l'envoi de mail pour envoyer du spam , à partir du moment ou l'on peut injecter du code dans les entêtes des mails , on peut en faire un peu ce que l'on en veux ..
Le risque est donc principalement de devenir spammeur à son insu ...
Ah ben oui mais faut pas pousser non plus
Il y a aussi le nom à protéger si l'on veut remplir le From: ... donc bien une petite fonction pour supprimer les \n et \r , alors pourquoi ne pas l'appliquer également à la récupération de l'adresse mail avant de la passer à filter_var().
J'ai pas lu toute la doc FILTER_VALIDATE_EMAIL en détail mais dans mes souvenirs c'était pour vérifier la compatibilité à une norme et remplacer un regex (c'est comme cela que je l'utilise), et je ne me rappelle pas avoir lu quelque part qu'elle permettait d'éviter des injections. A postériori je comprend mieux pourquoi
Donc voilà je ne voyais pas de pb de sécurité dans son utilisation puisque je ne l'utilisait pas pour contrer les injections

Posté : 25 mai 2009, 20:00
par Nagol
si y'avait que ça comme problème avec le smtp, ca reste un des protocoles les plus dépassé qui soit en terme de sécu et d'utilisation, les smtp souvent encore aujourd'hui ne supporte ni ssl ni de système d'auth, n'ont pas de scannage de virus appliqué, ou de spam control, alors bon... c'était juste pour dire que les failles de sécu sont partout, la première étant l'utilisateur bobby avec son password 123 écrit sur un post it sur son post, pensons donc à sécuriser les cervelles de nos utilisateurs aussi.