DOM-based XSS
Скрипт внедряется через небезопасную работу клиентского JS с DOM, без участия сервера.
Сигнатура
DOM-based XSSDOM-based XSS происходит целиком на стороне клиента: JavaScript берёт данные из location.hash, document.referrer и т.п. и без обработки вставляет их в DOM через опасные приёмники вроде innerHTML.
Как защититься: используйте безопасные методы (textContent вместо innerHTML), санитизируйте данные перед вставкой, применяйте Trusted Types и CSP.
// Опасно: данные из URL пишутся в innerHTML
const name = location.hash.slice(1);
document.getElementById("out").innerHTML = name;
// #<img src=x onerror=alert(1)> выполнится
// Безопасно: textContent не интерпретирует разметку
const name = location.hash.slice(1);
document.getElementById("out").textContent = name;