content_security_policy
型 | String |
---|---|
必須 | いいえ |
例 |
json
|
拡張機能には、既定でコンテンツセキュリティポリシー (CSP) が適用されます。既定のポリシーでは、 <script> や <object> リソースを読み込むソースを制限し、 eval()
のような潜在的に安全でない可能性がある行為を禁止しています。この実装のより詳細は既定のコンテンツセキュリティポリシーを見てください。
"content_security_policy"
manifest キーを使用して、アドオンのセキュリティを緩くしたり逆にもっと制限することができます。 このキーは、 HTTP の Content-Security-Policy ヘッダーと同じ方法で指定されます。 CSP の構文の一般的な説明は CSP の使用を見てください。
例として以下のような使用方法が可能です。
- URL を
script-src
やobject-src
ディレクティブで指定することで、拡張機能にパッケージ外からスクリプトやオブジェクトの読み込みを許可する。 "script-src"
ディレクティブでスクリプトのハッシュを指定することで、拡張機能にインラインスクリプトの実行を許可する。- 拡張機能に
eval()
や類似する機能を許可するために、'unsafe-eval'
をscript-src
ディレクティブの中に入れる - 適切なポリシーディレクティブを使うことで、その他のコンテンツを許可されたソースのみ、例えば画像やスタイルシートのみに制限する。
指定できるポリシーには以下のような制限があります。
- ポリシーは少なくとも
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'
のみ許可されている。
例
有効な例
"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()
や類似する機能を許可:
"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 に載せる拡張機能には許可されません。
ブラウザーの互換性
BCD tables only load in the browser