Bewertung der Integrität von mysql_real_escape_string()
Es wurden Bedenken hinsichtlich der Zuverlässigkeit von mysql_real_escape_string() beim Schutz von Datenbankabfragen vor SQL-Injection-Angriffen geäußert . Kritiker verweisen auf ältere Artikel, die auf mögliche Mängel in der Fähigkeit der Funktion hinweisen, angemessenen Schutz zu bieten.
MySQL-Dokumentation
Die MySQL-C-API-Dokumentation für mysql_real_escape_string() erkennt diese Bedenken an:
If you need to change the character set of the connection, you should use the mysql_set_character_set() function rather than executing a SET NAMES (or SET CHARACTER SET) statement. mysql_set_character_set() works like SET NAMES but also affects the character set used by mysql_real_escape_string(), which SET NAMES does not.
PHPs Gegenstück
In PHP funktioniert mysql_set_charset() auf ähnliche Weise wie MySQLs mysql_set_character_set() und dient als PHP-Gegenstück.
Proofcode
<?php $str = "'mystring'"; // Set encoding mysql_set_charset('utf8'); // Escape string with correct encoding $escaped_str = mysql_real_escape_string($str);
Durch die Verwendung von mysql_set_charset() zum Ändern der Codierung vor der Verwendung von mysql_real_escape_string() stellen Sie sicher, dass der Zeichensatz korrekt eingestellt ist und die Funktion wie vorgesehen funktioniert. Dies berücksichtigt Bedenken hinsichtlich potenzieller Schwachstellen und ermöglicht mysql_real_escape_string() einen effektiven Schutz vor SQL-Injection-Angriffen.
Das obige ist der detaillierte Inhalt vonIst mysql_real_escape_string() immer noch ein zuverlässiger Schutz gegen SQL-Injection?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!