Page 1 sur 1
Protection des requetes SQL
Posté : 25 nov. 2011, 03:47
par rimie
Bonjour,
Je fais mes requetes par la methode query, comment puis je proteger mes donnees contre les injections, cote insert, select, update.
$sql = 'INSERT INTO commentaires VALUES (\'\', "'.$level1.'", "'.$level2.'", "'.$level3.'", "'.$num.'", "'.$commentaire.'", "'.$idpseudo.'", "'.$date_posted.'")';
$req = $connexion->query($sql);
merci
Re: Protection des requetes SQL
Posté : 25 nov. 2011, 08:10
par xTG
Re: Protection des requetes SQL
Posté : 25 nov. 2011, 09:21
par moogli
Tu voulais dit "quote" ?

Re: Protection des requetes SQL
Posté : 25 nov. 2011, 12:18
par xTG
Oui !
Heureusement que j'ai pas doublement fauté, le lien reste correct.

Re: Protection des requetes SQL
Posté : 26 nov. 2011, 10:25
par rimie
comme ca:
$level1 = $connexion->quote($level1, PDO::PARAM_INT);
$level2 = $connexion->quote($level2, PDO::PARAM_INT);
$level3 = $connexion->quote($level3, PDO::PARAM_INT);
$num = $connexion->quote($num, PDO::PARAM_INT);
$commentaire = $connexion->quote($commentaire, PDO::PARAM_STR);
$idpseudo = $connexion->quote($idpseudo, PDO::PARAM_INT);
$date_posted = $connexion->quote($date_posted, PDO::PARAM_STR);
$sql = 'INSERT INTO commentaires VALUES (\'\', "'.$level1.'", "'.$level2.'", "'.$level3.'", "'.$num.'", "'.$commentaire.'", "'.$idpseudo.'", "'.$date_posted.'")';
$req = $connexion->query($sql);
Re: Protection des requetes SQL
Posté : 26 nov. 2011, 14:22
par moogli
vi vi comme ça

Re: Protection des requetes SQL
Posté : 26 nov. 2011, 16:39
par rimie
vi vi comme ça

elle ajoute une apostrophe sur les entrees, est ce que c'est juste?
et pour les caracteres indesirables, j'utilise la methode normale (strip_tags,...), par exemple empecher les codes html...
Re: Protection des requetes SQL
Posté : 26 nov. 2011, 17:47
par xTG
C'est une fonction qui est utilisée aussi pour les requêtes préparées.
Donc en effet elle rajoute des quotes autour des chaînes de caractères.
Et ce à cause de la formalisation des requêtes préparées :
SELECT id, nom
FROM uneTable
WHERE nomCat = ? AND id > ?
On n'y indique aucune quote, et lors de l'ajout des paramètres la fonction les ajoute au besoin suivant le type de donnée.
Re: Protection des requetes SQL
Posté : 26 nov. 2011, 22:59
par moogli
oui j'avais pas fait gaffe aux quote que tu avais mis.
Attention les quote ça dépend de ce que tu utilise comme type pour l’échappement. si tu utilise int il n'en met pas (les entier ne sont pas entouré par des quotes).
@+
Re: Protection des requetes SQL
Posté : 27 nov. 2011, 04:51
par rimie
donc que dois je utiliser pour securiser mes requetes?
Re: Protection des requetes SQL
Posté : 27 nov. 2011, 09:16
par xTG
Bah je t'ai répondu non ?
De plus si tu as lu la documentation :
PDO::quote() place des guillemets simples autour d'une chaîne d'entrée, si nécessaire et protège les caractères spéciaux présents dans la chaîne d'entrée, en utilisant le style de protection approprié au pilote courant.