Mamat Posté 28 Novembre 2005 Posté 28 Novembre 2005 Bonjour, Sur mon site pro (webserviteur.com) j'avais plusieurs formulaires html traité par un petit script php qui me les envoyé par mail, pour éviter tout problème j'avais interdit les adresses mails finisant par mon ndd. Tout allez bien, le jour ou j'ai changé d'hébergeur pour ovh, plus rien n'a était j'ai était inondé de mails de retour avec des adresses expéditeurs en webserviteur.com (il y a un catch-all). Voici le code php : <?php list($nom,$server) = explode("@",$mail); if ($server=='webserviteur.com') { include "MailNonEnvoye.php"; } elseif ($mail=='') { include "MailNonEnvoye.php"; } else { $headers="From: ".$mail; $message = stripslashes($message); mail('thomas.mathey_AT_gmail.com',$titre,$message,$headers); include "MailEnvoye.php"; }?> J'ai fait une erreur ? Comment le sécuriser plus, car mon compte à déjà était fermé à cause de ça ;oD
ams51 Posté 28 Novembre 2005 Posté 28 Novembre 2005 tu peux mettre un code dans le genre : $headers="From: Formulaire <thomas.mathey_AT_gmail.com>";$message = $mail.stripslashes($message);mail('thomas.mathey_AT_gmail.com',$titre,$message,$headers);include "MailEnvoye.php"; Le header ne peut plus être modifié, le mail de ton correspondant se trouve dans le message.
Mamat Posté 28 Novembre 2005 Auteur Posté 28 Novembre 2005 C'et le header qui pose problème tu crois ?
ams51 Posté 28 Novembre 2005 Posté 28 Novembre 2005 La variable $mail est un champs du formulaire je pense. Ils peuvent mettre un bcc ou un cc j'ai trouvé ça pour sécuriser un peu plus (http://fr.php.net/mail) : <?php// First, make sure the form was posted from a browser.// For basic web-forms, we don't care about anything// other than requests from a browser: if(!isset($_SERVER['HTTP_USER_AGENT'])){ die("Forbidden - You are not authorized to view this page"); exit;}// Make sure the form was indeed POST'ed:// (requires your html form to use: action="post")if(!$_SERVER['REQUEST_METHOD'] == "POST"){ die("Forbidden - You are not authorized to view this page"); exit; }// Host names from where the form is authorized// to be posted from:$authHosts = array("domain.com", "domain2.com", "domain3.com");// Where have we been posted from?$fromArray = parse_url(strtolower($_SERVER['HTTP_REFERER']));// Test to see if the $fromArray used www to get here.$wwwUsed = strpos($fromArray['host'], "www.");// Make sure the form was posted from an approved host name.if(!in_array(($wwwUsed === false ? $fromArray['host'] : substr(stristr($fromArray['host'], '.'), 1)), $authHosts)){ logBadRequest(); header("HTTP/1.0 403 Forbidden"); exit; }// Attempt to defend against header injections:$badStrings = array("Content-Type:", "MIME-Version:", "Content-Transfer-Encoding:", "bcc:", "cc:");// Loop through each POST'ed value and test if it contains// one of the $badStrings:foreach($_POST as $k => $v){ foreach($badStrings as $v2){ if(strpos($v, $v2) !== false){ logBadRequest(); header("HTTP/1.0 403 Forbidden"); exit; } }} // Made it past spammer test, free up some memory// and continue rest of script: unset($k, $v, $v2, $badStrings, $authHosts, $fromArray, $wwwUsed);?>
Remi Posté 28 Novembre 2005 Posté 28 Novembre 2005 Ton script est très intéressant. Ce qui m'embête un peu, c'est de bloquer les gens qui naviguent avec un browser sans referer (cf. l'option dans Opera ou certains plugins).
Mamat Posté 28 Novembre 2005 Auteur Posté 28 Novembre 2005 Oui c'est vrai que certains ont une option permettant de cacher le referer, mais il me parraît béton sinon ce bout de code.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant