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

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

サンドボックス化された一意のオリジンで提供されるアプリまたは拡張機能のページのコレクションと、それらのページで使用するコンテンツ セキュリティ ポリシー(省略可)を定義します。サンドボックス化には次の 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 トークンを含めることはできません(使用可能なサンドボックス トークンについては、the HTML5 specification をご覧ください)。また、指定する CSP では、サンドボックス化されたページ内での外部ウェブ コンテンツの読み込みを許可できません。

ウィンドウまたはフレームに読み込まれるページのみをリストする必要があります。サンドボックス化されたページで使用されるリソース(スタイルシートや JavaScript ソースファイルなど)は、sandboxed_page リストに表示する必要はありません。それらを埋め込むページのサンドボックスを使用します。

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

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