Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
950 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  securité sur code php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

securité sur code php

n°1842997
labrat
ah les femmes!
Posté le 26-01-2009 à 11:24:10  profilanswer
 

jour
voila j'aurais voulu savoir si mon code était securisé  j'ai mis des htmlspecialchars mais je sais pas si ca suffit :
 
<?php
 
 $destinataire = 'xxxxx@xxxxx.fr';    
 
 // copie ? (envoie une copie au visiteur)
 $copie = 'oui'; // 'oui' ou 'non'
 
 
 $message_envoye = "Votre message nous est bien parvenu !";
 $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
 
 
 $message_erreur_formulaire = "Vous devez d'abord <a href=\"form.html\">envoyer le formulaire</a>.";
 $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
 
 
 
 if (!isset($_POST['envoi']))
 {
   
  echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
 }
 else
 {
   
  function Rec($text)
  {
   $text = trim($text); // delete white spaces after & before text
   if (1 === get_magic_quotes_gpc())
   {
    $stripslashes = create_function('$txt', 'return stripslashes($txt);');
   }
   else
   {
    $stripslashes = create_function('$txt', 'return $txt;');
   }
 
   // magic quotes ?
   $text = $stripslashes($text);
   $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
   $text = nl2br($text);
   return $text;
  };
 
   
  function IsEmail($email)
  {
   $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
   return (eregi($pattern,$email)) ? true : false;
  };
 
   
  $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
  $prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
  $tel = (isset($_POST['tel'])) ? Rec($_POST['tel']) : '';
        $email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
        $evenement = (isset($_POST['evenement'])) ? Rec($_POST['evenement']) : '';  
        $date = (isset($_POST['date'])) ? Rec($_POST['date']) : '';  
        $budget = (isset($_POST['budget'])) ? Rec($_POST['budget']) : '';
        $adresse = (isset($_POST['adresse'])) ? Rec($_POST['adresse']) : '';
  $personnes = (isset($_POST['personnes'])) ? Rec($_POST['personnes']) : '';
  $infos = (isset($_POST['infos'])) ? Rec($_POST['infos']) : '';
 
       
 
   
        $message = "$budget\n\n$adresse\n\n$personnes\n\n$tel\n\n$date\n\n$infos";    
  $message  =  nl2br ($message);
  $adresse = nl2br($adresse);
  $infos  = nl2br($infos);
   
 
  $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
 
  if (($nom != '') && ($prenom != '') && ($email != '') && ($evenement != '') && ($date != '') && ($budget != '') && ($adresse != '') && ($personnes != '') )
  {
   
   $headers = 'From: '.$prenom.' '.$nom.' <'.$email.'>' . "\r\n";  
   
 
   
 
   if ($copie == 'oui')
   {
    $cible = $destinataire.','.$email;
   }
   else
   {
    $cible = $destinataire;
   };
 
   
   $message = str_replace("&#039;","'",$message);
   $message = str_replace("&#8217;","'",$message);
   $message = str_replace("&quot;",'"',$message);
   $message = str_replace('<br>','',$message);
   $message = str_replace('<br />','',$message);
   $message = str_replace("&lt;","<",$message);
   $message = str_replace("&gt;",">",$message);
   $message = str_replace("&amp;","&",$message);
   $evenement = str_replace("&#039;","'",$evenement);
 
   
 
   if (mail($cible, $evenement, $message, $headers))
   {
    echo '<p>'.$message_envoye.'</p>'."\n";
   }
   else
   {
    echo '<p>'.$message_non_envoye.'</p>'."\n";
   };
  }
  else
  {
   
   echo '<p>'.$message_formulaire_invalide.' <a href="form.html">Retour au formulaire</a></p>'."\n";
  };
 }; // fin du if (!isset($_POST['envoi']))
?>
 
 
merci

mood
Publicité
Posté le 26-01-2009 à 11:24:10  profilanswer
 

n°1842999
esox_ch
Posté le 26-01-2009 à 11:25:02  profilanswer
 

Tu peux éditer ton post et mettre ton code entre balises  ?
[ code=php]
[/code]
 
Comme ça on y voit mieux


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1843141
labrat
ah les femmes!
Posté le 26-01-2009 à 14:17:58  profilanswer
 

ok chef
 
