Aller au contenu

Aide pour PHP envoi mail


Mr Wolfe

Messages recommandés

VIP, Ours des Pyrénées 100% AOC, Posté(e)
Méthylbro VIP 1 038 messages
Ours des Pyrénées 100% AOC,
Posté(e)

rajoutes un $ devant le _POST ^^

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant
Membre, Serial shooter, 58ans Posté(e)
Mr Wolfe Membre 5 564 messages
58ans‚ Serial shooter,
Posté(e)

Argh... je fais un beau boulet sur le coup...

J'ai copié-collé direct, je piges pas pourquoi il m'a bouffé ce $...

Bref, j'ai même pas vérifié la syntaxe du coup.:o°

Donc j'ai plus d'erreur.... par contre ça filtre vachement bien, je ne reçoit plus rien :snif:

Lien à poster
Partager sur d’autres sites

VIP, Ours des Pyrénées 100% AOC, Posté(e)
Méthylbro VIP 1 038 messages
Ours des Pyrénées 100% AOC,
Posté(e)
Enfin, juste pour répondre a Lapinkiller, la fonction html_entities() ne sert absolument pas à filtrer des données en entrée. Mettre des html_entities() partout est une erreur. Cette fonction n'est utile que pour formater une chaîne de caractères.

D'ailleurs si tu regardes bien la documentation de PHP, cette fonction n'est pas classée dans le chapitre "Filter Fonctions" à l'instar de filter_var() mais dans un chapitre "Fonctions sur les chaînes de caractères".

Y'a une grosse différence à mon sens :)

et bien tu te trompe, ca peux servir à se protéger de code javascript par exemple

ce n'est pas la solution à tout mais dans certains cas elle peut être utile pour protéger ;)

Très bien, dans ce cas je vais prendre un exemple simple pour casser ce mythe. html_entities() n'est pas une méthode permettant de se protéger des attaques de type XSS/Cross Site Scripting.

Soit :

<?php

$_GET['a'] = "#000' onload='alert(document.cookie)";

?>

Alors cela ouvre potentiellement des failles comme :

<?php

$href = htmlEntities($_GET['a']);

print "<body bgcolor='$href'>"; # résultat: <body bgcolor='#000' onload='alert(document.cookie)'>

?>

Dans ce cas vous pourrez certes utiliser l'option 'ENT_QUOTES', afin de s'assurer qu'aucun XSS est possible et que votre application est sécurisée:

<?php

$href = htmlEntities($_GET['a'], ENT_QUOTES);

print "<body bgcolor='$href'>"; # résultat: <body bgcolor='#000' onload='alert(document.cookie)'>

?>

Cependant l'option ENT_QUOTES ne vous protège pas contre l'évaluation javascript dans certains attributs à l'instar de l'attribut href de la balise a. Lorsque vous cliquez sur le lien ci-dessous, la portion de JavaScript sera exécutée.

<?php

$_GET['a'] = 'javascript:alert(document.cookie)';

$href = htmlEntities($_GET['a'], ENT_QUOTES);

print "<a href='$href'>link</a>"; # résultat: <a href='javascript:alert(document.cookie)'>link</a>

?>

C'est le premier exemple qui m'est venu, mais en se penchant plus longuement sur la question tu t'apercevra rapidement que la liste est longue. Très looongue !

Lien à poster
Partager sur d’autres sites

Membre, Le Dieu Lapin, 36ans Posté(e)
Lapinkiller Membre 10 149 messages
36ans‚ Le Dieu Lapin,
Posté(e)

je l'ai dis, html entities n'est PAS la solution a tout ;)

Lien à poster
Partager sur d’autres sites

Membre, Explorateur de Nuages, 47ans Posté(e)
Pheldwyn Membre 25 236 messages
47ans‚ Explorateur de Nuages,
Posté(e)

La valeur $_POST['mail'] n'est pas filtrée. Or en injectant du code malicieux, on pourrait se servir de ton formulaire pour envoyer des mails à l'adresse de notre choix, et non plus à monmail@toto.fr.

Oui mais ce n'est pas $_POST['mail'] qui est utilisée dans ce cas comme adresse de destination ... elle ne sert qu'à être ajoutée au message. L'adresse de destination est en dure dans le code.

Lien à poster
Partager sur d’autres sites

VIP, Ours des Pyrénées 100% AOC, Posté(e)
Méthylbro VIP 1 038 messages
Ours des Pyrénées 100% AOC,
Posté(e)

La valeur $_POST['mail'] n'est pas filtrée. Or en injectant du code malicieux, on pourrait se servir de ton formulaire pour envoyer des mails à l'adresse de notre choix, et non plus à monmail@toto.fr.

Oui mais ce n'est pas $_POST['mail'] qui est utilisée dans ce cas comme adresse de destination ... elle ne sert qu'à être ajoutée au message. L'adresse de destination est en dure dans le code.

$_POST['mail'] est utilisé dans les en-têtes du mail sans être filtré. On pourrait par exemple s'amuser à donner à $_POST['mail'] une valeur du genre "\nRCPT TO:<other@domain.tld>\n\n.\nmon message\nQUIT" ... Après je ne connais pas les RFC concernant SMTP par coeur. Mais quelque chose dans ce gout là permet de modifier les en-têtes de ton messages et d'en faire ce que tu veux. Directement depuis une injection.

J'avais écris un tutoriel pour expliquer les rudiments d'un envoi de mail ici : http://methylbro.titaxium.org/post/2009/07/01/le-protocole-smtp.

Lien à poster
Partager sur d’autres sites

Annonces
Maintenant

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×