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 Нет поддержки Нет
content_scriptsChrome Нет поддержки Нет
Замечания
Нет поддержки Нет
Замечания
Замечания See isolated_world.
Edge Нет поддержки Нет
Замечания
Нет поддержки Нет
Замечания
Замечания See isolated_world.
Firefox Полная поддержка 72
Отключено
Полная поддержка 72
Отключено
Отключено From version 72: this feature is behind the extensions.content_script_csp.enabled preference (needs to be set to true) and the extensions.content_script_csp.report_only preference (needs to be set to false). To change preferences in Firefox, visit about:config.
Opera Нет поддержки Нет
Замечания
Нет поддержки Нет
Замечания
Замечания See isolated_world.
Firefox Android Нет поддержки Нет
extension_pagesChrome Нет поддержки Нет
Замечания
Нет поддержки Нет
Замечания
Замечания Available in Canary builds.
Edge Нет поддержки НетFirefox Полная поддержка 72
Отключено
Полная поддержка 72
Отключено
Отключено From version 72: this feature is behind the extensions.content_script_csp.enabled preference (needs to be set to true) and the extensions.content_script_csp.report_only preference (needs to be set to false). To change preferences in Firefox, visit about:config.
Opera Нет поддержки НетFirefox Android Нет поддержки Нет
isolated_worldChrome Нет поддержки Нет
Замечания
Нет поддержки Нет
Замечания
Замечания Not yet implemented.
Edge Нет поддержки Нет
Замечания
Нет поддержки Нет
Замечания
Замечания Not yet implemented.
Firefox Нет поддержки Нет
Замечания
Нет поддержки Нет
Замечания
Замечания See content_scripts.
Opera Нет поддержки НетFirefox Android Нет поддержки Нет
Замечания
Нет поддержки Нет
Замечания
Замечания See content_scripts.
sandboxChrome Нет поддержки Нет
Замечания
Нет поддержки Нет
Замечания
Замечания Available in Canary builds.
Edge Нет поддержки НетFirefox Нет поддержки Нет
Замечания
Нет поддержки Нет
Замечания
Замечания Firefox does not support sandboxed scripts, so this key is not applicable.
Opera Нет поддержки НетFirefox Android Нет поддержки Нет
Замечания
Нет поддержки Нет
Замечания
Замечания Firefox does not support sandboxed scripts, so this key is not applicable.

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки
Смотрите замечания реализации.
Смотрите замечания реализации.
Пользователь должен сам включить эту возможность.
Пользователь должен сам включить эту возможность.