BlaBla: Verständnisfrage zu magic_quotes_gpc und Datenbankkommunikation

Hallo!

Ich bin gerade dabei die Kommunikation zwischen PHP und MySQL halbwegs sicher zu gestalten. Habe auch schon div. Tutorials durchgelesen und denke, dass das jetzt auch ganz gut funktioniert. Ganz sicher bin ich mir aber nicht. Vielleicht könnt ihr mir ja bestätigen, dass ich soweit alles richtig verstanden habe.

Also. Wenn ich aus einem Formular INSERT- oder UPDATE-Statements ausführe oder Kriterien in der WHERE Klausel übergebe verwende ich mysql_real_escape_string() um bestimmte Zeichen zu Maskieren.
z.B. wird aus Das O'Reilly Buch "BlaBla" liegt auf c:\ in der Datenbank Das O'Reilly Buch "BlaBla" liegt auf c:\

Wenn ich etwas aus der Datenbank anzeigen will verwende ich hingegen stripslashes() damit wieder alles korrekt angezeigt wird.

Ich glaube soweit ist das OK, oder?

Laut phpinfo() und get_magic_quotes_gpc()ist auf dem Webserver magic_quotes_gpc aktiviert. Alle anderen magic_quotes Einstellungen sind deaktiviert.
In div. Tutorials kann man nun lesen, dass wenn magic_quotes_gpc aktiviert ist, vor der Verwendung von mysql_real_escape_string(), stripslashes() anzuwenden ist. Angeblich werden die Daten sonst doppelt maskiert.
Nur bei mir kann ich da keinen Unterschied feststellen. Ob ich nun vorher stripslashes() anwende oder nicht. Bei mir sieht das Ergebnis immer gleich aus.
Spielen da event. noch andere Einstellungen mit, kann ich das stripslashes() weglassen oder verstehe ich etwas falsch?

Danke!
Karlo

  1. Hello,

    Wenn ich etwas aus der Datenbank anzeigen will verwende ich hingegen stripslashes() damit wieder alles korrekt angezeigt wird.

    Nein. Das ist falsch.

    Die hinzugefügten Maskierungen gelten nur für die Textschnittstelle der Datenbank. In der Datenbank selber werden sie nicht gespeichert, wenn alles richtig konfiguriert ist.

    Lies Dir bitte den Artikel von Dedlfix durch
    http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel

    Der sollte Dir da hoffentlich weiterhelfen.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo!

      Lies Dir bitte den Artikel von Dedlfix durch
      http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel

      Der sollte Dir da hoffentlich weiterhelfen.

      Danke, der Artikel ist sehr hilfreich

      Liebe Grüße aus dem schönen Oberharz

      Liebe Grüße aus dem schönen Niederösterreich

  2. Hi!

    Das andere wurde ja schon beantwortet, hier der Rest.

    Laut phpinfo() und get_magic_quotes_gpc()ist auf dem Webserver magic_quotes_gpc aktiviert. Alle anderen magic_quotes Einstellungen sind deaktiviert.

    Das Feature ist schon lange auf der Abschussliste, da es an der falschen Stelle agiert und nur dann einigermaßen sinnvoll ist, wenn die Daten ohne weitere Verarbeitungen den Weg in ein SQL-Statement finden. Für alle anderen Anwendungen sind die zusätzlichen Zeichen eher konktraproduktiv. Da du dich jetzt selbst um sichere Programmierung kümmerst, deaktiviere es am besten generell, oder mach seine Auswirkungen einmalig am Scriptanfang rückgängig (Disabling Magic Quotes). Dann kannst du den dafür eingefügten Code einfach entfernen, wenn das Feature generell abgeschaltet worden ist.

    In div. Tutorials kann man nun lesen, dass wenn magic_quotes_gpc aktiviert ist, vor der Verwendung von mysql_real_escape_string(), stripslashes() anzuwenden ist. Angeblich werden die Daten sonst doppelt maskiert.

    Generell gesehen ja. Allerdings sollte man es nicht direkt vor der Verwendung von mysql_real_escape_string() bereinigen, sondern gleich die Eingangsdaten putzen, damit sie in besser verarbeitbarer Rohform vorliegen.

    Nur bei mir kann ich da keinen Unterschied feststellen. Ob ich nun vorher stripslashes() anwende oder nicht. Bei mir sieht das Ergebnis immer gleich aus.

    Dann machst du was falsch. Schau dir die Daten (am besten mit var_dump()) an, im Zweifelsfall in der Quellcode-Ansicht des Browsers. Und das am besten vor und nach jedem Verarbeitungsschritt.

    Spielen da event. noch andere Einstellungen mit, kann ich das stripslashes() weglassen oder verstehe ich etwas falsch?

    Für die Magic Quotes in GET/POST/COOKIE ist nur magic_quotes_gpc zuständig.

    Lo!

    1. Hi!

      Dann machst du was falsch. Schau dir die Daten (am besten mit var_dump()) an

      Gute Idee. magic_quotes_gpc macht ja doch was. Dann werde ich's mal deaktivieren.

      Danke!