[mySql] protection des requetes

protection des requetes [mySql] - SQL/NoSQL - Programmation

Marsh Posté le 28-05-2002 à 19:45:27    

quand j'ai une requete de ce type : 'SELECT util_email FROM utilisateurs WHERE util_id='.$_COOKIE['idutil'].'
 
suffit que l'utilisateur modifie son cookie et mette comem valeur par ex. '1 AND ...' et il peut modifier la requete comme il veut en rajoutant n'importe quoi après le AND...
bref, est-ce que le seul moyen de protection est de faire une vérification avec une reg.exp. avant chaque requete où y'a qque chose de plus adapté ?

Reply

Marsh Posté le 28-05-2002 à 19:45:27   

Reply

Marsh Posté le 28-05-2002 à 22:04:33    

siewn a écrit a écrit :

quand j'ai une requete de ce type : 'SELECT util_email FROM utilisateurs WHERE util_id='.$_COOKIE['idutil'].'
 
suffit que l'utilisateur modifie son cookie et mette comem valeur par ex. '1 AND ...' et il peut modifier la requete comme il veut en rajoutant n'importe quoi après le AND...
bref, est-ce que le seul moyen de protection est de faire une vérification avec une reg.exp. avant chaque requete où y'a qque chose de plus adapté ?  




 
Bah déjà heureusement tu ne risques pas qu'il fasse une autre requête après... :)
À part ça, si tu utilises PHP, ya la fonction mysql_escape_string (vérifie sur www.php.net voir si c'est bien ça) qui permet de palier ce genre d'inconvénients

Reply

Marsh Posté le 28-05-2002 à 22:16:08    

j'ai regardé.
en fait ça va marcher pour les champs textes mais pas pour les champs numériques (car ils ne sont pas entourés de guillemet).

Reply

Marsh Posté le 28-05-2002 à 23:14:11    

siewn a écrit a écrit :

j'ai regardé.
en fait ça va marcher pour les champs textes mais pas pour les champs numériques (car ils ne sont pas entourés de guillemet).  




 
PHP ne fait la différence entre les 2, il te suffit donc de passer ton 'nombre' dans cette fonction et après tu l'intègres dans ta requête

Reply

Marsh Posté le 29-05-2002 à 01:44:30    

sinon regarde aussi la config de ton php.ini :  magic_quotes_gpc escape tout ce qui provient des Get, Post, Cookie. (d'ou le nom ;) )
il fait donc un addslashes($var) de tout ce qu'il reçoit de façon transparente pour le programme.
 
pour savoir s'il est activé: get_magic_quotes_gpc().
 
tu peux faire une fonction pour que ton prog fct avec toutes les configs.
function addMySlashes($string){
  return (get_magic_quotes_gpc()) ? $string : addslashes($string);
}
 
si c'est le numérique qui t'inquiète : is_numeric($var) est ton ami. (qd je reçois un id provenant d'une url ou  d'un cookie, je teste toujours si c'est bien un numérique avant de faire la query)

 

[jfdsdjhfuetppo]--Message édité par ethernal le 29-05-2002 à 01:46:27--[/jfdsdjhfuetppo]


---------------
...oups kernel error...
Reply

Marsh Posté le 29-05-2002 à 08:27:54    

:wahoo: hummmm pas con ca les gars j'y avais po pense :jap:


---------------
All we need is a soul revolution
Reply

Sujets relatifs:

Leave a Replay

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