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, omdatmysql_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.