Выбор ответа Middle XSS и CSP обновлено
Показать HTML от пользователя
Вопрос
Нужно показывать статьи, которые пользователи пишут в визуальном редакторе с HTML. Как защититься от XSS?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Санитайзер с allowlist тегов и атрибутов (например DOMPurify) плюс строгий CSP. Санитайзер разбирает HTML как браузер и оставляет только безопасное.
Варианты ответа
- Удалять регулярным выражением теги
<script>,<iframe>и атрибуты наon* - Санитайзер с allowlist тегов и атрибутов (например DOMPurify) плюс строгий CSPправильный ответ
- Экранировать весь HTML при выводе, чтобы теги показывались как обычный текст
- Разрешить любой HTML, но включить HttpOnly и SameSite у cookie сессии
Разбор
Санитайзер разбирает HTML как браузер и оставляет только безопасное. Регулярки обходятся через <img onerror>, <svg onload>, кодировки. Экранирование всего защищает, но ломает форматирование статьи. HttpOnly не предотвращает XSS.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.