Bonjour à tous,

je récupere la gestion d'un site web que je dois refondre
et apres avoir vu le code du système de login, je pensais qu'il était
vulnérable à une injection SQL.
En effet, voici le code (simplifié) du formulaire index.php:
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<form action="login.php" method="post" name="formulaire">
<input type="text" name="user">
<input type="password" name="pass">
Puis le code de login.php (ce sont vraiment les premieres lignes du formulaire, je n'ai rien enlevé), les variables $user et $pass sont récupérés via le système de register_globals qui est sur on :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
$link = mysql_connect("localhost", "admin_login", "admin_pass")
or die ("Impossible de se connecter");
 
mysql_select_db ("BD")
or die ("Impossible d'accéder à la base de données");
 
session_start();
$req="select login,iduser from personnel where login='$user' and password='$pass';";
$res=mysql_query($req);
En etudiant le code, je me suis dit qu'en saisissant dans la page web le login :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
';drop table personnel;
, c'était censé réaliser une injection SQL puis effacer la table cependant ... non.
Lorsque j'affiche le contenu de la variable $req je vois :
select login,iduser from personnel where login='\';drop table personnel;' and password='test';
Mon simple quote a été automatiquement échappé. Savez-vous quel mécanisme a pu réaliser cela sachant qu'aucune fonction d'échappement n'est utilisée dans le code?
Bon je me prends la tete pour pas grand chose mais j'aimerai comprendre...
Merci,a +