sql >> Database >  >> RDS >> Mysql

Beschermt mysql_real_escape_string() VOLLEDIG tegen SQL-injectie?

Volgens Stefan Esser, "mysql_real_escape_string() [is] niet veilig wanneer SET NAMES wordt gebruikt."

Zijn uitleg, van zijn blog :

NAMEN INSTELLEN wordt meestal gebruikt om de codering om te schakelen van wat standaard is naar wat de toepassing nodig heeft. Dit wordt gedaan op een manier die mysql_real_escape_string weet hier niets van. Dit betekent dat als je overschakelt naar een multi-byte-codering die backslash als 2e 3e 4e ... byte toestaat, je in de problemen komt, omdat mysql_real_escape_string ontsnapt niet correct. UTF-8 is veilig...

Een veilige manier om de codering te wijzigen is mysql_set_charset , maar dat is alleen beschikbaar in nieuwe PHP-versies

Hij vermeldt wel dat UTF-8 veilig is.



  1. 3 manieren om een ​​getal op te maken tot 2 decimalen in Oracle

  2. Bestel varchar string als numeriek

  3. Script om varbinaire gegevens op schijf op te slaan

  4. Kan ik een UNIQUE-beperking aan een PostgreSQL-tabel toevoegen nadat deze al is gemaakt?