Что означает установка политики безопасности содержимого при ответе на запрос, отличный от HTML?

Я понимаю, что могу установить заголовок CSP для главной страницы моего сайта, скажем https://example.com, чтобы ограничить то, откуда я могу загружать скрипты и другие ресурсы. Но если на главной странице нет CSP, как браузер будет обрабатывать политику при последующем запросе?

Это два примера в одном:

  1. Я перехожу к https://example.com и получаю немного HTML (без заголовка CSP)
  2. HTML включает скрипт из https://example.com/script.js [*]
  3. Этот скрипт запрашивает некоторые данные из API, отправляя GET на https://api.example.com [*]
  4. Затем тот же сценарий открывает веб-сокет в том же домене https://api.example.com
  5. Затем тот же сценарий отправляет другой запрос, отправляя внешнюю POST на https://api.analytics.com.

[*] Что произойдет на шагах 2 и 3, если ответ script.js или JSON вернется с ограниченным CSP, например Content-Security-Policy: default-src 'none'? Будут ли изменены какие-либо последующие запросы? Делает ли браузер что-нибудь, чтобы предотвратить какие-либо запросы скрипта? Или разрешены, потому что исходная загрузка страницы не включала CSP?

Спасибо!


person lordbyron    schedule 14.06.2016    source источник


Ответы (1)


текущая спецификация CSP (версия 2) говорит (курсив мой):

3.6. Применимость политики

Политики связаны с защищенным ресурсом и применяются или отслеживаются для этого ресурса. Если ресурс не создает новый контекст выполнения (например, при включении сценария, изображения или таблицы стилей в документ), тогда любые политики, поставляемые с этим ресурсом, отбрасываются без эффекта < / сильный>. Его выполнение зависит от политики или политик включающего контекста.

CSP применяются только к ресурсам, которые создают новый контекст выполнения (т. Е. Веб-страницу), который включает только документы верхнего уровня, встроенные объекты, такие как <iframe>s, и сценарии, загружаемые как веб-рабочие. Если ресурс обслуживается через HTTP, и этот ресурс не используется таким образом, чтобы создать новый контекст выполнения, CSP не имеет никакого эффекта.

Следовательно, ваши сценарии будут вести себя одинаково независимо от того, обслуживаются они с заголовком Content-Security-Policy или нет.

person apsillers    schedule 14.06.2016
comment
Спасибо! Именно то, что я искал. - person lordbyron; 14.06.2016