[ code=php]<?php
 
 $destinataire = 'xxxxx@xxxxx.fr';    
 
 // copie ? (envoie une copie au visiteur)
 $copie = 'oui'; // 'oui' ou 'non'
 
 
 $message_envoye = "Votre message nous est bien parvenu !";
 $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
 
 
 $message_erreur_formulaire = "Vous devez d'abord <a href=\"form.html\">envoyer le formulaire</a>.";
 $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
 
 
 
 if (!isset($_POST['envoi']))
 {
   
  echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
 }
 else
 {
   
  function Rec($text)
  {
   $text = trim($text); // delete white spaces after & before text
   if (1 === get_magic_quotes_gpc())
   {
    $stripslashes = create_function('$txt', 'return stripslashes($txt);');
   }
   else
   {
    $stripslashes = create_function('$txt', 'return $txt;');
   }
 
   // magic quotes ?
   $text = $stripslashes($text);
   $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
   $text = nl2br($text);
   return $text;
  };
 
   
  function IsEmail($email)
  {
   $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
   return (eregi($pattern,$email)) ? true : false;
  };
 
   
  $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
  $prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
  $tel = (isset($_POST['tel'])) ? Rec($_POST['tel']) : '';
        $email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
        $evenement = (isset($_POST['evenement'])) ? Rec($_POST['evenement']) : '';  
        $date = (isset($_POST['date'])) ? Rec($_POST['date']) : '';  
        $budget = (isset($_POST['budget'])) ? Rec($_POST['budget']) : '';
        $adresse = (isset($_POST['adresse'])) ? Rec($_POST['adresse']) : '';
  $personnes = (isset($_POST['personnes'])) ? Rec($_POST['personnes']) : '';
  $infos = (isset($_POST['infos'])) ? Rec($_POST['infos']) : '';
 
       
 
   
        $message = "$budget\n\n$adresse\n\n$personnes\n\n$tel\n\n$date\n\n$infos";    
  $message  =  nl2br ($message);
  $adresse = nl2br($adresse);
  $infos  = nl2br($infos);
   
 
  $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
 
  if (($nom != '') && ($prenom != '') && ($email != '') && ($evenement != '') && ($date != '') && ($budget != '') && ($adresse != '') && ($personnes != '') )
  {
   
   $headers = 'From: '.$prenom.' '.$nom.' <'.$email.'>' . "\r\n";  
   
 
   
 
   if ($copie == 'oui')
   {
    $cible = $destinataire.','.$email;
   }
   else
   {
    $cible = $destinataire;
   };
 
   
   $message = str_replace("&#039;","'",$message);
   $message = str_replace("&#8217;","'",$message);
   $message = str_replace("&quot;",'"',$message);
   $message = str_replace('<br>','',$message);
   $message = str_replace('<br />','',$message);
   $message = str_replace("&lt;","<",$message);
   $message = str_replace("&gt;",">",$message);
   $message = str_replace("&amp;","&",$message);
   $evenement = str_replace("&#039;","'",$evenement);
 
   
 
   if (mail($cible, $evenement, $message, $headers))
   {
    echo '<p>'.$message_envoye.'</p>'."\n";
   }
   else
   {
    echo '<p>'.$message_non_envoye.'</p>'."\n";
   };
  }
  else
  {
   
   echo '<p>'.$message_formulaire_invalide.' <a href="form.html">Retour au formulaire</a></p>'."\n";
  };
 }; // fin du if (!isset($_POST['envoi']))
?>[/code]
 
je sais pas si c'est ca qu'il fallait daire mais bon

n°1843145
esox_ch
Posté le 26-01-2009 à 14:23:36  profilanswer
 

