|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Inscrit
Inscription : juin 2006 Messages : 531 ![]() |
Bonjour,
Je reçois des données de type numérique depuis un formulaire et je viens de trouver la fonction intval(), qui converti les chaines de caractères en nombre si j'ai tout compris. Donc finalement, intval() ne serait-il pas préférable à mysql_real_escape_string() pour éviter que l'on me trafique ma requête ? |
|
|
00
|
|
|
#2 | ||
|
Inscrit
Inscription : juin 2006 Messages : 531 ![]() |
si je fais ça, c'est sauvage ou pas :
Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : août 2006 Messages : 115 ![]() |
intval() ne te permet que de convertir une variable en une valeur numérique entière, et n'est pas concue pour te proteger.
mysql_real_escape_string() en revanche est une fonction destiné à la sécurité. Pour ce qui me concerne, j'ai pris l'habitude d'utiliser systématiquement mysql_real_escape_string() avant toute requete ou est envoyé des données par l'utilisateur, et j'utilise intval() en supplément de mysql_real_escape_string() si les valeurs sont censés être numériques. |
|
|
00
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 583 ![]() |
hello,
les deux ont pas grand chose a voir dans ton cas il serait peut etre plus intéressant de vérifier qu'on t'a bien envoyé des données numériques : is_numeric est pas mal pour ça. maintenant si tu veux exclusivement des entiers tu peux passer par ça : intval( $mavar ) == $mavar qui permet de passer le probleme du au fait que les données POST ou GET sont considérées comme des chaines et qui du coup échouent au test is_int(); mysql_real_escape_string est faite pour échapper les chaines de caractères qui pourraient fausser tes requetes. c'est pas tout à fait pareil |
|
|
00
|
|
|
#5 |
|
Inscrit
Inscription : juin 2006 Messages : 531 ![]() |
Bah en fait je veux que la variable de la requête utilise des chiffres, ce qui est le cas si elle n'a pas été trafiquée. Donc normalement si j'utilise intval, elle va me convertir la variable en chiffre, donc ne rien faire si c'est déjà un chiffre, sinon elle va me sortir un zéro, ce qui n'est pas en soit un problème. Donc normalement c'est sécurisé avec intval(), non ?
|
|
|
00
|
|
|
#6 | |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Salut
Ceci est complètement absurde (passe-moi l'expression) : Citation:
![]() D'autre part, va trouver un caractère à encodage particulier qui nécessite mysql_real_escape_string() si tu attends un entier... Enfin, et ce sujet a été traité maintes fois sur ce forum, htmlentities() n'est pas prévu pour stocker en base de données mais pour envoyer un flux HTML au client. De plus, les entiers n'ont pas d'entités HTML. Bref, il est absurde de convertir un entier car c'est la donnée la plus sécurisée que tu puisses obtenir. Pour envoyer dans une requête : utilise intval() tant que possible, sinon mysql_real_escape_string(), mais rien d'autre. Pour envoyer au navigateur : htmlentities() si ce n'est pas un nombre.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
|
00
|
|
|
#7 |
|
Inscrit
Inscription : juin 2006 Messages : 531 ![]() |
donc si je vais intval($var) c'est plus que suffisant dans la mesure où j'attend un chiffre dans ma requête et si je fais mysql_real_escape_string(intval($var)) c'est juste pour me rassurer ? Et si je tombe sur un warrior du piratage qui me sort un code à double action pour neutraliser intval() n'est-ce pas valable d'avoir encore un mysql_real_escape_string() sous la main ? Ou c'est de la superstition totale ?
|
|
|
00
|
|
|
#8 |
|
Membre régulier
![]() Inscription : août 2006 Messages : 115 ![]() |
il me semble que la réponse de Yogui est plus que clair et réponde suffisament à tes questions non ?
|
|
|
00
|
|
|
#9 |
|
Inscrit
Inscription : juin 2006 Messages : 531 ![]() |
Tu veux que je te réponde oui alors je vais te dire oui comme ça ça ira.
|
|
|
00
|
|
|
#10 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Dans ce cas, échapper la variable ne sert qu'à perdre dutemps processeur et à rendre ton code moins portable. Donc à rien.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#11 |
|
Inscrit
Inscription : juin 2006 Messages : 531 ![]() |
ok ça roule, merci Yogui.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com