Bonjour,
Alors ce n'est pas grave si le sujet à déjà été abordé cela fera une bonne piqure de rappel pour certain ![:)](https://www.developpez.net/forums/images/smilies/icon_smile.gif)
Pour répondre à ta question d'une manière générale OUI mysql_real_escape_string te protègera des SQLi (Injection SQL) par contre sur le tutoriel que tu donne en exemple il y a une absurdité :
$requete = mysql_query("SELECT age FROM membres WHERE pseudo='$pseudo'");
L'utilisation de guillemet pour inclure la variable pseudo peut faire courrir un risque à l'application car PHP va interpréter le code $pseudo pour le jouer dans le code et cela peut être très dangereux. De plus l'utilisation de guillemet et fortement consommatrice de ressource car justement PHP recherche entre guillemet des éléments à exécuter en tant que code PHP...
Exemple ou mysql_real_escape_string est inefficace :
Si ma requete est :
1 2
|
$IsDo = mysql_query('SELECT * FROM toto WHERE id='.mysql_real_escape_string($_GET['donnelabmda'])); |
Si je met dans $_GET['donnelabmda'] ceci : "1 OR 2<>3" mysql_real_escape_string n’échappera aucun caractères et l'injection marchera sans soucis. Et je pourrais réaliser des requêtes voir sous requêtes complexe.
Donc toujours écrire comme ci :
1 2
|
$IsDo = mysql_query('SELECT * FROM toto WHERE id="'.mysql_real_escape_string($_GET['donnelabmda']).'"'); |
Le but étant d'avoir toujours des guillemets qui entoure les valeurs donné à MySQL provenant de variable non sur (variable saisie par l’utilisateur ou pouvant être altéré tel que USER_AGENT)
Il vous est aussi possible d'utiliser la librairie PDO pour sécuriser vos requêtes SQL par contre attention une fois encore tout comme pour mysql_real_escape_string il faut l'utiliser de manière correct.
Si j'ai été trop vague ou que vous avez d'autres question n'hésitez surtout pas ![:)](https://www.developpez.net/forums/images/smilies/icon_smile.gif)
Cordialement,
Partager