Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Sécurité des "requetes preparees" MySQL

1 réponse
Avatar
Nicob
Salut,

je me demande ce que les gens ici présent pensent de la sécurité
(contre les attaques de type SQL-Injection) des requêtes préparées de
MySQL, utilisées avec des "placeholders".

Exemples tirés de la doc PHP5 :

INSERT INTO City (ID, Name) VALUES (?, ?);
SELECT Name FROM City WHERE name = ?;

J'ai fait quelques tests et regardé sur le Net, tout le monde semble dire
que cette technique est OK d'un point de vue Sécurité, le serveur MySQL
sachant faire la différence entre la requête SQL et la valeur d'un des
champs et ne permettant donc pas de manipuler la requête.

Confirmation, infirmation et explication du fonctionnement interne de
MySQL bienvenus ...


Nicob

1 réponse

Avatar
Julien Salgado
Nicob a écrit :
Salut,

je me demande ce que les gens ici présent pensent de la sécurité
(contre les attaques de type SQL-Injection) des requêtes préparées de
MySQL, utilisées avec des "placeholders".

Exemples tirés de la doc PHP5 :

INSERT INTO City (ID, Name) VALUES (?, ?);
SELECT Name FROM City WHERE name = ?;


C'est dans la doc de mysqli qu'on trouve cet exemple il me semble, le
seul intérêt que je trouve à mysqli est de pouvoir séparer la chaine de
caractères des autres types (fonction bind_param), par contre il n'y a
pas de vérification plus poussée sur les chaines (on peut mettre un
point-virgule dans une chaine) faite par bind_param. Pour ce qui est de
la fonction de query je n'ai pas regardé le détail du fonctionnement,
mais il semble que les dernières versions de Mysql soit capables de
faire du typage et de la vérifications de format avec un simili de
procédures stockées.

J'ai fait quelques tests et regardé sur le Net, tout le monde semble dire
que cette technique est OK d'un point de vue Sécurité, le serveur MySQL
sachant faire la différence entre la requête SQL et la valeur d'un des
champs et ne permettant donc pas de manipuler la requête.


Dans toutes les docs concernant mysqli il est précisé qu'il n'est plus
nécessaire d'utiliser la fonction mysql_real_escape_string, ce qui
laosse à supposer que c'est bon. Mais je n'ai jamais vu écrit
explicitement que l'utilisation de ces fonctions empéchait l'injection
et surtout par quel mécanisme. Et surtout comment fait-on quand on veut
faire une base de donnée sur les exemples d'injection...

Confirmation, infirmation et explication du fonctionnement interne de
MySQL bienvenus ...



De même,



--
Julien