Behandlung von Zeichenreferenzen in den Skript-Tags eines eingebetteten SVGs

9

Dies ist ein xss-Skript:

%Vor%

Der Code zwischen <script> -Tags wird vom Browser in alert(1) übersetzt und ausgeführt.

Aber wenn ich kein <svg> -Tag verwende, wird der Code nicht ins Skript übersetzt. Kann mir jemand sagen, warum das passiert? Wie funktioniert <svg> tag?

    
n3v3rm03 20.06.2015, 10:05
quelle

2 Antworten

4

Die Verwendung von Zeichenreferenzen innerhalb von Script-Tags wird von der. explizit untersagt HTML-Parser gemäß der HTML 5-Spezifikation.

HTML5 hat einen separaten Skript-Parsing-Modus als einen von mehreren Tokenisierungsmodi, die mit dem Kontext variieren. Skript-Parsing erlaubt keine Zeichenreferenzen, einige der anderen Parsing-Modi tun dies.

SVG basiert auf XML, wo die Regeln viel einfacher und einfacher sind. Grundsätzlich sind Zeichenreferenzen überall erlaubt, weil nicht verschiedene kontextsensitive Parsing-Modi sind .

Für SVG in HTML, sagt die HTML-Spezifikation

  

Das SVG-Element aus dem SVG-Namespace wird für die Inhaltsmodelle in dieser Spezifikation in die Kategorien eingebetteter Inhalt, Phrasierungsinhalt und Flussinhalt eingefügt.

Mit anderen Worten, den gesamten SVG-Text als Phrasierungsinhalt analysieren. All SVG ist ein einzelner benutzerdefinierter Tokenisierungsmodus für den HTML 5-Parser.

    
Robert Longson 20.06.2015, 13:56
quelle
0

Da ich mit den Zitaten der anderen Antwort auf die Gründe für dieses Verhalten nicht wirklich zufrieden war, habe ich dieses "Problem" an die WHATWG Mailing-Liste , da es einige mögliche (wenn auch kleine) Sicherheitslücken gibt. Um Ian Hickson (Chefredakteur des HTML5-Standards bei W3C) zu zitieren: wörtlich :

  

Es ist nicht großartig, aber es ist beabsichtigt. Innerhalb von <svg> und <math> Blöcke,   wir verwenden den Parsing-Modus "fremder Inhalt", bei dem das Parsen viel ist   mehr Ähnlichkeit mit dem Legacy-XML-Parsing als das Legacy-HTML-Parsing:

     

Ссылка

     

Beachten Sie insbesondere das spezielle Verhalten für <script> hier   beinhaltet nicht das Ändern des Tokeniser-Modus, wie in   nicht-ausländischer Inhalt.

Roberts Antwort ist im Wesentlichen eine Sammlung korrekter Zitate, die sich auf eigenständigen HTML5- und SVG-Inhalt beziehen. Es gibt jedoch einen separaten Abschnitt bezüglich der Analyse von "fremden Inhalten", der dieses Verhalten erklärt. Und Ian stimmt zu, dass es keine wirklich perfekte Lösung ist, aber ehrlich gesagt kann ich mir auch keine vorstellen, die sowohl mit "Semi-SGML" als auch mit XML-Parsing kompatibel ist.

    
Niels Keurentjes 22.06.2015 06:04
quelle

Tags und Links