Injection SQL contournant mysql_real_escape_string() — comment se protéger ?
Bonjour à tous ! Je suis un développeur PHP débutant et j'ai rencontré une situation très étrange. Sur de nombreux forums, on écrit que la fonction `mysql_real_escape_string()` est une protection fiable contre les injections SQL, et je l'ai toujours utilisée. Mais récemment, j'ai lu qu'il existe des moyens de la contourner, ce qui m'a beaucoup effrayé.
J'ai un code simple pour l'authentification des utilisateurs :
```php
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysql_query($query);
```
Je pensais que l'échappement de tous les guillemets et caractères spéciaux rendait la requête sécurisée. Mais on dit que si un encodage multioctet est utilisé (par exemple, GBK ou SJIS), on peut choisir une séquence de caractères qui "mange" la barre oblique d'échappement et permet d'insérer du code SQL arbitraire. Est-ce vrai ? Comment cela fonctionne-t-il exactement ? Et surtout, comment dois-je maintenant protéger correctement mes requêtes ?
No answers yet.
Connectez-vous pour laisser une réponse