Sven Rautenberg: addslashes?

Beitrag lesen

Moin!

In den meisten Manuals steht man sollte "addslashes" verwenden wenn man Datenbankeinträge macht bei denen Daten per Post GET usw. übergeben werden und wo event. Hochkomma etc. vorkommen könnten. Beispiel O'reilly.

Diese Information ist böse, falsch und gefährlich! Mach das nie!

addslashes() fügt ohne Berücksichtigung der tatsächlichen Anforderungen der verwendeten Datenbank und deren aktueller Connectionparameter vor allen Anführungszeichen einen Slash ein.

Dummerweise sind Anführungszeichen nicht unter allen Umständen die einzigen Zeichen, die auf diese Weise escaped werden müssen, und ein Slash ist auch nicht bei allen Datenbanken das korrekte Escape-Zeichen!

Eigentlich alle Datenbanken bringen in ihrer Client-API eine Funktion zum korrekten Escapen mit. MySQL bietet das noch viel zu unbekannte mysql_real_escape_string().

Mit Prepared Statements ist diese Diskussion allerdings überflüssig, da das Escaping nur dazu dienen soll, den Datenteil korrekt vom SQL-Programmteil zu trennen, wenn man sich sein SQL-Statement zusammenmischt. Bei Prepared Statements geschieht die Trennung automatisch dadurch, dass im SQL-Teil nur Platzhalter angegeben und die Daten über einen separaten Kanal hinzugefügt werden.

- Sven Rautenberg

--
"Love your nation - respect the others."