dedlfix: Ajax: Problem mit Hochkomma " => \"

Beitrag lesen

Hi!

habe mich in die Materie mal reingelesen. "magic_quotes" wurden zum Schutz von Datenbanken (SQL-Injection) eingeführt,
Diesen Schutz bieten sie aber nicht.

Die MQ behandeln zwar alle für MySQL unbedingt notwendigen Zeichen, aber sie wirken an der falschen Stelle. Es werden zum einen nur die Eingangsdaten behandelt, nicht die, die anderswo herkommen und zum DBMS gelangen sollen, und zum anderen will man vielleicht die Eingangsdaten erst einmal prüfen und gegebenenfalls dem Eingebenden wieder zur Korrektur vorlegen oder sie gleich gar nicht ins DBMS schicken, dann stören die MQs nur. Deswegen bieten sie keinen umfassenden Schutz und können sogar störend wirken. Außerdem sind sie deswegen schon seit langem deprecated. Es ist also besser, selbst und richtig die Kontextwechsel zu berücksichtigen.

Gegen SQL-Injection hilft, die jeweilige Funktion der Datenbank aufzurufen (bei mysql wäre das z.B. mysql_real_escape_string oder so ähnlich).

Nicht nur gegen SQL-Injection. Auch bei lauteren Absichten ist es kontraproduktiv, Syntaxfehler wegen nicht maskierter Zeichen zu bekommen.

Ob das bei prepared-Statements nötig ist, weiß ich nicht. Das sollen die Experten beantworten.

Generell nicht, wenn man den vorhandenen Platzhaltermechanismus verwendet.

Lo!