Выбор ответа Middle XSS и CSP обновлено

Показать HTML от пользователя

Вопрос

Нужно показывать статьи, которые пользователи пишут в визуальном редакторе с HTML. Как защититься от XSS?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Санитайзер с allowlist тегов и атрибутов (например DOMPurify) плюс строгий CSP. Санитайзер разбирает HTML как браузер и оставляет только безопасное.

Варианты ответа

  1. Удалять регулярным выражением теги <script>, <iframe> и атрибуты на on*
  2. Санитайзер с allowlist тегов и атрибутов (например DOMPurify) плюс строгий CSPправильный ответ
  3. Экранировать весь HTML при выводе, чтобы теги показывались как обычный текст
  4. Разрешить любой HTML, но включить HttpOnly и SameSite у cookie сессии

Разбор

Санитайзер разбирает HTML как браузер и оставляет только безопасное. Регулярки обходятся через <img onerror>, <svg onload>, кодировки. Экранирование всего защищает, но ломает форматирование статьи. HttpOnly не предотвращает XSS.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.