Enlève l'espace entre "[" et "code" dans le tag s'il te plait (dans mon autre post je l'ai volontairement ajouté parce que sinon la commande est interprétée :) )


Message édité par esox_ch le 26-01-2009 à 14:23:54

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1843320
Profil sup​primé
Posté le 26-01-2009 à 18:27:07  answer
 

labrat a écrit :

Code :
  1. $stripslashes = create_function('$txt', 'return $txt;');



 [:al2beer] php


Message édité par Profil supprimé le 26-01-2009 à 18:27:23
n°1843952
labrat
ah les femmes!
Posté le 27-01-2009 à 23:40:44  profilanswer
 

reok chef
 
[ code=php]<?php
 
 $destinataire = 'xxxxx@xxxxx.fr';    
 
 // copie ? (envoie une copie au visiteur)
 $copie = 'oui'; // 'oui' ou 'non'
 
 
 $message_envoye = "Votre message nous est bien parvenu !";
 $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
 
 
 $message_erreur_formulaire = "Vous devez d'abord <a href=\"form.html\">envoyer le formulaire</a>.";
 $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
 
 
 
 if (!isset($_POST['envoi']))
 {
   
  echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
 }
 else
 {
   
  function Rec($text)
  {
   $text = trim($text); // delete white spaces after & before text
   if (1 === get_magic_quotes_gpc())
   {
    $stripslashes = create_function('$txt', 'return stripslashes($txt);');
   }
   else
   {
    $stripslashes = create_function('$txt', 'return $txt;');
   }
 
   // magic quotes ?
   $text = $stripslashes($text);
   $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
   $text = nl2br($text);
   return $text;
  };
 
   
  function IsEmail($email)
  {
   $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
   return (eregi($pattern,$email)) ? true : false;
  };
 
   
  $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
  $prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
  $tel = (isset($_POST['tel'])) ? Rec($_POST['tel']) : '';
        $email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
        $evenement = (isset($_POST['evenement'])) ? Rec($_POST['evenement']) : '';  
        $date = (isset($_POST['date'])) ? Rec($_POST['date']) : '';  
        $budget = (isset($_POST['budget'])) ? Rec($_POST['budget']) : '';
        $adresse = (isset($_POST['adresse'])) ? Rec($_POST['adresse']) : '';
  $personnes = (isset($_POST['personnes'])) ? Rec($_POST['personnes']) : '';
  $infos = (isset($_POST['infos'])) ? Rec($_POST['infos']) : '';
 
       
 
   
        $message = "$budget\n\n$adresse\n\n$personnes\n\n$tel\n\n$date\n\n$infos";    
  $message  =  nl2br ($message);
  $adresse = nl2br($adresse);
  $infos  = nl2br($infos);
   
 
  $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
 
  if (($nom != '') && ($prenom != '') && ($email != '') && ($evenement != '') && ($date != '') && ($budget != '') && ($adresse != '') && ($personnes != '') )
  {
   
   $headers = 'From: '.$prenom.' '.$nom.' <'.$email.'>' . "\r\n";  
   
 
   
 
   if ($copie == 'oui')
   {
    $cible = $destinataire.','.$email;
   }
   else
   {
    $cible = $destinataire;
   };
 
   
   $message = str_replace("&#039;","'",$message);
   $message = str_replace("&#8217;","'",$message);
   $message = str_replace("&quot;",'"',$message);
   $message = str_replace('<br>','',$message);
   $message = str_replace('<br />','',$message);
   $message = str_replace("&lt;","<",$message);
   $message = str_replace("&gt;",">",$message);
   $message = str_replace("&amp;","&",$message);
   $evenement = str_replace("&#039;","'",$evenement);
 
   
 
   if (mail($cible, $evenement, $message, $headers))
   {
    echo '<p>'.$message_envoye.'</p>'."\n";
   }
   else
   {
    echo '<p>'.$message_non_envoye.'</p>'."\n";
   };
  }
  else
  {
   
   echo '<p>'.$message_formulaire_invalide.' <a href="form.html">Retour au formulaire</a></p>'."\n";
  };
 }; // fin du if (!isset($_POST['envoi']))
?>[code]
 
je resais pas si c'est ca qu'il fallait daire mais bon
 
luc@s y'a un bleme avec mon stripslahes? parce qu'apparement ce que tu as ecris c'est âreil que moi non?
bon merci quand meme

n°1843970
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 28-01-2009 à 01:25:56  profilanswer
 

Y'a des trucs un peu vilains (en fait réellement dégueulasses) et inutiles :).  
 
Première règle à suivre pour bien développer : on ne déclare pas de fonction en plein milieu dans la fonction principale XD!
 
ps : je n'ai pas cherché à vérifier si ça fonctionne, il doit sans doute manquer des trucs.
 

Code :
  1. <?php
  2.    /* déclarations */
  3.    function Rec($text)
  4.   {
  5.    $text = trim($text); // delete white spaces after & before text
  6.    return htmlspecialchars($text, ENT_QUOTES);
  7.   }
  8.  
  9.   function IsEmail($email)
  10.   {
  11.    $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$"; 
  12.    return eregi($pattern,$email); // bon sang que c'était laid!!!
  13.   }
  14. /* fin de déclarations */
  15. $html_header = '<html><body>'; //tant qu'à faire en cas d'erreur on peut préciser que le doc est en html ça sera un peu plus propre
  16. $html_footer = '</body></html>';
  17. $destinataire = 'xxxxx@xxxxx.fr';   
  18. // copie ? (envoie une copie au visiteur)
  19. $copie = 'oui'; // 'oui' ou 'non'
  20. $message_envoye = 'Votre message nous est bien parvenu !';
  21. $message_non_envoye = 'L'envoi du mail a échoué, veuillez réessayer SVP.';
  22. $message_erreur_formulaire = 'Vous devez d'abord <a href="form.html">envoyer le formulaire</a>.';
  23. $message_formulaire_invalide = 'Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.';
  24. if (!isset($_POST['envoi']))
  25.   echo  $html_header.'<p>'.$message_erreur_formulaire.'</p>'.$html_footer; // \n inutile vu que le <p> fait sauter une ligne
  26. }
  27. else
  28. {   
  29.   $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : ''; //forme correcte mais pas très lisible :-/
  30.   $prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
  31.   $tel = (isset($_POST['tel'])) ? Rec($_POST['tel']) : '';
  32.   //autant tout faire en une fois!
  33.   $email = '';
  34.   if (isset($_POST['email']) && IsEmail($_POST['email']) != false)
  35.       $email = Rec($_POST['email']);
  36.   $evenement = (isset($_POST['evenement'])) ? Rec($_POST['evenement']) : ''; 
  37.   $date = (isset($_POST['date'])) ? Rec($_POST['date']) : ''; 
  38.   $budget = (isset($_POST['budget'])) ? Rec($_POST['budget']) : '';
  39.   $adresse = (isset($_POST['adresse'])) ? Rec($_POST['adresse']) : '';
  40.   $personnes = (isset($_POST['personnes'])) ? Rec($_POST['personnes']) : '';
  41.   $infos = (isset($_POST['infos'])) ? Rec($_POST['infos']) : ''; 
  42.   $message = "\n\n".$budget."\n\n".$adresse."\n\n".$personnes."\n\n".$tel."\n\n".$date."\n\n".$infos."\n\n";  //évite de faire travailler inutilement le server php.
  43.   if (($nom != '') && ($prenom != '') && ($email != '') && ($evenement != '') && ($date != '') && ($budget != '') && ($adresse != '') && ($personnes != '') )
  44.   {
  45.     $headers = 'From: '.$prenom.' '.$nom.' <'.$email.'>' . "\r\n"; 
  46.     if ($copie == 'oui')
  47.        $cible = $destinataire.','.$email;
  48.     else 
  49.        $cible = $destinataire;
  50.    
  51.    if (mail($cible, $evenement, $message, $headers))
  52.       echo $html_header.'<p>'.$message_envoye.'</p>'.$html_footer;
  53.    else
  54.       echo $html_header.'<p>'.$message_non_envoye.'</p>'.$html_footer;
  55.   }
  56.   else
  57.      echo $html_header.'<p>'.$message_formulaire_invalide.' <a href="form.html">Retour au formulaire</a></p>'.$html_footer;
  58. } // fin du if (!isset($_POST['envoi']))
  59. ?>


