См. Правило № 3.1 в OWASP-листе профилактики XSS.
Скажем, вы хотите включить этот JSON в HTML:
{
"html": "<script>alert(\"XSS!\");</script>"
}
Создать скрытый <div>
в HTML.Затем выйдите из JSON, кодируя небезопасные объекты (например, &, <,>, ", 'и, /), и поместите его в элемент.
<div id="init_data" style="display:none">
{"html":"<script>alert(\"XSS!\");</script>"}
</div>
Теперь вы можете получить к нему доступ, прочитавtextContent
элемента с использованием JavaScript и его синтаксического анализа:
var text = document.querySelector('#init_data').textContent;
var json = JSON.parse(text);
console.log(json); // {html: "<script>alert("XSS!");</script>"}