資訊清單 - 沙箱

警告:自第 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 以上版本時,才能指定沙箱網頁。