Чтобы не пропустить попытку атаки через XSS и выстроить защиту, разработчикам нужно кодировать или экранировать служебные символы всех языков, которые можно исполнить в браузере.
Способ обработки служебных символов зависит от контекста — места в HTML-разметке, куда записываются данные. Существуют опасные контексты, в которых невозможно обеспечить стопроцентную защиту от специализированных атак.
Чтобы защита веб-приложения сработала, важно не выводить данные в опасных контекстах.
К таким контекстам относятся:
- Скрипт на странице, текст внутри HTML-комментария, имя HTML-тега и его атрибута, блок CSS-правил.
- JavaScript-функция eval, setTimeout, setInterval, execScript.