DOM-XSS debuggen, indem man den echten Datenfluss verfolgt
DOM-XSS versteht man besser über Quellen, Transformationen und Sinks als über zufällige Payload-Versuche.
DOM-XSS steckt selten in einer einzelnen offensichtlichen Zeile. Die Quelle kann in der URL, einer Nachricht, Local Storage oder einer JSON-Antwort liegen. Der Sink erscheint oft später in einer anderen Komponente.
Darum ist der Datenfluss wichtiger als der erste Payload.
Beginne an der Quelle
Bestimme, woher der kontrollierte Wert kommt: location.search, location.hash, postMessage, document.referrer oder persistierter Zustand. Beobachte danach, ob die Anwendung dekodiert, verkettet oder transformiert, bevor sie rendert.
Ende am Sink
Suche Schreibvorgänge in innerHTML, outerHTML, insertAdjacentHTML, document.write oder Framework-APIs, die Escaping deaktivieren. Der Befund muss Quelle und Sink reproduzierbar verbinden.
Reporte den Pfad
Ein guter Report sagt nicht nur „Payload zeigt Alert“. Er erklärt: Query q wird gelesen, an die Preview-Komponente übergeben, in HTML verkettet und landet in innerHTML. Das ist behebbar.