sql >> Base de Datos >  >> RDS >> Mysql

¿Mysql_real_escape_string() protege COMPLETAMENTE contra la inyección de SQL?

Según Stefan Esser, "mysql_real_escape_string() [no] es seguro cuando SET NAMES se utiliza."

Su explicación, de su blog :

SET NAMES generalmente se usa para cambiar la codificación de lo que es predeterminado a lo que necesita la aplicación. Esto se hace de una manera que mysql_real_escape_string no sabe de esto. Esto significa que si cambia a una codificación de varios bytes que permite una barra invertida como 2.º 3.º 4.º… byte, tendrá problemas, porque mysql_real_escape_string no escapa correctamente. UTF-8 es seguro...

La forma segura de cambiar la codificación es mysql_set_charset , pero eso solo está disponible en las nuevas versiones de PHP

Sin embargo, menciona que UTF-8 es seguro.