- mysql_query ? => Mysql => mysql_real_escape_string qu'il te faut utiliser pour protéger les variables
- mysqli_query ? => Mysqli => mysqli_real_escape_string
- query ? => PDO à priori => PDO::quote
- exec / execute ? => PDO => les paramètres sont déjà protégés si tu les passes dans exec ou execute (mais pas si tu les mets directement dans la requête par contre !)
Quand tu insères une variable dans une requête SQL on parle d'injection.J'ai regardé "addslashes", sans comprendre si j'étais ou pas dans le champ possible d'application.[/quote
Surtout pas, addslashes n'est pas fait pour contrer les injections SQL, seulement échapper certains caractères.
Bricolage encore pire que d'utiliser addslashes...un bout de code qui recherchait les quote dans les chaines de variables et leur en ajoutait une seconde
Certains me parlent de me protéger des injections SQL, d'autres de faire les injections ... qui croire ?
Cependant il peut y avoir des injections non contrôlées, les fonctions de protection sont là pour éviter cela.
Si tu injectes par exemple le mot de passe dans une requête pour un formulaire de connexion sans le protéger et que l'utilisateur rentre : ' OR 1=1
Dans ce cas il y a une injection non contrôlée qui permet de se connecter sans connaître le mot de passe.
Exemple de protection contre l'injection avec le driver Mysqli :
<?php
$maVariable = mysqli_real_escape_string($maVariable);
$sql = 'SELECT * FROM maTable WHERE maVariable = ' . $maVariable;
$res = mysqli_query($sql);