Seite 1 von 1

addslashes richtig einsetzen

Verfasst: 29.07.2008, 13:36
von smilla
Hi,

auf meiner Seite habe ich bisher addslashes immer verwendet, wenn ich etwas in die datenbank geschrieben habe. Auch wenn ich Daten über GET und POST empfangen habe.

Da es mit ausländischen Namen (Namen mit ') dennoch Probleme gab, habe ich mich auf die Fehlersuche gemacht und dies gefunden aus der PHP Manuel (https://www.php.net/addslashes) gefunden:

"Die PHP-Direktive magic_quotes_gpc hat standardmäßig den Wert on, so dass grundsätzlich die Funktion addslashes() auf alle GET-, POST- und COOKIE-Daten angewendet wird. Verwenden Sie daher die Funktion addslashes() nicht, wenn Strings bereits durch magic_quotes_gpc escaped wurden, ansonsten erhalten Sie doppeltes Escaping. Um herauszufinden, ob der Parameter aktiviert ist, verwenden Sie am Einfachsten die Funktion get_magic_quotes_gpc()."

Okay, nun ist es logisch, wieso es bei mir nicht geht. Ich lesen also weiter und lande hier:

https://www.php.net/manual/de/info.conf ... quotes-gpc

" magic_quotes_gpc boolean
Warnung: Dieses Feature ist DEPRECATED (veraltet) und wird in PHP 6.0.0 ENTFERNT. Sich auf dieses Feature zu verlassen ist in keiner Weise empfehlenswert."

Okay, verstehe ich auch. Meine Frage ist nun was soll ich machen.

Wenn ich überall wo ich GET und POST verwendet einfach das addslashes entferne, würde mein Script auf Seiten nicht laufen, die die Einstellung anders haben (Keine Ahnung ob viele die Einstellung haben). Andernfalls weiß ich nicht, wie es in php6 sein wird, da die Einstellung ja wegfällt. Wird addslashes da dennoch bei GET und POST ausgeführt?

Oder sollte ich zwei für GET und POST mir eine addslashes2 funktion bauen, die erst die Einstellung abfragt und dann entweder nen addslashes macht oder nicht? Aber die Hilfe sagt, man soll sich nicht darauf verlassen.

Was sollte ich am besten anstellen?

Smilla

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Re: addslashes richtig einsetzen

Verfasst: 29.07.2008, 19:46
von Mork vom Ork
smilla hat geschrieben:Oder sollte ich für GET und POST mir eine addslashes2()-Funktion bauen, die erst die Einstellung abfragt und dann entweder nen addslashes macht oder nicht? Aber die Hilfe sagt, man soll sich nicht darauf verlassen.
Die Hilfe meint, dass man sich nicht darauf verlassen soll, dass GPC-Daten maskiert werden. Es geht nicht darum, dass magic_quotes_gpc als eingeschaltet signalisiert wird, aber gar nicht eingeschaltet ist. Die PHP-Fuzzis haben schon haufenweise Mist gebaut, aber so dämlich werden sie (hoffentlich …) nicht sein.

Wenn du also magic_quotes_gpc abfragst und entsprechend reagierst, machst du es richtig.
Ich täte allerdings an deiner Stelle die Option lieber konsequent ausschalten, denn im Allgemeinen stört sie nur und dort, wo es nötig ist, gibt es spezielle Funktionen. Beim Apache schaltest du sie ab, indem du in der zuständigen .htaccess eine Zeile 'php_flag magic_quotes_gpc off' einträgst.

Nebenbei erwähnt sei noch, dass statt der allgemeinen addslashes()-Funktion so möglich lieber eine spezifische verwendet werden sollte, zum Beispiel im Falle von MySQL wäre das mysql_real_escape_string().
Darüber hinaus entbindet weder die eine, noch die andere Funktion davon, Daten in eine Webseite grundsätzlich mittels htmlspecialchars() (oder htmlentities()) abgesichert auszugeben.