rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[sql/php]$GET injection sql

Posté par naruto-94, le lundi 5 mars 2007 à 18:22:36
bonjour,

on m'a dit que sur ce code source il y avait une faille d'injection sql mais je ne vois pas comment la bouché donc pouvez vous m'aider svp !

<?PHP 
$idsql = htmlentities($_GET['id']); 
$db = mysql_connect('sql.free.fr', 'user', 'pass');  
mysql_select_db('user',$db);  
 
$sql = 'SELECT * FROM livres WHERE id='$idsql'' ;  
$req = mysql_query($sql) or die('Erreur SQL ! 
'.$sql.' 
'.mysql_error());  
 
while($data = mysql_fetch_array($req))  
{  
echo $data['id']; 
echo $data['titre']; 
echo $data['auteur'];  
echo $data['url_off'];  
echo $data['url_fr']; 
echo $data['resume']; 
echo $data['url_fiche']; 
}  
mysql_close(); 
?>



je pense que l'injection est a cause de $_GET j'ai mis htmlentities() mais je ne pense pas que sa serve a grand chose vu que la faille ne peut etre que en ajoutant du code sql..donc voila j'attend vos réponse en vous remerciant d'avance ^^.

----------------
- [ Juck'n0 ]-
Configuration: Windows XP
Internet Explorer 7.0
Répondre à naruto-94  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
benkeeper, le lundi 5 mars 2007 à 18:29:41
Hum ... à froid comme ça je vois pas, hormis que la requête est affichée en clair en cas d'erreur, ce qui peut donner des infos sur la structure de la base et sachant que pour un "hacker" toute info même minime sur le fonctionnement peut être bonne à prendre. Mais j'imagine que c'est une ligne qui va sauter une fois le passage en "production".

Au pire tu peux transformer la ligne htmlentities par :

$idsql = htmlentities($_GET['id'],ENT_QUOTES);

Comme ça tu es sur que la fonction convertie les éventuels guillemets simple, mais aussi les doubles.

Au pire il faudrait demander l'explication au "on" qui t'as dit ça ;)

Ben :)


PS : tant qua j'y suis c'est peut être une erreur de frappe mais la ligne

$sql = 'SELECT * FROM livres WHERE id='$idsql'' ;


est erronée. Il faudrait la corrigée par :

$sql = "SELECT * FROM livres WHERE id='$idsql' " ;

Entourée de guillemets double pour ne pas entrer en conflit avec les guillemets simples internes.
Répondre à benkeeper

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
naruto-94, le lundi 5 mars 2007 à 18:42:26
Merci d'avoir répondu si vite , je vais mettre ton bout de code en esperant que sa suffira. et merci pour la ligne érronée je n'avais pas vu.
et pour le "on" en faite je ne le retrouve plus je lui avais demandé sur un forum dont je ne me rapelle plus l'adresse ^^' .

merci ^^
----------------
- [ Juck'n0 ]-
Répondre à naruto-94

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
benkeeper, le lundi 5 mars 2007 à 19:46:08
Y a pas de quoi :)

En revanche s'il y a une autre faille dans ton code et que donc je ne l'ai pas vue non plus, essaie de nous tenir au courant parce que du coup il est possible que j'ai moi même fait l'erreur dans mes codes.


Ben
Répondre à benkeeper

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
naruto-94, le lundi 5 mars 2007 à 19:56:39
Okay pas de probleme ;) et j'ai un autre probleme j'ai creer un autre post..si tu a le temps ... :D
adresse : php image

et encore merci ^^
----------------
- [ Juck'n0 ]-
Répondre à naruto-94

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Reivax962, le mardi 6 mars 2007 à 10:43:57
Bonjour,

Je ne sais pas si l'instruction mysql_query fonctionne si on envoie une requête "double"...
A tester :
Crée dans ta base de données une nouvelle table, "table_test"
Appelle ta page en mettant comme valeur à id le texte suivant :
1';DROP TABLE table_test;SELECT'1

Ta requête deviendrait alors
$sql = "SELECT * FROM livres WHERE id='1';DROP TABLE table_test;SELECT'1' ";

Lance la page, et regarde si ça plante (Ce qui serait bien !) ou si la table table_test a disparu... (ce qui serait très embêtant !)
Répondre à Reivax962

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
naruto-94, le mardi 6 mars 2007 à 16:29:46
sa affiche une erreur :)

Erreur SQL ! SELECT * FROM livres WHERE id=1\';DROP TABLE table_test;SELECT\'1 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\';DROP TABLE table_test;SELECT\'1' at line 1

donc il n'y a pas de faille ? right or false ^^ ?
----------------
- [ Juck'n0 ]-
Répondre à naruto-94

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Reivax962, le mardi 6 mars 2007 à 16:33:47
Ben faut voir, les erreurs affichées me semblent surtout venir des guillemets... Il faudrait essayer d'arranger ça pour être sûr...
Répondre à Reivax962

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 naruto-94, le mardi 6 mars 2007 à 17:39:17
a c'est bon j'ai trouver mysql_real_escape_string() !! je pense que sa fera l'affaire !!

http://www.nexen.net/...
----------------
- [ Juck'n0 ]-
Répondre à naruto-94
Logiciels pertinents trouvés dans les téléchargements
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger WAMP Server 2.0cWAMP Server - WAMP5 (WAMP signifiant Windows Apache Mysql PHP) est une plateforme de développement Web sous Windows. Il vous permet de...Catégorie: Serveurs
Licence: Freeware/gratuit
Télécharger GetRight 6.3eGetRight - GetRight est un gestionnaire de téléchargement permettant d'optimiser les temps de téléchargement en gérant des connexions...Catégorie: Téléchargement
Licence: Shareware
Télécharger MySQL 5.0.51bMySQL - MySQL est une des systèmes de gestion de bases de données le plus répandu au monde. Catégorie: Bases de données
Licence: Open Source
Plus de logiciels gratuits sur « [sql/php]$GET injection sql »