molily: Reihenfolge der Auswertung?

Beitrag lesen

{"foo":"\u003C/script\u003E\u003Cscript\u003Ealert(/XSS/)\u003C/script\u003E"}

Warum codiert man dann für die Übertragung von X nach JavaScript nicht gleich alle nicht numerischen Ausgaben in Unicode.

Was meinst du damit? In JSON-Strings sämtiche Zeichen wie oben mit Unicode-Escape-Sequences maskieren? Man tut es nicht, weil ein Zeichen dadurch 6 anstatt im Idealfall einen Byte verbraucht. Sieht man an obigem Beispiel ja.

Was mir auch noch nicht klar ist, ist die Verarbeitungsreihenfolge.

  1. HTML/JS-Dokument wird ausgeliefert.
  2. HTML-Parser interpretiert das Markup
  3. HTML-Parser ersetzt die Entities im HTML
  4. HTML-Parser stürzt sich auf das JavaScript und übergibt es an den JS-Parser

Das ist im Groben richtig, allerdings werden Zeichen- und Entity-Referenzen in script-Elementen NICHT ersetzt, wie gesagt.

Wann wird gerendert?

Die Seite im Browser? Die wird inkrementell gerendert, während der Parser noch aktiv ist und sich der DOM-Tree nach und nach aufbaut. Siehe den HTML5-Parsing-Algorithmus:

http://www.w3.org/TR/html5/syntax.html#parsing

Die Reihenfolge hat doch einen gravierenden Einfluss auf die Escaping-Stategien.

Die Verarbeitungsreihenfolge entspricht zumeist der Sprachverschachtelung. Verschachtelte Sprachen können nur »von außen nach innen« geparst werden.

Bei HTML gibt es den Sonderfall, dass eingebettetes JavaScript das Parsing anhält und das Dokument während des Parsens verändern kann (siehe das Schaubild im HTML5-Standard). Siehe auch meine JavaScript-Doku zur Einbindung von JavaScript mit dem script-Element.

Es gibt also mehr eine Gleichzeitigkeit beim Parsen von HTML und Parsen/Ausführen von JavaScript. Das hat aber keine besonderen Auswirkungen auf die Escape-Strategie. Für das Escaping zählt die Verschachtelung und die Regeln des HTML-Parsers für den Inhalt von script-Elementen.

Ist es irgendwie schädlich oder falsch, wenn man Variablenwerte in JS immer in "" einschließt?

Hat das denn jemand behauptet?

Strings in JavaScript kann man in " oder ' einschließen, das sagte ich bereits.

JSON verwendet immer Double-Quotes als Stringbegrenzer, erlaubt keine Single-Quotes.

Mathias

0 48

PHP array an javascript function übergeben

javascriptnewbie
  • javascript
  1. 0
    dedlfix
  2. 0
    Der Martin
    1. 0
      molily
    2. 0
      javascriptnewbie
      1. 0
        M.
        1. 0

          Gute Idee

          Tom
          • menschelei
      2. 1
        ChrisB
        1. 0
          javascriptnewbie
          1. 0
            molily
            1. 0
              javascriptnewbie
              1. 0
                M.
              2. 6
                molily
      3. 0
        Tom
        1. 0
          javascriptnewbie
          1. 0
            Tom
            1. 0
              Sven Rautenberg
              1. 0

                Nicht nur meckern, zeigen! Escaping für JavaScript-Variablen

                Tom
                1. 0
                  molily
                  1. 0
                    tami
                    1. 0
                      molily
                      1. 0
                        tami
                  2. 0
                    Tom
                    1. 0
                      molily
              2. 0

                PHP json_encode - kontextspezifisches Escaping

                tami
                1. 0
                  tami
                  1. 0
                    molily
                    1. 0
                      Sven Rautenberg
                      1. 0
                        molily
                        1. 0
                          molily
                        2. 0

                          JSON in HTML einbetten

                          molily
                          1. 1

                            JSON in HTML einbetten - RoR "vs" ZF

                            tami
                            1. 0
                              tami
                              1. 0
                                Tom
                                1. 0
                                  molily
                            2. 0
                              molily
                              1. 0
                                tami
                                1. 0
                                  tami
                              2. 0

                                JSON-Paket mit composer vom Zend Framework holen

                                tami
                              3. 2

                                JSON in HTML einbetten

                                molily
                                • php
                          2. 0

                            Reihenfolge der Auswertung?

                            Tom
                            1. 0
                              tami
                            2. 0
                              tami
                            3. 0

                              Reihenfolge der Auswertung? Codierung, kleine Korrektur

                              Tom
                            4. 0
                              molily
                              1. 0
                                Tom
                                1. 0
                                  molily
                  2. 0
                    Tom