dedlfix: [LÖSUNG], wie immer ein PHP-Bug/Unsinnigkeit

Beitrag lesen

Tach!

Weil PHP hier eine Macke hat!

echo htmlspecialchars($_page['body'],  ENT_QUOTES, 'ISO-8859-1');

Man muss für htmlspecialchars neuerdings eine Codierung angeben, damit es zuverlässig arbeitet.

Oh, das ist ja Mist. Die eigentlich interessanten Zeichen sind alle im ASCII-Bereich. Der ist bei UTF-8 und ISO-8859-1 derselbe. htmlspecialchars() stört sich allem Anschein nach an der nicht korrekten Kodierung der Zeichen, die es gar nicht zu verändern gilt. Es nimmt also UTF-8 an, bekommt eine kaputte Zeichensequenz und stellt ohne ein Wort zu sagen die Arbeit ein und verwirft obendrein noch das bisherige Zwischenergebnis. - Die Beschreibung im Handbuch bestätigt diese Annahme und es gibt noch ein paar Flags, mit denen man sich aus dem Regen zurückziehen und unter die Traufe begeben kann (ENT_IGNORE, ENT_SUBSTITUTE, ENT_DISALLOWED).

Andererseits muss man zugeben, dass die obige Vereinfachung nur auf ISO-8859-x und UTF-8 und noch ein paar weitere Kodierungen zutrifft. PHP muss aber auch die wirklich kritischen Zweifelsfälle berücksichtigen, und da ist die Ausgabe eines Leerstrings die sicherheitstechnisch wohl beste Alternative, wenn es auch für den Anwender durch die schweigende Ersetzung recht unangenehm ist, solche Fehler zu suchen.

Warum ist mir das noch nicht aufgefallen? Vermutlich, weil ich nicht mehr mit veralteten Kodierungen zu tun gehabt habe.

dedlfix.

0 49

HTTP und Seiten-Lade-Funktion

TS
  • https
  • php
  1. 0

    HTTP und Seiten-Lade-Funktion, Nachtrag

    TS
    1. 0

      HTTP und Seiten-Lade-Funktion, chunked

      TS
      1. 0
        dedlfix
        1. 0
          TS
          1. 0
            dedlfix
            1. 0
              TS
            2. 0
              Jörg Reinholz
          2. 0
            Der Martin
            • https
            1. 0
              Jörg Reinholz
              1. 0
                TS
                • https
                • php
                • webserver
                1. 0
                  Jörg Reinholz
          3. 0
            woodfighter
            1. 0
              TS
              1. 0
                Jörg Reinholz
                1. 0
                  TS
                  1. 0
                    Der Martin
                    1. 0

                      HTTP und Seiten-Lade-Funktion, Unterschiede?

                      TS
                  2. 0
                    Jörg Reinholz
                    1. 0

                      HTTP und Seiten-Lade-Funktion, Blinker

                      TS
  2. 0
    Jörg Reinholz
    1. 0
      TS
      1. 0
        Jörg Reinholz
        1. 0
          TS
          1. 0
            Jörg Reinholz
  3. 0

    Billige Teillösung - typisch PHP

    TS
    1. 0
      dedlfix
      1. 0
        Tabellenkalk
        • meinung
        1. 0
          Der Martin
          1. 0

            [LÖSUNG], wie immer ein PHP-Bug/Unsinnigkeit

            TS
            • php
            • zur info
            1. 0
              Jörg Reinholz
              1. 0
                TS
                1. 0
                  Jörg Reinholz
                  1. 0
                    TS
                    1. 0
                      Jörg Reinholz
            2. 0
              dedlfix
        2. 0
          TS
          1. 0
            TS
            1. 0
              Jörg Reinholz
              1. 0
                TS
                • php
                • zur info
                1. 0
                  Jörg Reinholz
                  1. 0
                    TS
                    1. 0
                      Jörg Reinholz
                      1. 0

                        Encoding, htmlspecialchars()

                        TS
                        1. 0
                          Jörg Reinholz
                          1. 0
                            Tabellenkalk
                            • zur info
                            1. 0
                              Tabellenkalk
  4. 0

    Bei welchen HTTP Status Codes muss Body gelesen werden?

    TS
    1. 0
      dedlfix