content_security_policy

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

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

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

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

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

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

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

Примеры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Browser compatibility

Update compatibility data on GitHub
КомпьютерыМобильные
ChromeEdgeFirefoxOperaFirefox для Android
content_security_policyChrome Полная поддержка ДаEdge Полная поддержка 14
Замечания
Полная поддержка 14
Замечания
Замечания Only the default content security policy is supported: "script-src 'self'; object-src 'self';".
Firefox Полная поддержка 48
Замечания
Полная поддержка 48
Замечания
Замечания Firefox does not support 'http://127.0.0.1' or 'http://localhost' as script sources: they must be served over HTTPS.
Opera Полная поддержка ДаFirefox Android Полная поддержка 48
Замечания
Полная поддержка 48
Замечания
Замечания Firefox does not support 'http://127.0.0.1' or 'http://localhost' as script sources: they must be served over HTTPS.

Легенда

Полная поддержка  
Полная поддержка
Смотрите замечания реализации.
Смотрите замечания реализации.