Laut Stefan Esser, "mysql_real_escape_string()
[ist] nicht sicher, wenn SET NAMES
verwendet wird."
Seine Erklärung, aus seinem Blog :
SET NAMES wird normalerweise verwendet, um die Codierung von der Standardcodierung auf die von der Anwendung benötigte umzuschalten. Dies geschieht auf eine Weise, dass mysql_real_escape_string
weiß davon nichts. Das bedeutet, wenn Sie zu einer Multi-Byte-Codierung wechseln, die Backslash als 2. 3. 4.… Byte zulässt, bekommen Sie Probleme, weil mysql_real_escape_string
entkommt nicht richtig. UTF-8 ist sicher…
Ein sicherer Weg, die Kodierung zu ändern, ist mysql_set_charset
, aber das ist nur in neuen PHP-Versionen verfügbar
Er erwähnt jedoch, dass UTF-8 sicher ist.