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 with JavaScript enabled. Enable JavaScript to view data.