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

警告: バージョン 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 以降を使用している場合にのみ指定できます。