定义要在沙盒化的唯一来源中提供的扩展程序页面的集合。扩展程序的沙盒化页面使用的内容安全政策在 "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';
。
您可以指定 CSP 值以进一步限制沙盒,但 CSP 值必须包含 "sandbox"
指令,且不得包含 allow-same-origin
令牌(请参阅 HTML5 规范,了解可能的沙盒令牌)。
请注意,您只需列出您希望在窗口或框架中加载的页面。沙盒化页面使用的资源(例如样式表或 JavaScript 源文件)不需要显示在 pages
列表中,因为它们将使用嵌入它们的框架的沙盒。
“在 Chrome 扩展程序中使用 eval()”详细介绍了如何实现沙盒工作流程,该工作流程支持使用在扩展程序的默认内容安全政策下否则会出现问题的库。