Message édité par fodger le 28-01-2009 à 03:03:24
n°1844640
labrat
ah les femmes!
Posté le 29-01-2009 à 12:53:23  profilanswer
 

bon be ok boss pour les declarations de fonctions faudra donc que j'evite de les mettre en plein milieu  
 
pour quand tu dis evites de faire travailler le serveur php j'ai été obligé de mettre les \n\n parce que c'était le foutoir quand ca arrivait dans ma boite mail ..(tout a la suite)
pour le formattage en html je sais  : pas tu m'as aiguillé avec $html_header = '<html><body>';  $html_footer = '</body></html>';
mais ca s'arrette la j'ai pas trouvé sur le net un tuto clair la dessus les tutos en general c'est voila c'est comme ca ils mettent tout en vrac mais detaillent rien (comme par ex dans le site du zero qui n'a malheureusement pas abordé la fonction mail)
 
en tous cas je te rassure ca marche très bien mais je voulais savoir simplement si c'etait sécurisé si y'avait pas de danger de hack mais vu que y'a pas acces a ma base de données que c'est direct du formualire a ma boite mail je pense pas mais je pose la question quand meme .
voila  
merci pour tes corrections ..


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  securité sur code php

 

Sujets relatifs
Aidez-moi à décrypter ce bout de codeCodepress ou la coloration syntaxique d'un code sur une page web
code liste deroulante multicritereGénérateurs de code PHP ... vos avis ?
arbre n-aire, probleme de codeInsérer un code dans une page php
Inserer de la gestion de donnees via SQL dans du code CSécurité et mot de passe ftp
Sécurité site comercial et structure du codeAvis sur mon code - Sécurité.
Plus de sujets relatifs à : securité sur code php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR