資訊清單 - 沙箱

警告:自 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。安全無虞」,詳細說明如何實作沙箱工作流程,讓該程式庫在擴充功能的預設內容安全政策下執行時無法正常使用。

只有在使用 manifest_version 2 以上版本時,才能指定採用沙箱機制的網頁。