(o come viene chiamato in alcuni testi, “type-0 XSS”) è un attacco XSS in cui il payload di attacco viene eseguito come risultato della modifica dell ‘ “ambiente” DOM nel browser della vittima utilizzato dallo script originale lato client, in modo che il codice lato client venga eseguito in modo “inaspettato”. Cioè, la pagina stessa (la risposta HTTP che è) non cambia, ma il codice lato client contenuto nella pagina viene eseguito in modo diverso a causa delle modifiche dannose che si sono verificate nell’ambiente DOM.
Questo è in contrasto con altri attacchi XSS (memorizzati o riflessi), in cui il payload di attacco viene inserito nella pagina di risposta (a causa di un difetto lato server).
VIDEO POC
Escape HTML quindi Escape JavaScript prima di inserire dati non attendibili nel subcontesto HTML all’interno del contesto di esecuzione
Esempio Metodi HTML pericolosi
Attributi
elemento.innerHTML = “< HTML> Tag e markup”;
elemento.outerHTML = “< HTML > Tag e markup”;
Metodi
documento.scrivi (“< HTML> Tag e markup”);
documento.writeln (“< HTML> Tag e markup”);
Linea guida
Per rendere sicuri gli aggiornamenti dinamici all’HTML nel DOM, OWASP consiglia
a) Codifica HTML e quindi
b) Codifica JavaScript per tutti gli input non attendibili, come mostrato in questi esempi:
elemento.innerHTML = ” < % = Codificatore.encodeForJS(Encoder.encodeForHTML(DATI non attendibili))%>”;
elemento.outerHTML = ” < % = Encoder.encodeForJS(Encoder.encodeForHTML(DATI non attendibili))%>”;
documento.scrivi (“<%=Encoder.encodeForJS(Encoder.encodeForHTML(untrustedData))%>”);
document.writeln(“<%=Encoder.encodeForJS(Encoder.encodeForHTML(untrustedData))%>”);