Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

O mysql_real_escape_string() protege TOTALMENTE contra injeção de SQL?


De acordo com Stefan Esser, "mysql_real_escape_string() [é] não seguro quando SET NAMES é usado."

Sua explicação, de seu blog :

SET NAMES é geralmente usado para mudar a codificação do que é padrão para o que o aplicativo precisa. Isso é feito de uma forma que mysql_real_escape_string não sabe disso. Isso significa que se você mudar para alguma codificação multi byte que permita a barra invertida como 2º 3º 4º byte, você terá problemas, porque mysql_real_escape_string não escapa corretamente. UTF-8 é seguro…

A maneira segura de alterar a codificação é mysql_set_charset , mas isso só está disponível em novas versões do PHP

Ele menciona que o UTF-8 é seguro, no entanto.