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 :
1
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 :
1 2
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.
















