Les Allergies
Alimentaires
Posez votre question Signaler

[php] Sécurité fonction mail()

jbof74 83Messages postés 24 novembre 2008Date d'inscription 17 juin 2011Dernière intervention - Dernière réponse le 13 août 2009 à 00:22
Bonjour à tous,
Une simple question de sécurité en php : est-ce qu'il est utile de rendre inoffensif les caractères html pour l'envoie d'un email par la fonction mail(). Je vous donne la partie du script où je récupère les données inscrite par le visiteur puis où j'envoie le mail.
<?php
/* Je récupère les infos entrés par l'utilisateur */
$objet=htmlspecialchars($_POST['objet']);
$message=htmlspecialchars($_POST['message']);
$prenom=htmlspecialchars($_POST['prenom']);
$nom=htmlspecialchars($_POST['nom']);
$mail=htmlspecialchars($_POST['mail']);
/* création du header de l'email */
$header = 'From: "' . $prenom . ' ' . $nom . '"' . $mail . "\n";
$header .= 'Reply-To: ' . $mail . "\n";
$header .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$header .='Content-Transfer-Encoding: 8bit';
/* envoie l'email en récupérant un code d'erreur pour après afficher si ca a marché .... */
$reussi = mail('fake_fake@yahoo.fr', $objet, stripslashes($message), $header);
?>
A+
JB
Lire la suite 

[php] Sécurité fonction mail() »

6 réponses
Réponse
+0
moins plus
Remonte STP ^^
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour

Pas besoin de htmlspecialchars. Cette fonction n'a aucun rapport avec les emails ni avec la protection de quoi que ce soit, elle sert juste à transformer certains caractères en entités HTML, par exemple < en & lt;
On la voit souvent employée (y compris sur ce forum) avec un rôle de protection, c'est une erreur, elle ne sert qu'à avoir un affichage HTML correct.
Dans ton cas, comme tu envoies un mail en plain/text et non pas en HTML, tu récupérerais des mails avec des entités HTML à la place des < > et autres &. Fais l'essai, tu verras bien.
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour ta réponse,

En faite le seul problème pour moi c'était si il y avait un ' ou un " dans un des champs, qu'est-ce qui se passait ? Donc là j'ai aucun problème si j'ai bien compris. Si il y a autre chose à faire pour sécuriser ce petit script dis le moi.

A+
JB
Ajouter un commentaire
Réponse
+0
moins plus
Je vois aussi que tu utilises un stripslashes, sais-tu pourquoi ? Normalement, si tu as magic_quotes_gpc actif, tu en as besoin sur toutes les données POST, (et pas seulement sur le message). S'il est inactif, il n'en faut pas du tout.
En ce qui concerne la sécurité, je ne suis pas spécialiste,mais vérifie le contenu des variables $nom, $prenom et $mail. Par exemple, vérifie qu'elles ne contiennent ni \r ni \n ni ; .Ça évite que quelqu'un injecte un header que tu n'as pas prévu.
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
Désolé pour l'absence, j'étais en vacances et j'y retourne demain !
Bon j'ai regardé ce que tu m'a dit. En faite je suis chez online.net et je n'ai pas accès au fichiers de config du server php donc je ne suis pas sûr que l'option de protection est activée. En faite j'ai juste rajouté des addslashes et c'est tout. Bon, je recoie comme même des mail avec des antislashes mais ca me suffit. Sinon je fais un test des IP pour éviter le spaming en interdisant l'envoie de mail plus d'une fois toutes les 10 minutes. Est-ce asser au niveau sécurité pour ce script. Si oui c'est résolu.

Merci beaucoup
JB
Ajouter un commentaire
Réponse
+0
moins plus
Si tu as des antislashes en trop, c'est qu'il NE FAUT PAS mettre addslashes.
En ce qui concerne la sécurité elle-même (qui n'a aucun rapport avec addslashes) malheureusement je ne suis pas spécialiste, je ne peux pas t'en dire plus que ce que je t'ai déjà dit.
Ajouter un commentaire
Ce document intitulé « [php] Sécurité fonction mail() » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?