Ankündigung

Einklappen
Keine Ankündigung bisher.

htmlspecialchars im HTML <head> funktioniert nicht?

Einklappen

Neue Werbung 2019

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

  • #16
    Probier es doch mal aus. Genau das was Du bemängelst ist nicht der Fall. Das sieht doch eigentlich ein Blinder! ¿¿¿

    Raus kommt ein leeres title element nach dem ein script Element kommt, gefolgt von einem synatisch falschen schließenden title element was der Browser halt glatt bügelt…

    Kommentar


    • #17
      Zitat von protestix Beitrag anzeigen
      "...and any tags contained within are ignored."
      Passt doch!
      Alles wird ignoriert, also ist auch kein htmlspecialchars() notwendig, weil's eh ignoriert wird.
      Anders sieht es bei den Metatags aus. Da ist es schon relevant. weil's da nicht ignoriert wird.

      title.html
      HTML-Code:
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="UTF-8">
      <title><title><b>Title of the document</b>""<script>alert("Hallo!");</script></title>
      </head>
      
      <body>
      Content of the document......
      </body>
      
      </html>
      W3 Validator: "Document checking completed. No errors or warnings to show."

      Kommentar


      • #18
        Statt hier sich den Kopf darüber zu zerbrechen und stundenlange Diskussionen zu führen, wann htmlspecialchars() erforderlich ist und wann nicht, wäre es doch wesentlich effizienter htmlspecialchars() immer zu verwenden.

        Dass in einigen Fällen ein htmlspecialchars() erforderlich ist, zeigt doch klar mein Beispiel. Was hat man jetzt davon genau die Fälle rauszusuchen, wo es doch ohne htmlspecialchars() funktioniert? Mit der gleichen Weise könnte man behaupten, dass man keinen Gurt im Auto verwenden muss, weil er eh unnötig ist wenn man keinen Unfall hat. Ja, mag stimmen. Nur lässt sich ein Unfall selten vorplanen...

        Kommentar


        • #19
          Naja, hellbringer , da biste nicht mehr weit von protestix, dass man eben alles mögliche eventuell Gefährliche vermeidet und nur noch a-zA-Z0-9 verwendet, bzw. alles andere raus_replaced. Ich halte eh nicht viel davon es jedem Recht zu machen. Wenn ein Browser das nicht ignoriert, dann Pech für den User, der den Browser verwendet. Schrott unterstützen is nich.

          Kommentar


          • #20
            Zitat von psoido Beitrag anzeigen
            Naja, hellbringer , da biste nicht mehr weit von protestix, dass man eben alles mögliche eventuell Gefährliche vermeidet und nur noch a-zA-Z0-9 verwendet, bzw. alles andere raus_replaced.
            Es geht darum den Kontextwechsel richtig zu behandeln. Nicht mehr und nicht weniger. Das ist komplett simpel und man muss keine Wissenschaft daraus machen.

            Zitat von psoido Beitrag anzeigen
            Ich halte eh nicht viel davon es jedem Recht zu machen. Wenn ein Browser das nicht ignoriert, dann Pech für den User, der den Browser verwendet. Schrott unterstützen is nich.
            Ein Browser kann nicht zaubern. Ein missachteter Kontextwechel kann eben zu Problemen führen. Und es gibt keine magische Technologie, die diese Probleme 100% umgehen kann. Und spätestens dann, wenn deine Seite eine vielfach ausgenutzte Sicherheitslücke hat (egal wer jetzt daran Schuld hat), kriegst DU ein Problem. Denn kein Nutzer will auf eine Seite, die für ihn ein Sicherheitsproblem darstellt. Das kann sogar so weit führen, dass Browser deine Seite komplett blockieren.

            Kommentar


            • #21
              hellbringer , netter Versuch. Die Sicherheitslücke liegt dann nicht an meiner Webseite, sondern am Browser. Aber natürlich ist es schon so, dass ich <script> und andere HTML tags in <title> vermeide. Dafür gäbe es aber die strip_tags() Funktion, die hier besser tut als htmlspecialchars(). Mir ging es nur um die Quotation Marks. Wenn Browser die nicht mehr im title tag ignorieren sollten, dann ist die Seite nicht mehr valide. Da sie es aber tun, und das aus Sicherheitsgründen, müsste ich deswegen nichts tun. Mach ich aber dennoch, aus selbem Grund wie du erwähnt hast.

              Kommentar


              • #22
                Zitat von psoido Beitrag anzeigen
                netter Versuch. Die Sicherheitslücke liegt dann nicht an meiner Webseite, sondern am Browser.
                Das ist deine Meinung. Ändert aber nichts am Ergebnis.

                Zitat von psoido Beitrag anzeigen
                Aber natürlich ist es schon so, dass ich <script> und andere HTML tags in <title> vermeide. Dafür gäbe es aber die strip_tags() Funktion, die hier besser tut als htmlspecialchars().
                Das sind zwei vollkommen unterschiedliche Funktionalitäten. htmlspecialchars() behandelt den Kontextwechsel. strip_tags() entfernt Inhalte. Aber dies ist nicht immer gewünscht. Du machst schon wieder etwas komplizierter, als es eigentlich sein müsste. Verwende doch einfach htmlspecialchars() und alles ist gut. Warum suchst du verzweifelt nach Alternativen, die es aber nie 100% richtig machen? Was gefällt dir an der korrekten Lösung nicht?

                Zitat von psoido Beitrag anzeigen
                Mir ging es nur um die Quotation Marks. Wenn Browser die nicht mehr im title tag ignorieren sollten, dann ist die Seite nicht mehr valide.
                Hier vermischst du zwei Dinge. Nur weil eine Seite valide ist, heißt das noch lange nicht, dass sie erstens sicher ist und zweitens der Inhalt korrekt interpretiert wird.

                Kommentar


                • #23
                  Zitat von psoido Beitrag anzeigen
                  hellbringer , netter Versuch. Die Sicherheitslücke liegt dann nicht an meiner Webseite, sondern am Browser.
                  Unnütze Diskussion hier, egal wie du die "Sicherheitslücke" interpretierst. Die Browser Hersteller sitzen am längeren Hebel, wenn ein Chrome Browser deine Webseite nicht mehr darstellen möchte, dann hast du aktuell 37,5 % deiner potentiellen User ausgesperrt: Link

                  Kommentar


                  • #24
                    Zitat von psoido Beitrag anzeigen
                    dass man eben alles mögliche eventuell Gefährliche vermeidet und nur noch a-zA-Z0-9 verwendet, bzw. alles andere raus_replaced.
                    und du somit du die Daten verkrüppelst, statt einfach den technisch nötigen Kontextwechsel korrekt zu machen. Machs doch einfach richtig.
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar

                    Lädt...
                    X