question concernant mysql_real_escape_string insertion dans une table

jonny
WRInaute discret
WRInaute discret
 
Messages: 69
Inscription: 8 Juin 2009

question concernant mysql_real_escape_string insertion dans une table

Message le Mer Oct 21, 2009 8:41

Bonjour,

J'ai une petite question concernant la fonction mysql_real_escape_string en php :

A quoi doit ressembler le contenu des champs insérés dans une table via cette fonction ?

Je m'explique :

Je traite un champ d'un formulaire par exemple : $var=mysql_real_escape_string($_POST["formvar"]);

j'insère dans ce champ toto’ OR 1<2 OR login=’ .

Mon script traite le formulaire et me renvoie un mail de confirmation où je vois tous les champs saisis.
Ma fonction traite bien les caractères "interdits" et j'obtiens dans mon mail : $var = toto’ OR 1. Jusque là tout fonctionne bien.

Par contre quand je regarde le champ de la table liée à $var, je m'aperçois que l'insertion s'est faite sous la forme toto’ OR 1<2 OR login=’ . Est-ce normal ?

Merci de m'éclairer !

a+


forty
WRInaute passionné
WRInaute passionné
 
Messages: 1701
Inscription: 30 Oct 2008

Re: question concernant mysql_real_escape_string insertion dans une table

Message le Mer Oct 21, 2009 10:08

si ce que tu as dans la table correspond a ce que tu as saisie : le résultat est normal. c'est le but ce cette fonction d'empêcher d'interpréter un contenu de zone comme une instruction SQL.
sil il y a une différence entre le mail et la table c'est que tu as du oublier d'utiliser la fonction htmlspecialchars('une chaine')

jonny
WRInaute discret
WRInaute discret
 
Messages: 69
Inscription: 8 Juin 2009

Re: question concernant mysql_real_escape_string insertion dans une table

Message le Mer Oct 21, 2009 10:26

Ok, merci pour la réponse.

si ce que tu as dans la table correspond a ce que tu as saisie : le résultat est normal. c'est le but ce cette fonction d'empêcher d'interpréter un contenu de zone comme une instruction SQL.


OK, c'est ce que je j'ai. Je saisi toto’ OR 1<2 OR login=’ et dans la table j'ai toto’ OR 1<2 OR login=’.

cependant
sil il y a une différence entre le mail et la table c'est que tu as du oublier d'utiliser la fonction htmlspecialchars('une chaine')


C'est ce que j'ai aussi. Dans le mail j'ai $var = toto’ OR 1 et dans la table pour le champ correspondant j'ai toto’ OR 1<2 OR login=’

Donc la réponse à ma question est là...

D'ailleurs le plus important est de protéger le champ grâce à mysql_real_escape_string, non ?
Ou le fait d'avoir toto’ OR 1<2 OR login=’ dans la table est "dangereux" aussi ?


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Re: question concernant mysql_real_escape_string insertion dans une table

Message le Mer Oct 21, 2009 12:17

Et à tout hasard, les "quotes" que tu nous montre ici c'est des "curly quotes", je ne sais pas dire si elles sont "échappées" comme des quotes normales:
Celles que tu nous montre:
Code: Tout sélectionner


Une quote normale:
Code: Tout sélectionner
'


... à tester.

jonny
WRInaute discret
WRInaute discret
 
Messages: 69
Inscription: 8 Juin 2009

Re: question concernant mysql_real_escape_string insertion dans une table

Message le Mer Oct 21, 2009 13:13

Bien vu !

ça change le traitement du formulaire du coup...

en utilisant les quotes normales dans mes champs avec : toto' OR 1<2 OR login=' et plus toto’ OR 1<2 OR login=’

le mail que je reçois en retour est coupé, c'est à dire que le traitement s'arrête après le première vérification des champs via mysql_real_escape_string.

Donc j'obtiens :

$var1 : toto\\\' OR 1 Puis plus rien... Alors qu'avant j'avais toute une série de variables vérifiée...

Le reste fonctionne (insertion table...)

C'est ça qu'est sensée faire la fonction mysql_real_escape_string ?


spout
WRInaute accro
WRInaute accro
 
Messages: 4382
Inscription: 14 Mai 2003

Re: question concernant mysql_real_escape_string insertion dans une table

Message le Mer Oct 21, 2009 13:23

Si tu as 3 \\\ avec mysql_real_escape_string, ça doit être les magic_quotes qui sont activées

jonny
WRInaute discret
WRInaute discret
 
Messages: 69
Inscription: 8 Juin 2009

Re: question concernant mysql_real_escape_string insertion dans une table

Message le Mer Oct 21, 2009 13:31

je suis sur un serveur mutualisé, ça va être tendu de mettre à off cette fonction...

mais ce n'est pas ça qui pose problème (me tromp-je ?)

sinon,
Donc j'obtiens :

$var1 : toto\\\' OR 1 Puis plus rien... Alors qu'avant j'avais toute une série de variables vérifiée...

Le reste fonctionne (insertion table...)

C'est ça qu'est sensée faire la fonction mysql_real_escape_string ?


Je me répète, mais n'ayant aucune idée de ce que doit faire cette fonction mysql_real_escape_string, si tu as une idée, ce serait cool...


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités