Utilisation des addslashes et stripslashes

Eléphant du PHP | 55 Messages

23 août 2007, 11:00

Bjr

Pour un développement sécurisé, faut-il utiliser les addslashes et stripslashes pour les zones numériques ? Après avoir tester is_numérique et éventuellement formaté la zone, il ne devrait à priori pas avoir de raisons pour utiliser ces fonctions. Ai-je bon dans mon raisonnement ? ou tout faux ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 août 2007, 11:18

Tu as bon.. il n'y a effectivement aucun caractère à échapper dans un nombre :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 55 Messages

23 août 2007, 11:23

Cool, ca me rassure bc et surtout allège un peu le code :D

Mammouth du PHP | 1511 Messages

23 août 2007, 11:27

Attention tout de même si cette valeur numérique est saisie par un utilisateur ;)
@+

Eléphant du PHP | 55 Messages

23 août 2007, 11:29

Bah, une fois que tu as testé is-numeric et éventuellement la taille de la saisie, que reste t-il comme possibilité ?

Mammouth du PHP | 1511 Messages

23 août 2007, 11:37

Si après tu fais une insertion en bdd, je recommande un petit mysql_real_escape_string() sur la dite valeur, on n'est jamais assez prudent ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 août 2007, 11:38

Après vérification, is_numeric() tolère le '+' et permet également de saisir de l'héxa (donc des lettres). Même si le risque est très limité (toujours pas de caractères spéciaux à échapper), l'idéal serait peut être de tester également is_int() ou is_float(). Tu peux également utiliser ctype_digit() pour plus de tranquilité, bien que cela bloque un signe moins et le séparateur de décimal...

Edit : C'est vrai que le mysql_real_escape_string() ne coûte pas grand chose, mais comme son nom l'indique, cette fonction est faite pour échapper un String, et non pas un nombre ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 55 Messages

23 août 2007, 14:35

Ok. Une interrogation toutefois.
J'ai ds ma base un enreg qui à
nom = toto
prix = 480.00
url = C:\www\projet\images\10651.jpg

Lorsque j'alimente mon formulaire à l'aide de ces données extraient de la base en utilisant le code
$_POST['nomprod'] = $ligne['nomprod'];
$_POST['prixHT'] = $ligne['prix_ht'];
$_POST['url'] = $ligne['url_photo'];  
Ca marche, j'ai bien mes 3 infos qui s'affichent
En revanche, si je test avec
$_POST['nomprod']=(!get_magic_quotes_gpc()) ? stripslashes($ligne['nomprod']):$ligne['nomprod'];
$_POST['prixHT']   = (!get_magic_quotes_gpc()) ? stripslashes($ligne['prixHT'])   : $ligne['prixHT'];
$_POST['url']         = (!get_magic_quotes_gpc()) ? stripslashes($ligne['url'])        : $ligne['url'];
La, je n'ai plus que mon nomprod qui s'affiche, les autres zone restent à blanc !!???
:shock:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 août 2007, 14:52

Si tu utilises les bon nom d'index, ca marchera sans doute mieux ;)
$_POST['nomprod'] = $ligne['nomprod'];
$_POST['prixHT'] = $ligne['prix_ht'];
$_POST['url'] = $ligne['url_photo'];

$_POST['nomprod']=(!get_magic_quotes_gpc()) ? stripslashes($ligne['nomprod']):$ligne['nomprod'];
$_POST['prixHT'] = (!get_magic_quotes_gpc()) ? stripslashes($ligne['prixHT']) : $ligne['prixHT'];
$_POST['url'] = (!get_magic_quotes_gpc()) ? stripslashes($ligne['url']) : $ligne['url'];
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 55 Messages

23 août 2007, 15:10

:oops: à l'instant j'ouvre la fenêtre et je saute . Encore merci 8-)