Vous avez développé un formulaire d’envoi par courriel utilisant la fonction mail()? Si oui, avez-vous pensé à vous protéger des injections d’en-têtes, lesquelles peuvent faire de votre beau petit script de 10 lignes un relai de spam considérable? Non? Qu’attendez-vous?
Comment les spammers s’y prennent?
Très simple! Il ne font qu’entrer un truc du genre dans un champ de votre formulaire :
email@domaine.com \n CC: spam1@domaine.com, spam2@domaine.com...
Les en-têtes e-mail étant très sensibles, elles considèrent le saut de ligne (\r) ou les nouvelles lignes (\n) explicites comme le début d’une nouvelle directive (ici, l’insertion d’une liste d’adresses en copie-conforme). Voyez une multitude d’exploit ici.
Comment s’en protéger?
Encore une fois, rien de plus facile. Dans votre validation, vous n’avez qu’à y aller d’une petite expression régulière sur les champs soumis :
if ( eregi("(\r|\n)", $_GET['nom']) || eregi("(\r|\n)", $_GET['email']) ) exit("Va-t'en, spammer!");
N’oubliez pas de traiter chacun des champs qui sont utilisés dans la construction des en-têtes (nom, courriel, format, charset, etc.) de votre message.
Commentaires Facebook
3 commentaires pour “Protéger la fonction mail() des injections d’en-têtes”
Ajouter un commentaire
Additional comments powered by BackType
Twitter @emilegirard
Mots-clefs
Ailleurs
- 100% Hockey
- AccesOWeb
- Alsacréations
- Canadiens de Montréal
- Carl Charest
- Carl-Frédéric De Celles
- Chrystian Guy
- Debbie Rouleau
- Dominic Arpin
- Eric Baillargeon
- Famille Enfants Parents
- Goudaille
- Histoires de Geek
- Il Blogue
- Influenceur – Blogue Tendance
- Martin Petit
- Michel Dumais
- Nicolas Langelier
- Patrick Lagacé
- PhotosMax
- Samuel Parent
- Sébstien Goulet
- Sportnographe
- Stéphane Guérin
- Stéphane Jose
- Tchuvak’s Life
- Yannick Manuri
- Ze Canada

molaram a dit :
Sur mon blogue : Protéger la fonction mail() des injections d’en-têtes http://bit.ly/2A9MIp
This comment was originally posted on Twitter
Pascal Dubreuil a dit :
Pour rajouter de la sécurité pour l’envoie d’un formulaire tu peux aussi vérifier la provenance de l’internaute et le bloque si c’est appeler a partir d’un autre site que le tien pour éviter le SPAM
Pascal Dubreuil a dit :
Mon commentaire précédant n’a pas marcher deuxième essai :
A ajouter avant l’envoie du formulaire :
if(!eregi(« estrade.ca », $_SERVER['HTTP_REFERER'])) die (« Va-t’en, spammer! »);
je pense que l’espace commentaire enlève les balise d’ouverture et fermuture PHP