警告:自 57 版起,Chrome 將不再允許在沙箱網頁中顯示外部網路內容 (包括嵌入的框架和指令碼)。請改用 webview。
定義一系列應用程式或擴充功能頁面,要在沙箱專屬來源中提供,以及可與這些頁面搭配使用的「內容安全政策」。在沙箱中執行應用程式有兩個含意:
- 沙箱頁面無法存取擴充功能或應用程式 API,也無法直接存取非沙箱頁面 (但可以透過
postMessage()
與這些頁面通訊)。 沙箱頁面不受應用程式或擴充功能的其他部分使用的內容安全政策 (CSP) 限制 (它有自己的 CSP 值)。這表示,例如,它可以使用內嵌指令碼和
eval
。舉例來說,以下說明如何指定要透過自訂 CSP 在沙箱中放送兩個擴充功能網頁:
{ ... "sandbox": { "pages": [ "page1.html", "directory/page2.html" ] // content_security_policy is optional. "content_security_policy": "sandbox allow-scripts; script-src 'self'" ], ... }
如未指定,預設
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 規格)。此外,您指定的 CSP 可能不允許在沙箱頁面中載入外部網頁內容。
請注意,您只需要列出預期會在視窗或框架中載入的網頁。沙箱頁面使用的資源 (例如樣式表或 JavaScript 來源檔案) 不需要顯示在 sandboxed_page
清單中,因為這些資源會使用嵌入這些資源的頁面沙箱。
「在 Chrome 擴充功能中使用 eval。安全地執行。」進一步說明如何實作沙箱工作流程,以便使用擴充功能的預設內容安全性政策執行時,不會發生問題的程式庫。
只有使用 manifest_version
2 以上版本時,才能指定沙箱頁面。