マニフェスト - コンテンツ セキュリティ ポリシー

拡張機能で使用できるスクリプト、スタイル、その他のリソースの制限を指定するウェブ プラットフォームのコンテンツ セキュリティ ポリシーを含む、オプションのマニフェスト キー。このマニフェスト キー内で、拡張機能ページとサンドボックス化された拡張機能ページの両方に、個別のオプション ポリシーを定義できます。

「拡張機能ページ」ポリシーは、拡張機能のページ コンテキストとワーカー コンテキストに適用されます。これには、拡張機能のポップアップ、バックグラウンド ワーカー、拡張機能によって開かれた HTML ページや iframe を含むタブが含まれます。サンドボックス ポリシーは、マニフェストでサンドボックス ページとして指定されたすべてのページに適用されます。

デフォルト ポリシー

ユーザーがマニフェストでコンテンツ セキュリティ ポリシーを定義していない場合は、拡張機能ページとサンドボックス化された拡張機能ページの両方にデフォルトのプロパティが使用されます。

これらのデフォルトは、マニフェストで次のポリシーを指定するのと同等です。

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self'; object-src 'self';",
    "sandbox": "sandbox allow-scripts allow-forms allow-popups allow-modals; script-src 'self' 'unsafe-inline' 'unsafe-eval'; child-src 'self';"
  }
  // ...
}

この場合、拡張機能は、独自にパッケージ化されたリソースからのみ、ローカルのスクリプトとオブジェクトを読み込みます。WebAssembly が無効になり、拡張機能はインライン JavaScript を実行できなくなり、実行可能コードとして文字列を評価できなくなります。サンドボックスのページを追加すると、拡張機能の外部からスクリプトを評価するための権限が緩和されます。

最小限のおよびカスタマイズされたコンテンツ セキュリティ ポリシー

デベロッパーは、プロジェクトのニーズに応じて、拡張機能のルールを追加または削除したり、必要最小限のコンテンツ セキュリティ ポリシーを使用したりできます。

拡張機能ページに関するポリシー

Chrome では、拡張機能ページに対して最小限のコンテンツ セキュリティ ポリシーが適用されます。これは、マニフェストで次のポリシーを指定するのと同等です。

{
  // ...
  "content_security_policy": {
    "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self';"
  }
  // ...
}

extension_pages ポリシーは、この最小値を超えて緩和することはできません。つまり、'unsafe-eval'script-src に追加するなど、他のスクリプト ソースをディレクティブに追加することはできません。許可されていないソースを拡張機能のポリシーに追加すると、Chrome のインストール時に次のようなエラーがスローされます。

'content_security_policy.extension_pages': Insecure CSP value "'unsafe-eval'" in directive 'script-src'.

サンドボックス ページに関するポリシー

サンドボックス化されたページは拡張機能の API にアクセスできないため、またはサンドボックス化されていないページに直接アクセスできないため、サンドボックス化されたページのデフォルトのポリシーは、拡張ページよりもはるかに寛容です。サンドボックス コンテンツ セキュリティ ポリシーは必要に応じてカスタマイズできます。