2014-09-01 11 views
5

Ich wollte wissen, ob es eine Möglichkeit gibt, CSS Style XSS auf modernen Browsern zu bekommen?Gibt es eine Möglichkeit, CSS XSS in modernen Browsern zu bekommen?

Zum Beispiel auf älteren IE-Browser die folgende ist anfällig:

<div style="width:expression(prompt('XSS'))"> 
+0

Wenn der HTML-Code dynamisch als Text erstellt wird und die für das style-Attribut (z. B.) verwendeten Daten nicht maskiert werden, ist HTML-Injektion weiterhin möglich. aber ich vermute, dass das nicht gefragt wird. – user2864740

+0

Können Sie erklären, wofür Sie das verwenden möchten? Es kann Alternativen geben. – easwee

Antwort

3

Nr Wie dieses Beispiel veranschaulicht perfekt, Javascript (oder jedes Scripting) keinen Platz in CSS hat daher XSS (die zweite S für 'Scripting') ist nicht möglich. CSS sollte nur deklarativ sein und wird, wenn es den W3-Standards entspricht, implementiert. Dynamische Ausdrücke sind nun mit calc erledigt, die nur einfache mathematische Ausdrücke auswerten können, ohne auf die JS-Engine zurückzugreifen.

expression war ein IE-only-Hack, um bestimmte Funktionen zu erleichtern, bis W3 mit einer Alternative kam. Als calc erschien, war expression veraltet. Beginnend mit IE11, expression is no longer supported in the Internet Zone. Es war announced in 2008, dass es auf diese Weise enden würde, unter Berufung auf ', um die Angriffsfläche zu reduzieren' als einer der Hauptgründe. In älteren Versionen als IE11 wird es schon seit einiger Zeit nur noch in quirks mode und IE7 Emulationsmodus unterstützt.

Zusammenfassung: CSS hat keinen Platz für Javascript und kann daher nicht mit XSS angegriffen werden, wenn es korrekt implementiert wird, wie es in jedem aktuellen Browser der Fall ist.

+0

Ist "sollte * nicht * möglich sein" oder "im IE nicht mehr möglich" (im Gegensatz zu "nicht möglich"). – user2864740

+1

Wie gesagt, die Unterstützung für "Ausdruck" auf öffentlichen Websites wurde in IE11 vollständig fallengelassen und ist seit einigen Jahren stark eingeschränkt. Daher sollte es, abgesehen von Bugs und unbekannten Exploits, nicht möglich sein. –