@ifap

Content-Security-Policy: host-source VS 'self': в чем разница?

Курил доки, много думал, но так и не придумал: в каком сценарии может потребоваться указание источника загрузки как 'self' вместо конкретного сайта(ов)? Мы заранее не знаем, с какого сайта может загружаться контент? А в чем тогда смысл применения CSP?

И, чтобы два раза не вставать, почему ни host-source, ни 'self' в качестве источника не включают «подмножество» 'unsafe-inline', т.е. контент, встроенный в загружаемую страницу? Саму страницу грузить можно, вызываемый с нее скрипт/стиль на том же домене – можно, ML-элементы страницы со стилевыми свойствами (со скриптами не проверял) – снова можно, а тот же самый скрипт/стиль, если он встроен отдельным куском – нет, где логика?
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
@granty
Мы заранее не знаем, с какого сайта может загружаться контент?
Знаем, но не всегда. У сайта может быть множество поддоменов, в том числе и динамических.

host-source VS 'self'
Вместо 'self' браузер подставляет протокол, хост(домен) и номер порта от источника происхождения (текущего URL) страницы.
Если у вас сайт доступен как: http://domain.com, https://domain.com, http://www.domain.com, https://www.domain.com, http://www.domain.com:8081 - 'self' всё это покроет:
зайдёте на http://www.domain.com:8080/page.html - 'self' будет равен http://www.domain.com:8080, и тп.

Иначе вместо 'self' вам придётся перечислять все варианты имён хостов(включая поддомены) со схемами/протоколами и номерами портов.

почему ни host-source, ни 'self' в качестве источника не включают «подмножество» 'unsafe-inline', т.е. контент, встроенный в загружаемую страницу?
Потому, что такой встроенный скрипт может появиться на странице без ведома вебмастера. Его может вставить вредоносный браузерный плагин, другой скрипт (например, виджет погоды), его может вставить интернет-провайдер. Такой инлайн-скрипт может появиться на странице в результате XSS-уязвимости.

Content Security Policy от этого и защищает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы