Bonjour,
je souhaite protéger mon site contre les injections sql et j'ai regardé cette page pour comprendre le fonctionnement.
http://www.linux-pour-lesnuls.com/injection.php
Je reprends les exemples de ce site:
mysql_query("SELECT * FROM users WHERE utilisateur = '$login' AND motdepasse = '$password'");
si dans le champ correspondant au login on met:
la requete devient:
mysql_query("SELECT * FROM users WHERE utilisateur = '' OR 1=1"); //' AND motdepasse = 'password'");
password étant le contenu de la variable $password.
Pourtant quand je le fais, le server mysql interprete la requete ainsi:
SELECT * FROM users WHERE utilisateur = '' OR 1=1"); //' AND motdepasse = 'password'
1064 - 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 '"); //' AND motdepasse = 'password'' at line 1
Le probleme c'est que mysql tente d'interpreter "); // alors que c'est à apache de le faire.
Pourquoi le server mysql ne l'interprete-t-il pas ainsi?
SELECT * FROM users WHERE utilisateur = '' OR 1=1
Merci pour vos explications.
Cassy
[edit]merci julp pour avoir réediter mon post...j'y penserais la prochaine fois.
effectivement c'est plus clair bien qu'il y ait encore aucune reponse
[edit]
Partager