Können Sie sich darauf verlassen, dass mysql_real_escape_string() Ihre Abfragen schützt?
Trotz ordnungsgemäßer Verwendung wurden Bedenken hinsichtlich der Zuverlässigkeit von mysql_real_escape_string( ) zum Schutz vor SQL-Injections. Um dieses Problem zu beleuchten, untersuchen wir die Einschränkungen der Funktion und ihre Eignung zum Erstellen benutzerdefinierter vorbereiteter Anweisungen.
Proof Code und Analyse:
Laut dem offiziellen MySQL In der Dokumentation wird die Funktion von mysql_real_escape_string() durch den Zeichensatz der Verbindung beeinflusst. Um eine optimale Leistung zu gewährleisten, empfiehlt es sich, zum Ändern des Zeichensatzes mysql_set_character_set() statt der Anweisungen SET NAMES oder SET CHARACTER SET zu verwenden.
#include <mysql/mysql.h> int main() { // Create a MySQL connection MYSQL *conn = mysql_init(NULL); // Set the character set to UTF-8 using mysql_set_character_set() mysql_set_charset(conn, "utf8", MY_CS_PRIMARY); // Prepare a query using mysql_real_escape_string() char *query = mysql_real_escape_string(conn, "SELECT * FROM users"); // Execute the query mysql_query(conn, query); // Release memory free(query); mysql_close(conn); return 0; }
In diesem Code setzen wir den Zeichensatz mithilfe explizit auf UTF-8 mysql_set_character_set(), um sicherzustellen, dass mysql_real_escape_string() korrekt verwendet wird Kodierung.
Fazit:
Obwohl bestimmte Einschränkungen bestehen können, kann mysql_real_escape_string() dennoch verwendet werden, um rudimentäre vorbereitete Anweisungen zu erstellen. Indem Sie sicherstellen, dass mit mysql_set_character_set() der richtige Zeichensatz definiert wird, können Sie das gewünschte Maß an Sicherheit gegen SQL-Injections aufrechterhalten.
Das obige ist der detaillierte Inhalt vonIst mysql_real_escape_string() wirklich zuverlässig, um SQL-Injection zu verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!