Type | String |
---|---|
Mandatory | No |
Example | "content_security_policy": "default-src 'self'" |
Extensions have a content security policy applied to them by default. The default policy restricts the sources from which they can load <script> and <object> resources, and disallows potentially unsafe practices such as the use of eval()
. See Default content security policy to learn more about the implications of this.
You can use the "content_security_policy"
manifest key to loosen or tighten the default policy. This key is specified in just the same way as the Content-Security-Policy HTTP header. See Using Content Security Policy for a general description of CSP syntax.
For example, you can use this key to:
script-src
or object-src
directives."script-src"
directive.eval()
and similar features, by including 'unsafe-eval'
in the script-src
directive.There are restrictions on the policy you can specify here:
script-src
and the object-src
directives, and the script-src
directive must contain the keyword 'self'
.https:
schemes.blob:
, filesystem:
, moz-extension:
, https:
, and wss:
.'none'
, 'self'
, and 'unsafe-eval'
.Note: Valid examples demonstrate the correct use of keys in CSP. However, extensions with 'unsafe-eval', remote script, blob, or remote sources in their CSP are not allowed for Firefox extensions as per the add-on policies and due to major security issues.
Allow remote scripts from "https://example.com":
"content_security_policy": "script-src 'self' https://example.com; object-src 'self'"
Allow remote scripts from any subdomain of "jquery.com":
"content_security_policy": "script-src 'self' https://*.jquery.com; object-src 'self'"
Allow eval()
and friends:
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"
Allow the inline script: "<script>alert('Hello, world.');</script>"
:
"content_security_policy": "script-src 'self' 'sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng='; object-src 'self'"
Keep the rest of the policy, but also require that images should be packaged with the extension:
"content_security_policy": "script-src 'self'; object-src 'self'; img-src 'self'"
Require that all types of content should be packaged with the extension:
"content_security_policy": "default-src 'self'"
Policy that omits the "object-src"
directive:
"content_security_policy": "script-src 'self' https://*.jquery.com;"
Policy that omits the "self"
keyword in the "script-src"
directive:
"content_security_policy": "script-src https://*.jquery.com; object-src 'self'"
Scheme for a remote source is not https
:
"content_security_policy": "script-src 'self' http://code.jquery.com; object-src 'self'"
Wildcard is used with a generic domain:
"content_security_policy": "script-src 'self' https://*.blogspot.com; object-src 'self'"
Source specifies a scheme but no host:
"content_security_policy": "script-src 'self' https:; object-src 'self'"
Directive includes the unsupported keyword 'unsafe-inline'
:
"content_security_policy": "script-src 'self' 'unsafe-inline'; object-src 'self'"
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
content_security_policy |
Yes |
14
Only the default content security policy is supported: "script-src 'self'; object-src 'self';".
|
48
Firefox does not support 'http://127.0.0.1' or 'http://localhost' as script sources: they must be served over HTTPS.
|
? |
Yes |
14 |
? |
? |
No |
? |
? |
? |
content_scripts |
No
See
isolated_world . |
No
See
isolated_world . |
72 |
? |
No
See
isolated_world . |
No |
? |
? |
No |
? |
? |
? |
extension_pages |
No
Available in Canary builds.
|
No
Available in Canary builds.
|
72 |
? |
No |
No |
? |
? |
No |
? |
? |
? |
© 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy