Hat mysql_real_escape_string() nicht behebbare Fehler?
Einige Skeptiker behaupten, dass die Funktion mysql_real_escape_string() grundlegend fehlerhaft ist und SQL-Abfragen nicht zuverlässig schützen kann . Sie verweisen auf veraltete Artikel als Beweismittel.
Kann es für benutzerdefinierte vorbereitete Anweisungen verwendet werden?
Trotz dieser Bedenken ist es immer noch möglich, mysql_real_escape_string() zum Erstellen zu nutzen individuell vorbereitete Abrechnungen. Es erfordert jedoch sorgfältige Aufmerksamkeit bei der Verarbeitung von Zeichensätzen.
Lösung:
Laut der MySQL-C-API-Dokumentation für mysql_real_escape_string() sollten Sie zum Festlegen mysql_set_character_set() verwenden der Zeichensatz. Dadurch wird sichergestellt, dass es auch Auswirkungen auf den von mysql_real_escape_string() verwendeten Zeichensatz hat.
Codebeispiel:
#includeint main() { MYSQL *conn = mysql_init(NULL); mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0); // Change the encoding using mysql_set_charset() mysql_set_charset(conn, "utf8"); // Create a custom prepared statement using mysql_real_escape_string() char query[1024]; mysql_real_escape_string(conn, query, "SELECT * FROM users WHERE username='test'", sizeof(query)); // Execute the query mysql_query(conn, query); mysql_close(conn); return 0; }
Wenn Sie diesem Ansatz folgen und SET NAMES/SET CHARACTER SET vermeiden, können Sie mysql_real_escape_string() effektiv nutzen, um Ihre SQL-Abfragen vor Injektionen zu schützen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3