Sécurité dans les formulaires

Sécurité dans les formulaires - PHP - Programmation

Marsh Posté le 28-10-2007 à 18:59:53    

Bonjour,
 
J'essaie de mieux comprendre la sécurité dans les formulaires et j'aimerais savoir si je dois utiliser mysql_real_escape_string() ou htmlspecialchars.
 
Merci!

Reply

Marsh Posté le 28-10-2007 à 18:59:53   

Reply

Marsh Posté le 28-10-2007 à 19:25:27    

Bonsoir!
 
Pour tout ce qui concerne la protection de données à stocker dans une BDD, il est fortement conseillé d'utiliser la fonction mysql_real_escape_string, qui permet surtout de te protéger de certaines injections SQL!  
 
Voir les caractéristiques de celle-ci sur http://php.net


Message édité par Plexi86 le 28-10-2007 à 19:25:55
Reply

Marsh Posté le 28-10-2007 à 19:33:18    

j'ai vu ça sur le site du zero (http://www.siteduzero.com/tuto-3-146-1-tp-un-mini-chat.html#ss_part_1)  
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
donc , on peut les cumuler ...

Message cité 1 fois
Message édité par zugolin le 28-10-2007 à 19:34:07
Reply

Marsh Posté le 28-10-2007 à 19:39:21    

Pourquoi liez vous mysql_real_escape_string et htmlspecialchars ? [:mlc]
 
Le premier sert a envoyer une requête sécurisé au serveur (même s'il faut quand même faire des opérations supplémentaires parfois)
 
Le second sert a ce que le navigateur client interprète l'ensemble de la donnée a afficher comme du texte et non du code HTML (= pas de risque de XSS)


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 28-10-2007 à 20:32:04    

zugolin a écrit :

j'ai vu ça sur le site du zero (http://www.siteduzero.com/tuto-3-146-1-tp-un-mini-chat.html#ss_part_1)  
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
donc , on peut les cumuler ...


oui , mais ca ne sert a rien

Reply

Marsh Posté le 28-10-2007 à 20:40:28    

J'utilise donc cette fonction mysql_real_escape_string pour faire mes insert et update ?
 
et htmlspecialchars pour mes echo ?

Reply

Marsh Posté le 28-10-2007 à 20:45:36    

voila , c'est ça

Reply

Marsh Posté le 02-11-2007 à 18:12:59    

Je viens d'essayer de mettre cette commande mysql_real_escape_string dans mon update et ça ne fonctionne pas. Dois-t'on vraiment l'utiliser dans le update ou insert ?
 
$reponse = mysql_query("UPDATE ATS_membre set employeur=mysql_real_escape_string('$employeur'),e_courriel='$e_courriel',t_trav='$e_tel',commandite='$commandite',maj_iden=now() where id=$id" );


Message édité par fourniey le 02-11-2007 à 18:13:55
Reply

Marsh Posté le 02-11-2007 à 18:20:17    

La tu envoies la requetes suivante a ton serveur :
UPDATE ATS_membre set employeur=mysql_real_escape_string('$employeur'),e_courriel='$e_courriel',t_trav='$e_tel',commandite='$commandite',maj_iden=now() where id=$id"
 
Ta commande mysql_real_escape_string, n'est PAS interprétée comme une commande mais comme une partie intégrante de la requête. Pour exécuter la commande :
 
$reponse = mysql_query("UPDATE ATS_membre set employeur=".mysql_real_escape_string($employeur).",e_courriel='$e_courriel',t_trav='$e_tel',commandite='$commandite',maj_iden=now() where id=$id" );
 
Je rajoute qu'en mettant les guillemets autour de la variable que tu veux escaper, tu demandes a PHP d'échapper non pas le contenu de ta variable mais la chaine '$employeur'


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 02-11-2007 à 20:21:40    

L'objectif est de transférer dans ma table les données de façon sécurisée.

Reply

Marsh Posté le 02-11-2007 à 20:21:40   

Reply

Marsh Posté le 03-11-2007 à 00:19:14    

Tu veux pas filtrer correctement toi même et utiliser les requêtes préparées?

Reply

Marsh Posté le 03-11-2007 à 00:53:20    

Je veux enregistrer dans la table avec des valeurs sures.
 
Pour ce qui est de mes requêtes, elles utilisent un no qui est mis à jour que par moi.

Reply

Marsh Posté le 03-11-2007 à 10:11:26    

les valeurs sûres, tu peux les caster via PHP, par exemple $age = intval($_POST['age']) ou encore $age = abs(sprintf("%d", $_POST['age'])) : ainsi tu es sûr que $age est un entier positif ou nul.
 
 
Tu peux aussi fare un peu de sécurité dans l'HTML, j'entends par là que si le visiteur doit donner une note par exemple (en chiffre) préfère un menu <select> à un input type="text". Pareil pour les dates, au lieu de demander à rentrer JJ-MM-AAAA, préfère 3 menus déroulants ... Ainsi tes sûr de ce que tu récupères en PHP, ça te fait ça de moins à traiter.


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 03-11-2007 à 12:03:27    

pas du tout. rien n'empêche le visiteur de modifier le HTML de la page, il suffit juste d'enregistrer la page en local et de l'afficher avec les modifs. principe de précaution: tu controle TOUT ce qui vient de l'utilisateur.

Reply

Marsh Posté le 03-11-2007 à 12:12:26    

NewsletTux > -1 !
 
Personne pour proposer l'utilisation de PDO? Rien ne dit que l'utilisation de vieilleries comme mysql_real_escape_string est indispensable (c'est pt-être le cas, mais rien ne l'indique ici).


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 03-11-2007 à 12:27:23    

sircam a écrit :

NewsletTux > -1 !
 
Personne pour proposer l'utilisation de PDO? Rien ne dit que l'utilisation de vieilleries comme mysql_real_escape_string est indispensable (c'est pt-être le cas, mais rien ne l'indique ici).


 

leflos5 a écrit :

Tu veux pas filtrer correctement toi même et utiliser les requêtes préparées?


Reply

Marsh Posté le 03-11-2007 à 15:36:36    

Spa assez explicite :o


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Sujets relatifs:

Leave a Replay

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