Les requêtes avec « prepare » pour améliorer la sécurité et éviter les injections SQL…

Comment éviter les injections SQL, tout développeur qui utilise MySQL ou SQL doit se poser la question sur les injections SQL !
Il est vrai qu’il est difficile d’obtenir des informations claires à ce sujet, en effet les dires des uns peuvent omettre des infos essentielles et une attaque porterait alors la responsabilité du blogueur au moins !
En ce qui concerne les injections SQL qui porterait sur une injection « WHERE 1=1 » dans une requête SQLi ou SQL, celà signifierait que la requête porterait un caractère obligatoire de « Commit » MySQL, en fait elle serait efficace sans entrer de motdepasse ou autre obstacle au résultat…
Pour éviter celà il vaut mieux utiliser PDO comme interface de connexion à la Base de Données SQL, ainsi lorque vous faîtes une requête préparée les nom de champs de la table sont échappés et la requête qui porterait un « WHERE 1=1 » (voir ce site) ne comprendrait cette condition comme telle mais comme des nom de champs de table, ainsi la requête échouerait et laisserait les tables tels quels…

Les injections peuvent être éliminées avec « prepare », l’utilisation d’un « execute(array()) » ou d’un « bindValue » ne comporte de différence que dans l’interprétation des variables, avec « bindValue » il faut préciser le type des valeurs, alors que « execute(array()) » interprète toutes les valeurs en String, ainsi l’une ou l’autre manière de donner des valeurs avec vos requêtes préparées ne change pas l’état de sécurité de la requête qui est sure parce que préparéee…
Usez donc chaque fois que vous le pouvez des requêtes avec « prepare »…
Vincent NGUYEN, développeur

Laisser un commentaire