マニフェスト - サンドボックス

警告: バージョン 57 以降の Chrome では、サンドボックス化されたページ内に外部ウェブ コンテンツ(埋め込まれたフレームやスクリプトを含む)を配置できなくなります。代わりに WebView を使用してください。

サンドボックス化された一意のオリジンで提供されるアプリまたは拡張機能のページのコレクションを定義します。必要に応じて、それらで使用するコンテンツ セキュリティ ポリシーも定義します。サンドボックスの利用には、次の 2 つの影響があります。

  1. サンドボックス化されたページは、拡張機能またはアプリの API にアクセスできません。また、サンドボックス化されていないページに直接アクセスすることもできません(postMessage() を介して通信することはできます)。
  2. サンドボックス化されたページには、アプリや拡張機能の他の部分で使用されるコンテンツ セキュリティ ポリシー(CSP)は適用されません(独自の CSP 値があります)。たとえば、 インライン スクリプトと eval を使用します。

    たとえば、2 つの拡張ページをカスタム 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 以降を使用する場合にのみ指定できます。