par
Sékiltoyai » 09 juil. 2008, 08:20
- Est ce qu'il faut l'utiliser à chaque requète mysql (c'est à dire même lorsqu'on fait une requète à partir de variables déjà stockées dans la bdd) ou bien seulement lorsqu'on fait une requète à partir de variables provenant d'un formulaire ?
Il faut le faire tout le temps…
- Au lieu de :
Code : Tout sélectionner
$query = sprintf("SELECT * FROM users WHERE user LIKE 'xx%' AND password LIKE 'xx%'
mysql_real_escape_string($user),
mysql_real_escape_string($password));
il faut donc que je place simplement :
Code : Tout sélectionner
$query = sprintf("SELECT * FROM users WHERE user LIKE 'xx%' AND password LIKE 'xx%',
mysql_real_escape_string($user),
mysql_real_escape_string($password));
De cette facon ca fonctionne et c'est plus sécurisé, c'est bien ca ?
T'as posté les deux mêmes codes

Mais c'est bien cela qu'il faut faire…
- En faisant ma recherche j'ai vu que quelqu'un préconisait d'utiliser en plus htmlspecialchars lors de la définition des variables avant la requète :
Code : Tout sélectionner
$variable = mysql_real_escape_string(htmlspecialchars($_POST['variable']));
C'est effectivement mieux ?
C'est n'importe quoi ce qu'il a dit, je t'explique pourquoi. htmlspecialchars() est une fonction qui permet de protéger des données avant l'affichage, cela entraine par ailleurs une altération des données. Mais dans une base de données, on stocke des données brutes, on ne les formate pas. Si jamais par exemple tu dois vérifier qu'un pseudo existe ou commence par un 'é', il est plus naturel de comparer les pseudos réels ou les pseudos formatés en html ?
Bref, le htmlspecialchars() (ou htmlentities() selon les goûts) se fait juste avant de les afficher, donc quand on les sélectionne, et non à l'insertion.
[quote="Malouin"]
- Est ce qu'il faut l'utiliser à chaque requète mysql (c'est à dire même lorsqu'on fait une requète à partir de variables déjà stockées dans la bdd) ou bien seulement lorsqu'on fait une requète à partir de variables provenant d'un formulaire ?[/quote]
Il faut le faire tout le temps…
[quote="Malouin"]
- Au lieu de :
[code]$query = sprintf("SELECT * FROM users WHERE user LIKE 'xx%' AND password LIKE 'xx%'
mysql_real_escape_string($user),
mysql_real_escape_string($password));[/code]
il faut donc que je place simplement :
[code]$query = sprintf("SELECT * FROM users WHERE user LIKE 'xx%' AND password LIKE 'xx%',
mysql_real_escape_string($user),
mysql_real_escape_string($password));[/code]
De cette facon ca fonctionne et c'est plus sécurisé, c'est bien ca ?[/quote]
T'as posté les deux mêmes codes :D
Mais c'est bien cela qu'il faut faire… :)
[quote="Malouin"]
- En faisant ma recherche j'ai vu que quelqu'un préconisait d'utiliser en plus htmlspecialchars lors de la définition des variables avant la requète :
[code]$variable = mysql_real_escape_string(htmlspecialchars($_POST['variable']));[/code]
C'est effectivement mieux ?[/quote]
C'est n'importe quoi ce qu'il a dit, je t'explique pourquoi. htmlspecialchars() est une fonction qui permet de protéger des données avant l'affichage, cela entraine par ailleurs une altération des données. Mais dans une base de données, on stocke des données brutes, on ne les formate pas. Si jamais par exemple tu dois vérifier qu'un pseudo existe ou commence par un 'é', il est plus naturel de comparer les pseudos réels ou les pseudos formatés en html ?
Bref, le htmlspecialchars() (ou htmlentities() selon les goûts) se fait juste avant de les afficher, donc quand on les sélectionne, et non à l'insertion.