content_security_policy

ジャンプ先:
String
必須 いいえ
"content_security_policy": "default-src 'self'"

拡張機能はデフォルトでCSP(content security policy)が適用されています。デフォルトのポリシーの場合、ソースは <script> タグ及び <object> タグからのみロードできるように制限されており、 eval()のような潜在的に安全でない慣習(バッドプラクティス)は制限されます。この実装のより詳細は Default content security policyを見てください。

"content_security_policy" manifestキーを使用して、アドオンのセキュリティを緩くしたり逆にもっと制限することができます。  このキーは、Content-Security-Policy HTTPヘッダーと同じ方法で指定されます。 CSP  の文法の一般的な記述はCSPを使用するを見てください。

例として以下のような使用方法が可能です:

指定できるポリシーには以下のような制限があります。

  • ポリシーは少なくとも script-src ディレクティブ及び object-src ディレクティブを含む必要があり、 script-src ディレクティブは 'self'キーワードを含まなければならない。
  • 外部のソースを使用する場合はhttps: スキームを使用しなければならない。
  • public suffix list 内のドメインのリモートリソースはワイルドカードを使用禁止(よって "*.co.uk" と "*.blogspot.com" は許可されないが、 "*.foo.blogspot.com" は許可される)。
  • すべてのソースはホストを指定しなければならない。
  • blob:, filesystem:, moz-extension:https: スキームのリソースのみ指定することができる。
  • 'none', 'self''unsafe-eval' キーワードのみ指定することができる。【訳注: chromeと同様unsafe-inlineは許可されない】

有効な例

"https://example.com" からのリモートスクリプトを許可: ( 1 を見よ)

"content_security_policy": "script-src 'self' https://example.com; object-src 'self'"

"jquery.com" のサブドメインからのリモートスクリプトを許可:

"content_security_policy": "script-src 'self' https://*.jquery.com; object-src 'self'"

eval() and friendsを許可:

"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"

次のインラインスクリプトを許可: "<script>alert('Hello, world.');</script>":

"content_security_policy": "script-src 'self' 'sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng='; object-src 'self'"

他のポリシーはそのままだが、画像は拡張機能にパッケージされていることを要求する:

"content_security_policy": "script-src 'self'; object-src 'self'; img-src 'self'"

すべてのコンテンツが拡張機能にパッケージされていることを要求する:

"content_security_policy": "default-src 'self'"

無効な例

"object-src" ディレクティブが省略されているポリシー:

"content_security_policy": "script-src 'self' https://*.jquery.com;"

 "script-src" ディレクティブにおいて "self" キーワードが入っていないポリシー:

"content_security_policy": "script-src https://*.jquery.com; object-src 'self'"

リモートソーススキームが https ではない:

"content_security_policy": "script-src 'self' http://code.jquery.com; object-src 'self'"

ワイルドカードを通常のドメインに使用している:

"content_security_policy": "script-src 'self' https://*.blogspot.com; object-src 'self'"

リモートソーススキームは https だがホストがない:

"content_security_policy": "script-src 'self' https:; object-src 'self'"

ディレクティブに現在サポートしていない 'unsafe-inline'キーワードが含まれている:

"content_security_policy": "script-src 'self' 'unsafe-inline'; object-src 'self'"

1. 注記: 有効な例は正しい CSP のキーの使い方を表しますが、'unsafe-eval', 'unsafe-inline', リモートスクリプト、リモートソースを CSP に指定する拡張機能は、主なセキュリティの問題から、addons.mozilla.org に載せる拡張機能には許可されません。

 

 

ブラウザ互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxOperaAndroid 版 Firefox
基本対応Chrome 完全対応 ありEdge 完全対応 14
補足
完全対応 14
補足
補足 Only the default content security policy is supported: "script-src 'self'; object-src 'self';".
Firefox 完全対応 48
補足
完全対応 48
補足
補足 Firefox does not support 'http://127.0.0.1' or 'http://localhost' as script sources: they must be served over HTTPS.
Opera 完全対応 ありFirefox Android 完全対応 48
補足
完全対応 48
補足
補足 Firefox does not support 'http://127.0.0.1' or 'http://localhost' as script sources: they must be served over HTTPS.

凡例

完全対応  
完全対応
実装ノートを参照してください。
実装ノートを参照してください。

ドキュメントのタグと貢献者

このページの貢献者: Uemmra3, lv7777
最終更新者: Uemmra3,