entschärfter String

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • entschärfter String

    Hallo,

    ich habe mal eine Frage ob ich da was richtig verstehe.

    Über ein Formular kann der Besucher einen Text in eine Mysql eintragen. An anderer Stelle werden diese eingetragenen Texte wieder angezeigt.

    Die übermittelten Daten werden mit htmlspecialchars und stripslashes
    entschärft und in die Mysql abgelegt, mysql_real_escape_string kommt dabei zur Anwendung


    Mir erzählt jetzt aber jemand das ich die selbe Behandlung machen müsse wenn ich diese Texte aus der Datenbank auslese und darstellen wollte.

    Ich bin der Meinung das die Behandlung vor dem Abspeichern genügt.

    Was ist richtig?

    Und genügt die Behandlung um schädlichen Code auszuschließen?

    Danke

  • #2
    SQL-Escaping bei Datenbankabfragen. HTML-Escaping bei der Ausgabe. Nicht beide Escapings vermischen oder vertauschen.

    stripslahses brauchst du gar nicht, wenn Magic Quotes ausgeschaltet sind.

    Kommentar


    • #3
      Artikel:Kontextwechsel − SELFHTML Wiki
      Vollständig durcharbeiten, auch die zweite Seite – dann sollten keine Fragen mehr offen sein.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Hallo,


        also ich habe den Kontextwechselartikel durchgeschaut.

        Also immer wenn Daten zwischen PHP und Mysql ausgetauscht werden (egal ob SELECT, INSERT oder Update) nennt man das einen Kontextwechsel. Und immer wenn ein Kontextwechsel stattfindet ist die Funktion mysql_real_escape_string anzuwenden.

        Habe ich das soweit richtig verstanden?

        Diese Funktion verwende ich ja in meinen Skripten.


        Bei der Ausgabe durch PHP sollte ich die Funktion htmlspecialchars nutzen.


        Ich stelle meine Frage mal anders. Wenn ich Daten aus der Mysql abrufe, (Diese Daten wurden vor dem Ablegen in die Datenbank mit htmlspecialchars bearbeitet) muß ich die dann trotzdem mit htmlspecialchars noch mal bearbeiten?

        Kommentar


        • #5
          Zitat von devas Beitrag anzeigen
          Diese Daten wurden vor dem Ablegen in die Datenbank mit htmlspecialchars bearbeitet
          Das ist falsch. HTML-Escaping wird bei der HTML-Ausgabe angewandt und nicht bei Datenbankabfragen. Es wird also niemals vorkommen, dass mit htmlspecialchars() behandelte Werte in der Datenbank landen. Aber das hab ich ja schon gesagt.

          Kommentar


          • #6
            Hi,

            hab ich jetzt verstanden.




            Ich versuche mal mein Problem anders zu erklären.

            Nehmen wir an ich habe ein Gästebuch.

            Besucher können Einträge machen, aber sie sollen keinen Link setzten oder andere Dateien von extern einbinden können.

            Beiträge die ich schreibe, sollen das aber können.

            Wenn htmlspecialchars() nun nach dem Auslesen aus der Mysql und vor der Ausgabe angewendet wird sind meine Beiträge auch ohne Link.

            Daher dachte ich htmlspecialchars() nur auf die Einträge der Besucher vor dem Abspeichern in der Mysql abzuspeichern und nach der Ausgabe darauf zu verzichten.

            Kommentar


            • #7
              Und wenn ich die Eingaben der Besucher mit strip_tags bearbeite vor dem Abspeichern in der Mysql und vor der Ausgabe irgendwie die Beiträge von mir und den Besuchern unterscheide und die einen mit htmlspecialchars() behandel und die anderen nicht?

              Kommentar


              • #8
                Zitat von devas Beitrag anzeigen
                Wenn htmlspecialchars() nun nach dem Auslesen aus der Mysql und vor der Ausgabe angewendet wird sind meine Beiträge auch ohne Link.

                Daher dachte ich htmlspecialchars() nur auf die Einträge der Besucher vor dem Abspeichern in der Mysql abzuspeichern und nach der Ausgabe darauf zu verzichten.
                In dem Fall wäre es IMHO sogar vertretbar mit htmlspecialchars() behandelte Werte in der Datenbank zu speichern, da es sich ja offensichtlich um HTML-Daten in der Datenbank handelt. Das ist aber ein Ausnahmefall.

                Kommentar

                Lädt...
                X