Manifest - Sandbox
Defines an collection of app or extension pages that are to be served in a sandboxed unique origin, and optionally a Content Security Policy to use with them. Being in a sandbox has two implications:
- A sandboxed page will not have access to extension or app APIs, or
direct access to non-sandboxed pages (it may communicate with them via
postMessage()
). -
A sandboxed page is not subject to the Content Security Policy (CSP) used by the rest of the app or extension (it has its own separate CSP value). This means that, for example, it can use inline script and
eval
.For example, here's how to specify that two extension pages are to be served in a sandbox with a custom CSP:
{ ... "sandbox": { "pages": [ "page1.html", "directory/page2.html" ] // content_security_policy is optional. "content_security_policy": "sandbox allow-scripts; script-src https://www.google.com" ], ... }
If not specified, the default
content_security_policy
value issandbox allow-scripts allow-forms
. You can specify your CSP value to restrict the sandbox even further, but it must have thesandbox
directive and may not have theallow-same-origin
token (see the HTML5 specification for possible sandbox tokens).
Note that you only need to list pages that you expected to be loaded in
windows or frames. Resources used by sandboxed pages (e.g. stylesheets or
JavaScript source files) do not need to appear in the
sandboxed_page
list, they will use the sandbox of the page
that embeds them.
"Using eval in Chrome Extensions. Safely." goes into more detail about implementing a sandboxing workflow that enables use of libraries that would otherwise have issues executing under extension's default Content Security Policy.
Sandboxed page may only be specified when using
manifest_version
2 or above.