Schützt mysql_real_escape_string() vollständig vor SQL-Injection?
Kürzlich wurde behauptet, dass mysql_real_escape_string() mit bestimmten asiatischen Zeichenkodierungen umgangen werden kann , insbesondere Big5 und GBK. Ist diese Behauptung gültig und wenn ja, wie können Sie Ihre Website schützen, ohne auf vorbereitete Aussagen zurückzugreifen?
Die Sicherheitslücke
Laut Stefan Esser, mysql_real_escape_string() stellt eine Sicherheitslücke dar, wenn der Befehl SET NAMES verwendet wird. Dieser Befehl ändert die Zeichenkodierung, wodurch mysql_real_escape_string() bestimmte Multibyte-Kodierungen, die Backslashes als zusätzliche Bytes verwenden, nicht berücksichtigt. Dieses falsche Escapezeichen kann die Sicherheit Ihrer Website gefährden.
Sicherheitsmaßnahmen
Während die UTF-8-Kodierung nicht anfällig für diesen Exploit ist, ist es wichtig, mysql_set_charset zu verwenden, um Kodierungen sicher zu ändern . Diese Funktion ist jedoch nur in neueren PHP-Versionen verfügbar. Wenn Sie keine vorbereiteten Anweisungen oder mysql_set_charset verwenden können, müssen Sie möglicherweise nach alternativen Methoden suchen, um Ihre Website vor SQL-Injection-Angriffen zu schützen.
Das obige ist der detaillierte Inhalt vonIst „mysql_real_escape_string()' wirklich sicher: Können asiatische Zeichenkodierungen seinen Schutz umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!