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.