Posté par Marotte ⛧ .
En réponse au journal Fin du monde en vue ?.
Évalué à -1.
Dernière modification le 14 septembre 2016 à 22:39.
J’utilise les prepared statements, je sais que c’est plus sûr, c’est aussi plus pratique à coder et très souvent plus performant. C’est inévitable de passer par là en faisant du SQL. Cependant je me suis toujours poser une question.
Prepared statements are resilient against SQL injection, because parameter values, which are transmitted later using a different protocol, need not be correctly escaped. If the original statement template is not derived from external input, SQL injection cannot occur.
Les variables que l’on va « jouer » contre ce template dérivent bien bien d’une source extérieure... Seulement le SGBD va pouvoir... ne pas se faire avoir... car il a d’un côté un modèle et de l’autre une liste de paramètres. On se repose sur l’implémentation du SGBD (et aussi des bibliothèques que l’on utilise).
Cela dit, implémenter ce mécanisme coté code ne semble pas insurmontable. Si on utilise des chaînes modèles (qui peuvent même être des constantes) avec des placeholders et que l’on "sanitize" chaque variable individuellement on se met à l’abris des injections SQL.
Évidemment après si on construit sa requête à coup de simples concaténations à l’arrache, c’est sûr...
[^] # Re: faudrait donner quelques explications.
Posté par Marotte ⛧ . En réponse au journal Fin du monde en vue ?. Évalué à -1. Dernière modification le 14 septembre 2016 à 22:39.
J’utilise les prepared statements, je sais que c’est plus sûr, c’est aussi plus pratique à coder et très souvent plus performant. C’est inévitable de passer par là en faisant du SQL. Cependant je me suis toujours poser une question.
Les variables que l’on va « jouer » contre ce template dérivent bien bien d’une source extérieure... Seulement le SGBD va pouvoir... ne pas se faire avoir... car il a d’un côté un modèle et de l’autre une liste de paramètres. On se repose sur l’implémentation du SGBD (et aussi des bibliothèques que l’on utilise).
Cela dit, implémenter ce mécanisme coté code ne semble pas insurmontable. Si on utilise des chaînes modèles (qui peuvent même être des constantes) avec des placeholders et que l’on "sanitize" chaque variable individuellement on se met à l’abris des injections SQL.
Évidemment après si on construit sa requête à coup de simples concaténations à l’arrache, c’est sûr...