Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql_real_escape_string() protège-t-il COMPLÈTEMENT contre l'injection SQL ?

Selon Stefan Esser, "mysql_real_escape_string() [n'est] pas sûr lorsque SET NAMES est utilisé."

Son explication, sur son blog :

SET NAMES est généralement utilisé pour changer l'encodage de ce qui est par défaut à ce dont l'application a besoin. Ceci est fait d'une manière que mysql_real_escape_string ne sait pas à ce sujet. Cela signifie que si vous passez à un encodage multi-octets qui autorise la barre oblique inverse comme 2e 3e 4e… octet, vous rencontrez des problèmes, car mysql_real_escape_string ne s'échappe pas correctement. UTF-8 est sûr…

Un moyen sûr de changer l'encodage est mysql_set_charset , mais cela n'est disponible que dans les nouvelles versions de PHP

Il mentionne cependant que l'UTF-8 est sûr.