定義要在沙箱機制專屬來源中提供的擴充功能網頁集合。擴充功能的沙箱頁面所使用的內容安全政策是在 "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 值,進一步限製沙箱,但該值「必須」包含 "sandbox"
指令,且「不得」含有 allow-same-origin
權杖 (請參閱 HTML5 規格,瞭解可能的沙箱權杖)。
請注意,您只需列出預期會在視窗或頁框中載入的網頁。沙箱頁面使用的資源 (例如樣式表或 JavaScript 來源檔案) 不需要出現在 pages
清單中,因為這些項目會使用嵌入這些網頁的沙箱環境。
「在 Chrome 擴充功能中使用 eval()」詳細說明如何實作沙箱工作流程,以啟用在擴充功能預設內容安全政策下,執行會發生問題的程式庫。