content_security_policy

Тип Строка
Обязателен Нет
Пример
json
"content_security_policy": "default-src 'self'"

Политика защиты содержимого применяется к расширениям автоматически. Изначальная политика защиты содержимого ограничивает источники, из которых расширение может загружать <script> и <object> (en-US) ресурсы, а так же препятствует потенциально опасным практикам, например использованию eval(). Смотрите изначальные правила защиты содержимого, чтобы узнать о конкретных последствиях применения изначальных правил.

Ключ "content_security_policy" в manifest.json используется для ослабления или ужесточения политики защиты содержимого. Значения для этого ключа устанавливаются в точно таком же виде, как и для Content-Security-Policy HTTP заголовка. Смотрите Использование политики содержимого для получения общего представления о синтаксисе для написания правил политики.

Примеры использования ключа могут включать в себя:

  • Разрешение на загрузку не запакованных в расширение скриптов и объектов, предоставляя их URL в script-src (en-US) и object-src (en-US) директивах.
  • Разрешение на выполнение встраиваемых скриптов, предоставляя hash скрипта в "script-src" директиве (en-US).
  • Разрешение на использование eval() и похожих функций, добавляя 'unsafe-eval' в script-src (en-US) директиву.
  • Ограничение допускаемых источников загрузки для других видов контента, например картинок или файлов стилей, используя соответствующие директивы (en-US).

При написании правил по защите содержимого, вы имеете некоторые ограничения:

  • Правило должно включать в себя script-src (en-US) и object-src (en-US) директивы, и script-src (en-US) директива должна включать ключевое слово 'self'.
  • Удалённые источники должны иметь https: схему.
  • Удалённые источники не должны определяться через универсальный символ * со следующим за ним доменным публичным суффиксом (например "*.co.uk" и "*.blogspot.com" являются не разрешёнными значениями, но "*.foo.blogspot.com" разрешёно).
  • У всех источников должен быть определён хост.
  • Единственные позволенные схемы источников: blob:, filesystem:, moz-extension: и https:.
  • Единственные позволенные ключевые слова (en-US): 'none', 'self' и 'unsafe-eval'.

Примеры

Работающие примеры

Разрешает загрузку скриптов из "https://example.com": (смотрите примечание 1)

json
"content_security_policy": "script-src 'self' https://example.com; object-src 'self'"

Разрешает загрузку скриптов из любого субдомена "jquery.com":

json
"content_security_policy": "script-src 'self' https://*.jquery.com; object-src 'self'"

Разрешает использование eval() и его товарищей:

json
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"

Разрешает встроить скрипт: "<script>alert('Hello, world.');</script>":

json
"content_security_policy": "script-src 'self' 'sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng='; object-src 'self'"

Оставляет изначальные правила, но так же требует, чтобы могли загружаться только изображения, запакованные вместе с расширением:

json
"content_security_policy": "script-src 'self'; object-src 'self'; img-src 'self'"

Разрешает загрузку только тех ресурсов, которые были запакованы вместе с расширением:

json
"content_security_policy": "default-src 'self'"

Недопустимые примеры

Политика, не включающая "object-src" директиву:

json
"content_security_policy": "script-src 'self' https://*.jquery.com;"

Политика, не включающая ключевое слово "self" в "script-src" директиве:

json
"content_security_policy": "script-src https://*.jquery.com; object-src 'self'"

Использование отличной от https схемы для загрузки удалённых ресурсов:

json
"content_security_policy": "script-src 'self' http://code.jquery.com; object-src 'self'"

Использование универсального символа в связке с публичным доменным суффиксом:

json
"content_security_policy": "script-src 'self' https://*.blogspot.com; object-src 'self'"

Указание схемы без хоста:

json
"content_security_policy": "script-src 'self' https:; object-src 'self'"

Использование неподдерживаемого ключевого слова 'unsafe-inline':

json
"content_security_policy": "script-src 'self' 'unsafe-inline'; object-src 'self'"

Примечание: Работающие примеры демонстрируют правильное написание политики защиты содержимого. Тем не менее, расширения с политикой, включающей ключевые словами 'unsafe-eval', 'unsafe-inline', разрешающей загрузку удалённых скриптов и ресурсов, а так же blob файлов не будут допущены к распространению на addons.mozilla.org из-за значительных проблем с безопасностью.

Совместимость с браузерами

BCD tables only load in the browser