Envoi avec mail() et la sécurité?
Bonjour, originaire de la pao, sur Mac depuis 1990, je m'intéresse (seulement) depuis quelque mois au html, CSS et php; (merci à votre site et au site du zéro qui m'ont été bien utile). J'ai donc fait un site pour un ami et j'aimerais savoir si ce script est sécurit ou si je dois rajouter certaines conditions pour éviter les injections ou autre désagréments. Tout fonctionne pour le moment, mis à part le header que je n'ose modifier...
Voici donc le script récupéré et modifié:
### Modéré car non mis en forme ###
Réponses apportées à cette discussion
Bonjour,
Peux-tu nous redonner ton code en utilisant l'icône approprié pour le mettre en forme stp ?
Merci :)
page de traitement des données
<? //on rend innofensives les données (seulement le HTML ici) foreach($_POST as $champ=>$valeur) //on prépare les données pour envoyer le mail $header='From: '.$destinataire."\r\n".'Content-type:text/plain;charset=iso-8859-1'; $subject='Demande de reservation'; $message=''; //tous les champs du formulaire sont ajoutés dans le message foreach($_POST as $cle=>$valeur) $message.=$cle.' : '.$valeur."\n"; //on envoie le mail en séparant les adresse des deux destinataires par une virgule et un espace dans le premier argument de la fonction //on dirige vers le résultat, mais on petut le faire au début, seulement on ne verra pas les erreurs s'il y en a. ?>
Ouups, désolé, vraiment newbie ...
Ah, j'oubliais le second inconvénient, c'est l'accentuation et les "ç" qui arrivent comme dans le code; pourtant il y a bien iso-8859?!?...
Salut,
Plusieurs remarques :
1/ Les tags PHP sont <?php et non <?
2/ Tes array_map() sur tes tableaux superglobaux ne servent à rien si ce n'est utilisé pas mal de ressources. Tu peux tout faire dans ta boucle foreach() finale
3/ Concernant la sécurité, il faut que tu filtres les caractères dangereux \n \r... Tu as des aides pour sécuriser tout ça ici:
http://nyphp.org/phundamentals/email_header_injection.php
Voilà :)
Super merci pour ta réponse; je suis vraiment un gros naze pour l'erreur 1/
Le fait est que, avec les guides ovh, cela fait une somme énorme d'infos à ingurgiter (heureusement que je parle anglais). Je retourne potasser.
@ bientôt
pour sécuriser
if (eregi("\r",$valeur) || eregi("\n",$valeur)){ die("Why ?? :("); }
Re-bonjour, après quelques recherches, j'ai trouvé ce code, mais le "\r" et "\n" sont déjà dans le $header
donc est-ce deux choses différentes?
Désolé pour mon niveau 0 mais je sature avec toute ces infos :-(
Bonjour,
Ce code est obsolète... Il faut préférer un preg_match() ou bien un preg_replace() qui sont plus rapides.
