(oder wie es in einigen Texten heißt, “type-0 XSS”) ist ein XSS-Angriff, bei dem die Angriffsnutzlast als Ergebnis der Änderung der DOM-“Umgebung” im Browser des Opfers ausgeführt wird, die vom ursprünglichen clientseitigen Skript verwendet wird, so dass der clientseitige Code auf “unerwartete” Weise ausgeführt wird. Das heißt, die Seite selbst (die HTTP-Antwort) ändert sich nicht, aber der clientseitige Code, der in der Seite enthalten ist, wird aufgrund der böswilligen Änderungen, die in der DOM-Umgebung aufgetreten sind, anders ausgeführt.
Dies steht im Gegensatz zu anderen XSS-Angriffen (gespeichert oder reflektiert), bei denen die Angriffsnutzlast auf der Antwortseite platziert wird (aufgrund eines serverseitigen Fehlers).
VIDEOPRÄSENTATION
HTML-Escape dann JavaScript-Escape Vor dem Einfügen nicht vertrauenswürdiger Daten in den HTML-Untertext im Ausführungskontext
Beispiel für HTML-Methoden
Attribute
Element.innerHTML = “<HTML> Tags und Markup”;
Element.outerHTML = “<HTML> Tags und Markup”;
Methoden
Dokument.write(“<HTML> Tags und Markup”);
Dokument.writeln(“<HTML> Tags and markup”);
Guideline
Um dynamische Aktualisierungen von HTML im DOM-Safe vorzunehmen, empfiehlt OWASP
a) HTML-Codierung und dann
b) JavaScript-Codierung aller nicht vertrauenswürdigen Eingaben, wie in diesen Beispielen gezeigt:
element.innerHTML = “<%=”.encodeForJS(Encoder.encodeForHTML(untrustedData))%>”;
element.outerHTML = “<%=”.encodeForJS(Encoder.encodeForHTML(untrustedData))%>”;
dokument.schreiben(“<%=).encodeForJS(Encoder.encodeForHTML(untrustedData))%>”);
document.writeln(“<%=Encoder.encodeForJS(Encoder.encodeForHTML(untrustedData))%>”);