mysql_real_escape_string et sécurité - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : mysql_real_escape_string et sécurité (/showthread.php?tid=4537) |
mysql_real_escape_string et sécurité - Ekilio - 15-01-2010 Bonjour à tous, Je me baladais sur le web quand je suis tombé sur un sujet assez interessant qui se trouve ici. En gros, ça explique que mysql_real_escape_string n'est pas sûr car dans certains cas (en gros, si un SET NAMES n'a pas été utilisé au début de la connexion) on peut néanmoins executer une injection SQL sur une base (si elle utilise un encodage exotique, certes). A coté de cela, je me suis penché depuis quelques temps sur le principe des requêtes préparées ; et comme elles suppriment tout risque d'injection SQL (et ce sans avoir besoin d'utiliser mysql_real_escape_string ou autre fonction d'échappement) tout en améliorant les performances, et qu'en plus PDO est très simple à utiliser, je me demandais : est-ce qu'il y a encore un intérêt à utiliser les anciennes structures et est-ce que mysql_real_escape_string peut être considéré comme une sécurité ? Personnellement, et à la vu de ce post, j'aurais tendance à dire que c'est une partie de sécurité, mais que c'est surtout se compliquer la vie pour rien. Y a-t-il des avantages à l'utiliser quand même, sans passer par PDO ? RE: mysql_real_escape_string et sécurité - Ter Rowan - 15-01-2010 de ce que je crois, a terme il n y aura plus que PDO cependant, PDO ce n'est pas les requêtes préparées, c'est une couche pour requêter que ce soit pour des requêtes préparées ou non. et si tu lances une requête sans passer par la préparation ( a priori plus rapide que la préparée quand tu ne dois la lancer qu'une fois, mais a confirmer)alors PDO ne te garantie rien de plus qu'avant RE: mysql_real_escape_string et sécurité - Ekilio - 15-01-2010 Effectivement, à terme (à partir de PHP 6) les extensions mysql et mysqli vont disparaitre. Et effectivement, PDO permet de lancer des requêtes non-préparées ; néanmoins, même en ne devant les exécuter qu'une seule fois, je considère que le gain de sécurité et de simplicité mérite d'utiliser des requêtes non-préparées pour tout ce qui demande des paramètres. D'autant que le problème avec PDO, c'est que mysql_real_escape_string ne fonctionne plus (puisqu'il n'y a pas de connexion via mysql_connect), donc cela alourdi d'autant le processus de vérification et cela ralenti l'ensemble du script, à mon avis, de protéger une requête plutôt que de l'exécuter en préparée. RE: mysql_real_escape_string et sécurité - Sephi-Chan - 15-01-2010 Je te conseille d'utiliser PDO et les requêtes préparées (quand ce sont des requêtes avec des arguments, bien sûr, une requête statique préparée n'a pas vraiment de sens). Ça fait bien longtemps qu'on ne devrait plus parler des fonctions mysql_*… Sephi-Chan RE: mysql_real_escape_string et sécurité - php_addict - 15-01-2010 (15-01-2010, 02:47 PM)Sephi-Chan a écrit : Ça fait bien longtemps qu'on ne devrait plus parler des fonctions mysql_*… aie ai aie...c'est ce que je fais tout le temps moi ....grr... je vais donc de ce pas me renseigner sur le PDO... RE: mysql_real_escape_string et sécurité - My Hotel - 15-01-2010 Enfin, faut préciser que mysql_ sera ré activable dans PHP6, donc si vous êtes sur un hébergeur ou vous pouvez gérer vos extensions PHP, il n'y a aucun soucis, pas la peine de tout convertir à PDO. De plus, PHP6 est loin d'être sorti, et encore plus loin d'être adopté par les hébergeurs. Mais c'est vrai que si vous commencez un site, autant partir sur de bonnes bases avec PDO dès le début Bye |