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

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

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

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

    たとえば、カスタム CSP を使用するサンドボックスで 2 つの拡張機能ページを配信するよう指定する方法は次のとおりです。

    {
      ...
      "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 リストに含める必要はなく、それらが埋め込まれているページのサンドボックスを使用します。

「Using eval in Chrome Extensions. Safely.」では、拡張機能のデフォルトのコンテンツ セキュリティ ポリシーに基づいて実行に問題が生じるライブラリの使用を可能にする、サンドボックス ワークフローの実装について詳しく説明します。

サンドボックス化されたページは、manifest_version 2 以上を使用する場合にのみ指定できます。