Zunächst einmal, worum es hier geht, heißt SQL-Injection . Es ist im Grunde nur die Möglichkeit, Abfragen gegen die Datenbank durch Benutzereingaben zu ändern.
Sehen wir uns ein Beispiel an:
Abfrage:
SELECT temp1 FROM temp WHERE temp2 = 'VAR1';
Jetzt weisen wir VAR1 folgenden Wert zu:'; DROP TABLE *; --
Und wir bekommen:
SELECT temp1 FROM temp WHERE temp2 = ''; DROP TABLE *; --';
Mit mysql_real_escape_string
es würde so aussehen:
SELECT temp1 FROM temp WHERE temp2 = '\'; DROP TABLE *; --'
mysql_real_escape_string
'sichert' einen String für die Verwendung in einer Abfrage.
Aber am Ende sollten Sie aufhören, mysql_*
zu verwenden insgesamt . Sie sind veraltet und gelten als unsicher, wenn es darum geht, SQL-Injection oder andere Mittel zur Manipulation der Abfragen zu verhindern.
Sie sollten einfach aufhören, Abfragen so zu verketten und beginnen Sie mit der Verwendung von vorbereiteten Aussagen , die nicht nur einfacher zu verwenden sind, SQL Injection standardmäßig verhindern, sondern auch die Geschwindigkeit Ihrer Anwendung verbessern können.
Für PHP gibt es zwei Erweiterungen, die das ganze mysql_*
schließen sollen geöffnet:
Und ich sage es noch einmal:Bitte hören Sie auf, mysql_*
zu verwenden !