Bien sécuriser un formulaire de contact html/php

Bien sécuriser un formulaire de contact html/php - PHP - Programmation

Marsh Posté le 29-01-2007 à 12:23:06    

Bonjour,
 
J'utilise ce code php pour envoyer un message via un formulaire sur la page html d'un site, mais je ne m'y connais pas assez pour savoir si ce code est bien sécurisé, qu'en pensez vous ?
 
On me dit que ce code serait sensible au cross scripting
 

Code :
  1. <?
  2. $adresse="contact@pouet.com";
  3. $from="From: $prenom $nom<$email>\r\n";
  4. $from.="Reply-To: $prenom $nom <$email>\n";
  5. $from.="X-priority:3\n";
  6. $texte="<html>";
  7. $texte.="$texte";
  8. $texte.="</html>";
  9. $from.="MIME-Version: 1.0\r\n";
  10. $from.="Content-Type: text/html"; 
  11. if (mail($adresse,$sujet,$texte,$from))
  12. echo("<center><p>Votre message a bien été envoy&eacute; ! Merci!<br><a href=index.html>Cliquez ici pour revenir &agrave; l'accueil</a></p></center>" );
  13. else
  14. echo("<center><font color=red><br><br><br>Impossible d'envoyer votre message<br>Nous ne pouvons actuellement traiter votre demande<br>Merci de nous contacter par email sur<a href=\"mailto:$adresse\">contact@pouet.com</a> " );
  15. ?>


 
Est-ce qu'il est également judicieux de mettre un captcha ?
Merci pour vos conseils


Message édité par dexenium le 29-01-2007 à 13:33:23
Reply

Marsh Posté le 29-01-2007 à 12:23:06   

Reply

Marsh Posté le 29-01-2007 à 13:40:11    

$texte="<html>";
$texte.="$texte";
$texte.="</html>";
 
Hmm.  [:pingouino]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 29-01-2007 à 14:14:32    

Citation :

$texte="<html>";  
$texte.="$texte";  
$texte.="</html>";  
 
Hmm.  [:pingouino]


 
Que veux tu dire par là ?

Reply

Marsh Posté le 29-01-2007 à 14:28:38    

Il veux dire que c'est affreux comme code, qu'il ne faut pas entourer de " une variable si tu veux l'afficher, que tu prends trois ligne alors qu'une aurait été plus claire.
 
$texte='<html>'.$texte.'</html>';  
 
Et puis tu ne semble pas faire de vérification sur les information que tu vas balancer dans ton mail...

Reply

Marsh Posté le 29-01-2007 à 14:31:10    

dexenium a écrit :

Citation :

$texte="<html>";
$texte.="$texte";
$texte.="</html>";
 
Hmm.  [:pingouino]

 

Que veux tu dire par là ?

 

Que tu fais $texte='<html><html></html>';, ce qui est déjà louche, mais en 3 lignes, ce qui l'est encore plus?


Message édité par skeye le 29-01-2007 à 14:31:22

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-01-2007 à 14:55:04    

Citation :

Et puis tu ne semble pas faire de vérification sur les information que tu vas balancer dans ton mail...

est-ce qu'on le fait avec addslashes()

Reply

Marsh Posté le 29-01-2007 à 15:00:08    

La question est : d'où viennent toutes tes variables, là? :??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-01-2007 à 15:08:13    

Ben c'est le texte saisi par le client non ?

Reply

Marsh Posté le 29-01-2007 à 15:19:37    

si c'est le cas, un addslashes ne suffit pas... du moins ça dépend des champs et de ce que tu vas en faire aprés... en bref, donne plus d'info sur le contexte... tu récupére les info pour les mettre dans une bdd ?..

Reply

Marsh Posté le 29-01-2007 à 15:19:42    

...je devine ça comment, moi?[:moule_bite]
Le seul moyen pour comprendre ce qu'il pourrait y avoir comme menaces sur ton script, c'est de savoir quelles sont les données qui viennent de "l'extérieur", et ce que tu en fais exactement.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-01-2007 à 15:19:42   

Reply

Marsh Posté le 29-01-2007 à 15:49:47    

Alors c'est un formulaire qui permet tout simplement d'envoyer un mail vers une messagerie. Je ne stocke pas le message, à la rigueur je pourrais demander à récupérer l'adresse de l'expéditeur pour la stocker dans une table de ma bdd.
Les champs sont ; nom, prénom, adresse mail, message.

Reply

Marsh Posté le 29-01-2007 à 17:10:21    

Alors un spamming de ton adresse tu ne risque pas grand chose, si tu ne stocke rien.
 
Maintenant si tu stocke des données en base, il faut impérativement les passiver (éviter les injections SQL) donc Addslashes est bien util.

Reply

Marsh Posté le 29-01-2007 à 17:20:26    

Chani_t > Addslash est trés insufisant pour protéger des requettes sql. le mieux, c'est les "prepared statements" et les instructions dédiés tels que mysql_escape_string.

Reply

Marsh Posté le 29-01-2007 à 17:49:42    

je m'en doutais... mais je n'avais plus le nom de la fonction pour mysql en tête :D.. ;) merci de la précision

Reply

Marsh Posté le 30-01-2007 à 08:41:09    

Merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed