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.

1 Tweet

3 commentaires pour “Protéger la fonction mail() des injections d’en-têtes”

  • 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

  • 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

Ajouter un commentaire

Additional comments powered by BackType

Twitter @Molaram

RSS Liens partagés

Mots-clefs

appartement blogosphère blogues branchez-vous buddypress canadiens cinéma design délire Développement eBay entraînement facebook fanatique fanatiqueca google hockey humour image internet iphone maths molson musique nostalgie personnel PHP politique pub radio société spam sport techno technologie twitter télé télévision utopie viral voyage Web Wordpress youtube yulblog

Ailleurs

Méta