content_security_policy
型 | String |
---|---|
必須 | いいえ |
例 |
|
拡張機能はデフォルトでCSP(content security policy)が適用されています。デフォルトのポリシーの場合、ソースは <script> タグ及び <object> タグからのみロードできるように制限されており、 eval()
のような潜在的に安全でない慣習(バッドプラクティス)は制限されます。この実装のより詳細は Default content security policyを見てください。
"content_security_policy"
manifestキーを使用して、アドオンのセキュリティを緩くしたり逆にもっと制限することができます。 このキーは、Content-Security-Policy HTTPヘッダーと同じ方法で指定されます。 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'
キーワードのみ指定することができる。【訳注: 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'"
"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
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.