Injection mysql

Résolu
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 - 25 janv. 2008 à 14:16
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 - 27 janv. 2008 à 21:43
salut à tous

question de débutant, existe t il d'autres types d'injections genre
' or '1' = '1         pour les acces login mot de passe ou un lien qui les répertorie

Merci d'avance

8 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
25 janv. 2008 à 20:15
salut
evangun :)
prennons par exemple
$a=mysql_query('select champ1, champ2 FROM table where id='.$_GET['id']);
on voit dans l'url :
index.php?id=5
on met dans l'url :
index.php?id=5 UNION SELECT login, password FROM users WHERE admin=1 ORDER BY champ1 DESC

en jouant sur le DESC ou ASC, sur les limit, on peut scanner parfois toute une base
/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
3
Utilisateur anonyme
25 janv. 2008 à 21:13
Bien vu Coucou :)
Mais le plus simple reste d'encadrer toutes les valeurs fournies par l'utilisateur par des apostrophes, même les nombres, et de les échapper sytématiquement, et là je pense qu'il n'y a pas de faille.
$a mysql_query('select champ1, champ2 FROM table where id \''.mysql_real_escape_string($_GET['id']).'\');

Malalam dirait de passer à PDO, mais perso j'ai trouvé les perfs trop mauvaises, je suis revenu aux requêtes directes...
3
Utilisateur anonyme
25 janv. 2008 à 17:07
Hello,

non, à part les apostrophes, pas d'autres possibilités d'injection à proprement parler (à ma connaissance!).
0
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
26 janv. 2008 à 10:55
OK
merci à tous pour ces précisions
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
26 janv. 2008 à 11:00
fait reponse acceptee stp

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
27 janv. 2008 à 21:26
@sidf : J'ai pris la réponse de Evangun comme étant valide (donc "Réponse acceptée") car il donnait l'exemple le plus concret pour ta réponse : mysql_real_escape_string. Mais la remarque de Coucou747 est très pertinente, tous ce qui passe par l'utilisateur est à prendre avec des pincettes, il ne faut jamais lui faire confiance.

Comme dit le bon vieux proverbe, "le bug le plus connus, c'est l'utilisateur".

@Evangun : Le paradoxe avec les groupements de classes type PDO, Framework (CakePhp, Symfony, Zend), c'est que pour faire un truc tout con, il faut inclure 20 fichiers. C'est utile (et protecteur), mais plus gourmant en ressource. Comme toujours, ca va dépendre du type de travail à effectuer ! :)
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
27 janv. 2008 à 21:34
ca fait toujours plaisir... j'aurais jamais du faire une reponse complete...

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
27 janv. 2008 à 21:43
J'ai pris le choix d'Evangun tout simplement car il à indiqué la méthode mysql_real_escape_string, qui permet d'éviter d'énormes problemes de Sql injection. Maintenant, on peux toujours passer au travers, comme le montre ton exemple.

Par ailleur, j'ai bien précisé que ta réponse méritait aussi son pesan d'or.
T'inquiete Coucou747, on es pas noté par rapport au nombre de "bonnes réponses" :p, tes remarques et tes sources prouvent que tes compétences n'ont pas besoin d'être remises en causes, encore moin au niveau Sql ! :p
0
Rejoignez-nous