警告: Chrome バージョン 57 以降、サンドボックス化されたページ内で外部のウェブ コンテンツ(埋め込みフレームやスクリプトを含む)を使用することはできません。代わりに webview を使用してください。
サンドボックス化された一意のオリジンで配信されるアプリまたは拡張機能ページのコレクションを定義します。また、必要に応じて、それらのページで使用するコンテンツ セキュリティ ポリシーを定義します。サンドボックス内にあることには、次の 2 つの影響があります。
- サンドボックス化されたページは、拡張機能やアプリの API にアクセスできず、サンドボックス化されていないページに直接アクセスすることはできません(
postMessage()
を介して通信できます)。 サンドボックス化されたページは、アプリや拡張機能の他の部分で使用されるコンテンツ セキュリティ ポリシー(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
リストに含める必要はなく、それらが埋め込まれたページのサンドボックスを使用します。
「Chrome 拡張機能で eval を使用する場合。Safely」では、拡張機能のデフォルトのコンテンツ セキュリティ ポリシーに基づいて実行する際に問題が発生するライブラリの使用を可能にする、サンドボックス ワークフローの実装について詳しく説明します。
サンドボックス化されたページは、manifest_version
2 以上を使用している場合にのみ指定できます。