[php] Sécurité fonction mail()
jbof74
Messages postés
123
Statut
Membre
-
le père -
le père -
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
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
A voir également:
- [php] Sécurité fonction mail()
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Fonction si et - Guide
- Mode securite - Guide
- Windows live mail - Télécharger - Mail
- Publipostage mail - Accueil - Word
6 réponses
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.
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.
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
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
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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