Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wo kann mysql_real_escape_string verwendet werden, um SQL Injection zu verhindern?

Grundsätzlich jedes Mal, wenn Sie einige unsichere Daten verwenden (Benutzereingabe, Wert aus einer Datenbank, einer Datei oder einer externen Website, d. h. alle Daten, die Sie nicht zu 100 % sind sicherstellen, dass es sicher ist) in einer SQL-Abfrage, sollten Sie es mit mysql_real_escape_string . Beachten Sie, dass gemäß OWASP , diese Funktion ist nicht sicher, um dynamische Tabellennamen zu maskieren (aber dies ist weitaus seltener als das "einfache" Einfügen von Benutzereingaben).

Ich empfehle Ihnen, sich den gesamten OWASP-Artikel über SQL-Injection anzusehen , und auch, um den Rest der Website zu durchsuchen. Es ist eine hervorragende Informationsquelle zur Sicherheit in Webanwendungen.

IMO, die bevorzugte Methode zur Verhinderung von SQL-Injection ist die Verwendung von vorbereitete Erklärungen .

Bitte denken Sie daran, wenn Sie mysql_real_escape_string() verwenden Es funktioniert nur, wenn es innerhalb einer Zeichenfolge verwendet wird, die durch Anführungszeichen getrennt ist. Verwenden Sie es niemals für Werte ohne Anführungszeichen. Dazu gehören numerische Werte; Überprüfen Sie stattdessen, ob die Benutzereingabe tatsächlich numerisch ist.