Heim >Datenbank >MySQL-Tutorial >Ist „mysql_real_escape_string()' wirklich sicher gegen SQL-Injection?
Behebung der Mängel von mysql_real_escape_string()
Trotz seiner weit verbreiteten Verwendung in PHP-Anwendungen haben einige Bedenken hinsichtlich der Sicherheitslücken von mysql_real_escape_string( ). Diese Funktion soll SQL-Injection-Angriffe verhindern, indem Sonderzeichen in Benutzereingaben maskiert werden.
Ist mysql_real_escape_string() völlig unzureichend?
Die MySQL-C-API-Dokumentation erkennt ein Potenzial Problem mit mysql_real_escape_string(). Es wird empfohlen, die Verwendung von SET NAMES/SET CHARACTER SET-Anweisungen zum Ändern des Zeichensatzes der Verbindung zu vermeiden. Stattdessen sollte die Funktion mysql_set_character_set() aufgerufen werden, bevor mysql_real_escape_string() verwendet wird.
Code prüfen
Die PHP-Funktion mysql_set_charset() ändert den von mysql_real_escape_string verwendeten Zeichensatz (). Dies wird im folgenden Codeausschnitt veranschaulicht:
<?php // Connect to MySQL and select the database $link = mysqli_connect("localhost", "user", "password", "database"); // Set the character set for the connection mysql_set_charset($link, "utf8"); // Escape the input using mysql_real_escape_string() $escaped_input = mysql_real_escape_string($link, $input); // Use the escaped input in a SQL query $query = "SELECT * FROM table WHERE field = '$escaped_input'";
Durch Befolgen dieses Ansatzes kann der von mysql_real_escape_string() verwendete Zeichensatz explizit festgelegt werden, um sicherzustellen, dass Sonderzeichen korrekt maskiert werden.
Das obige ist der detaillierte Inhalt vonIst „mysql_real_escape_string()' wirklich sicher gegen SQL-Injection?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!