content_security_policy
Тип | Строка |
---|---|
Обязателен | Нет |
Пример |
json
|
Политика защиты содержимого применяется к расширениям автоматически. Изначальная политика защиты содержимого ограничивает источники, из которых расширение может загружать <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'"
Примечание: Работающие примеры демонстрируют правильное написание политики защиты содержимого. Тем не менее, расширения с политикой, включающей ключевые словами 'unsafe-eval', 'unsafe-inline', разрешающей загрузку удалённых скриптов и ресурсов, а так же blob файлов не будут допущены к распространению на addons.mozilla.org из-за значительных проблем с безопасностью.
Совместимость с браузерами
BCD tables only load in the browser