Определяет коллекцию страниц расширений, которые должны обслуживаться в изолированном уникальном источнике. Политика безопасности контента, используемая изолированными страницами расширения, указана в ключе "content_security_policy"
.
Пребывание в песочнице имеет два последствия:
- Страница в песочнице не будет иметь доступа к API расширений или прямого доступа к страницам, не изолированным в песочнице (она может взаимодействовать с ними с помощью
postMessage()
). - На изолированную страницу не распространяется политика безопасности контента (CSP), используемая остальной частью расширения (она имеет собственное отдельное значение CSP). Это означает, что, например, он может использовать встроенный скрипт и
eval()
.
Например, вот как указать, что две страницы расширения должны обслуживаться в изолированной программной среде с пользовательским CSP:
{
...
"content_security_policy": {
"sandbox": "sandbox allow-scripts; script-src 'self' https://example.com"
},
"sandbox": {
"pages": [
"page1.html",
"directory/page2.html"
]
},
...
}
Если не указано, значением по умолчанию "content_security_policy"
является « sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';
» sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';
.
Вы можете указать значение CSP, чтобы еще больше ограничить песочницу, но оно ДОЛЖНО включать директиву "sandbox"
и НЕ ДОЛЖНО иметь токен allow-same-origin
(возможные токены песочницы см. в спецификации HTML5 ).
Обратите внимание, что вам нужно указать только те страницы, которые, как вы ожидаете, будут загружены в окнах или фреймах. Ресурсы, используемые изолированными страницами (например, таблицы стилей или исходные файлы JavaScript), не обязательно должны отображаться в списке pages
, поскольку они будут использовать песочницу фрейма, в который они встроены.
В разделе «Использование eval() в расширениях Chrome» более подробно рассматривается реализация рабочего процесса «песочницы», который позволяет использовать библиотеки, которые в противном случае могли бы иметь проблемы при выполнении в соответствии с Политикой безопасности контента расширения по умолчанию .