資訊清單 - 沙箱

警告:自第 57 版起,Chrome 將不再允許沙箱網頁中的外部網頁內容,包括內嵌頁框和指令碼。請改用 webview

定義要在沙箱專屬來源中提供的應用程式或擴充功能頁面集合,並可選擇搭配沙箱使用內容安全政策。掌握沙箱作業會產生兩項影響:

  1. 沙箱頁面將無法存取擴充功能或應用程式 API,也無法直接存取未採用沙箱機制的頁面 (可透過 postMessage() 與其通訊)。
  2. 沙箱頁面不受應用程式或擴充功能其他部分使用的內容安全政策 (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。Safely。" 詳細說明如何實作沙箱工作流程,該工作流程可讓您使用程式庫,如果程式庫在擴充功能的預設內容安全政策下執行時發生問題,

只有在使用 manifest_version 2 以上版本時,才能指定沙箱頁面。