Тип | Строка |
---|---|
Обязателен | Нет |
Пример |
|
Политика защиты содержимого применяется к расширениям автоматически. Изначальная политика защиты содержимого ограничивает источники, из которых расширение может загружать <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
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.