Ist mysql_real_escape_string() ein schwerwiegender Fehler?
Trotz Behauptungen über seine Unzuverlässigkeit bleibt mysql_real_escape_string() ein wertvolles Werkzeug zum Erstellen eigener vorbereiteter Anweisungen . Hier ist eine Aufschlüsselung seiner Funktionalität und wie man es effektiv nutzt.
mysql_real_escape_string() erklärt
In der MySQL C API-Dokumentation heißt es: „Wenn Sie das Zeichen ändern müssen Für den Verbindungssatz sollten Sie die Funktion mysql_set_character_set() verwenden, anstatt SET NAMES (oder SET CHARACTER) auszuführen SET)-Anweisung.“
Das bedeutet, dass Sie zur korrekten Verwendung von mysql_real_escape_string() mysql_set_charset() verwenden sollten. mysql_set_charset() von PHP spiegelt mysql_set_character_set() von MySQL wider.
Proof Code
<?php $mysqli = new mysqli("localhost", "username", "password", "database"); // Set the character set using mysql_set_charset() $mysqli->set_charset("utf8mb4"); // Prepared statement using mysql_real_escape_string() $stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param('s', mysql_real_escape_string($_GET['username'])); $stmt->execute(); ?>
In diesem Beispiel stellt mysql_set_charset() sicher, dass die Verbindung den Zeichensatz utf8mb4 verwendet. Dies ermöglicht es mysql_real_escape_string(), Zeichen ordnungsgemäß zu verarbeiten, die ansonsten anfällig für SQL-Injection sein könnten.
Fazit
Während es wichtig ist, die Einschränkungen von mysql_real_escape_string() zu verstehen, ist die Verwendung von In Verbindung mit mysql_set_charset() können Sie damit effektiv Ihre eigenen vorbereiteten Anweisungen erstellen. Durch die Durchführung dieser Schritte können Sie die Risiken der SQL-Injection mindern und die Sicherheit Ihrer Anwendungen aufrechterhalten.
Das obige ist der detaillierte Inhalt vonIst „mysql_real_escape_string()' wirklich fehlerhaft oder wird es einfach missverstanden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!