Выбор ответа Senior Безопасность фронтенда обновлено

Что делает Trusted Types

Вопрос

На странице включено Content-Security-Policy: require-trusted-types-for 'script'. Что произойдёт при el.innerHTML = userString, где userString обычная строка?

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

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

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

Коротко

Правильный ответ: Будет TypeError: в такой приёмник можно передать только TrustedHTML. Trusted Types не санитайзит сам.

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

  1. Строка автоматически пройдёт встроенный санитайзер браузера и вставится
  2. Скрипты и обработчики внутри строки вырежутся, остальной HTML вставится
  3. Ничего не изменится: Trusted Types ограничивает только eval и new Function
  4. Будет TypeError: в такой приёмник можно передать только TrustedHTMLправильный ответ

Разбор

Trusted Types не санитайзит сам. Он запрещает присваивать обычные строки в DOM-приёмники вроде innerHTML, eval, script.src и требует объект, созданный через trustedTypes.createPolicy. Внутри политики вы сами вызываете санитайзер. Исключение: если задана политика с именем default, браузер прогонит строку через неё. Ни автоматической чистки, ни вырезания скриптов он не делает, и затрагивает не только eval.

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

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

Термины по теме