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

Verwendung von Parametern für mysql_query

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 !