directory search
Guides Access control CORS Authentication Browser detection using the user agent Caching Caching FAQ Compression Conditional requests Connection management in HTTP 1.x Content negotiation Content negotiation: List of default Accept values Cookies CSP Messages Overview Protocol upgrade mechanism Proxy servers and tunneling Proxy servers and tunneling: Proxy Auto-Configuration (PAC) file Public Key Pinning Range requests Redirections Resources and specifications Resources and URIs Response codes Server-Side Access Control Session Guides: Basics Basics of HTTP Choosing between www and non-www URLs Data URIs Evolution of HTTP Identifying resources on the Web MIME Types MIME types: Complete list of MIME types CSP Content-Security-Policy Content-Security-Policy-Report-Only CSP: base-uri CSP: block-all-mixed-content CSP: child-src CSP: connect-src CSP: default-src CSP: font-src CSP: form-action CSP: frame-ancestors CSP: frame-src CSP: img-src CSP: manifest-src CSP: media-src CSP: object-src CSP: plugin-types CSP: referrer CSP: report-uri CSP: require-sri-for CSP: sandbox CSP: script-src CSP: style-src CSP: upgrade-insecure-requests CSP: worker-src Headers Accept Accept-Charset Accept-Encoding Accept-Language Accept-Ranges Access-Control-Allow-Credentials Access-Control-Allow-Headers Access-Control-Allow-Methods Access-Control-Allow-Origin Access-Control-Expose-Headers Access-Control-Max-Age Access-Control-Request-Headers Access-Control-Request-Method Age Allow Authorization Cache-Control Connection Content-Disposition Content-Encoding Content-Language Content-Length Content-Location Content-Range Content-Type Cookie Cookie2 Date DNT ETag Expect Expires Forwarded From Headers Host If-Match If-Modified-Since If-None-Match If-Range If-Unmodified-Since Keep-Alive Large-Allocation Last-Modified Location Origin Pragma Proxy-Authenticate Proxy-Authorization Public-Key-Pins Public-Key-Pins-Report-Only Range Referer Referrer-Policy Retry-After Server Set-Cookie Set-Cookie2 SourceMap Strict-Transport-Security TE Tk Trailer Transfer-Encoding Upgrade-Insecure-Requests User-Agent User-Agent: Firefox Vary Via Warning WWW-Authenticate X-Content-Type-Options X-DNS-Prefetch-Control X-Forwarded-For X-Forwarded-Host X-Forwarded-Proto X-Frame-Options X-XSS-Protection Methods CONNECT DELETE GET HEAD Methods OPTIONS PATCH POST PUT Status 100 Continue 101 Switching Protocols 200 OK 201 Created 202 Accepted 203 Non-Authoritative Information 204 No Content 205 Reset Content 206 Partial Content 300 Multiple Choices 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 307 Temporary Redirect 308 Permanent Redirect 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Timeout 409 Conflict 410 Gone 411 Length Required 412 Precondition Failed 413 Payload Too Large 414 URI Too Long 415 Unsupported Media Type 416 Range Not Satisfiable 417 Expectation Failed 426 Upgrade Required 428 Precondition Required 429 Too Many Requests 431 Request Header Fields Too Large 451 Unavailable For Legal Reasons 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout 505 HTTP Version Not Supported 511 Network Authentication Required Status
characters

HTTP Content-Security-Policy响应头允许网站管理员控制允许用户代理为给定页面加载的资源。除少数例外,策略主要涉及指定服务器源和脚本端点。这有助于防止跨站点脚本攻击(XSS)。

有关更多信息,另请参阅本文有关内容安全策略(CSP)的文章。

标题类型

响应标题

禁止标题名称

没有

句法

Content-Security-Policy: <policy-directive>; <policy-directive>

指令

获取指令

提取指令控制可以加载某些资源类型的位置。

child-src定义Web工作人员的有效来源以及使用元素(例如<frame>和)加载的嵌套浏览上下文<iframe>

connect-src限制可以使用脚本接口加载的URL default-src用作其他提取指令的后备。

font-src指定使用加载的字体的有效来源@font-faceframe-src为使用元素(例如<frame>和)加载的嵌套浏览上下文指定有效来源<iframe>

img-src指定图像和网站图标的有效来源。

manifest-src指定应用程序清单文件的有效来源。

media-src指定使用加载媒体来源有效<audio><video><track>元素。

object-src指定有效的来源<object><embed><applet>元素。

script-src指定JavaScript的有效来源。

style-src指定样式表的有效来源。

worker-src指定有效来源WorkerSharedWorkerServiceWorker脚本。

文件指令

Document指令控制策略适用的文档或工作环境的属性。

base-uri限制可以在文档<base>元素中使用的URL 。

plugin-types通过限制可以加载的资源类型来限制可以嵌入到文档中的一组插件。

sandbox为请求的资源启用沙箱,类似于<iframe>sandbox 属性。disown-opener确保资源在导航时不会泄露其开启者。

导航指令

例如,导航指令控制用户可以导航到哪个位置或将表单提交到哪个位置。

form-action限制可以用作来自给定上下文的表单提交的目标的URL。frame-ancestors指定有效的父级可以使用嵌入网页<frame><iframe><object><embed>,或<applet>navigation-to限制文档可以通过任何方式(a, form, window.location, window.open,等)导航到的URL。

报告指令

报告指令控制着违反CSP的报告流程。另见Content-Security-Policy-Report-Only标题。

report-uri指示用户代理报告违反内容安全策略的企图。这些违规报告由通过HTTP 请求发送到指定URI 的JSON文档组成POSTreport-toFires SecurityPolicyViolationEvent

其他指令

block-all-mixed-content当使用HTTPS加载页面时,防止使用HTTP加载任何资产。

referrer用于在引用者(sic)头中指定远离页面的链接的信息。

Referrer-Policy改为使用标题。

require-sri-for需要在页面上使用SRI作为脚本或样式。

upgrade-insecure-requests指示用户代理将所有站点的不安全URL(通过HTTP提供的URL)视为已被替换为安全URL(通过HTTPS提供的URL)。此指令适用于需要重写大量不安全的旧版URL的网站。

CSP in workers

Workers在一般不是由创建它们的文档(或父worker)的内容安全策略管理。要为 workers 指定内容安全策略Content-Security-Policy,请为请求 workers 脚本本身的请求设置响应标头。

例外情况是,如果workers脚本的来源是全局唯一标识符(例如,如果其 URL 具有数据或 blob 的方案)。在这种情况下,workers 会继承创建它的文档或 workers 的内容安全策略。

多种内容安全策略

CSP允许为资源指定多个策略,包括通过Content-Security-Policy标题,Content-Security-Policy-Report-Only标题和<meta>元素。

您可以Content-Security-Policy多次使用标题,如下例所示。请特别注意connect-src这里的指示。即使第二个策略允许连接,第一个策略也包含在内connect-src 'none'。添加其他策略只能进一步限制受保护资源的功能,这意味着将不允许连接,并且作为最严格的策略connect-src 'none'实施。

Content-Security-Policy: default-src 'self' http://example.com;
                         connect-src 'none';Content-Security-Policy: connect-src http://example.com/;
                         script-src http://example.com/

示例

示例:禁用不安全的内联/评估,仅允许通过https:

// headerContent-Security-Policy: default-src https:// meta tag<meta http-equiv="Content-Security-Policy" content="default-src https:">

示例:预先存在的站点使用过多的内联代码进行修复,但希望确保仅通过 https 加载资源并禁用插件:

Content-Security-Policy: default-src https: 'unsafe-eval' 'unsafe-inline'; object-src 'none'

示例:尚未实施上述政策;而只是报告将会发生的违规行为:

Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-violation-report-endpoint/

有关更多示例,请参阅Mozilla网络安全指南。

规范

规范

状态

评论

内容安全策略3级

编辑草稿

添加disown-opener,manifest-src,navigation-to,report-to,strict-dynamic,worker-src。取消不推荐使用frame-src。如果报告为废弃,则弃用report-uri。

混合内容

候选推荐

添加块全混合内容。

子资源完整性

建议

添加require-sri-for。

升级不安全的请求

候选推荐

添加升级不安全请求。

内容安全策略2级

建议

添加base-uri,child-src,表单动作,框架 - 祖先,插件类型,引用链接器,反射-xss和报表 -  uri。弃用frame-src。

内容安全策略1.0

候选推荐

定义connect-src,default-src,font-src,frame-src,img-src,media-src,object-src,report-uri,sandbox,script-src和style-src。

浏览器兼容性

特征

Chrome

Edge

Firefox

Internet Explorer

Opera

Safari

基本支持

251

14

23.02

103

15

74

<meta> element 支持

(Yes)

(Yes)

45.0

No

(Yes)

(Yes)

Worker 支持

(Yes)

?

50.0

No

?

No

特征

Android

Chrome for Android

Edge mobile

Firefox for Android

IE mobile

Opera Android

iOS Safari

基本支持

(Yes)

(Yes)

(Yes)

23.0

?

?

7.15

<meta> element 支持

(Yes)

(Yes)

(Yes)

45.0

No

(Yes)

(Yes)

Worker 支持

(Yes)

(Yes)

?

50.0

No

?

No

  1. 在Chrome 14中作为X-Webkit-CSP标头实现。

2. 在Firefox 4中作为X-Content-Security-Policy header实施。

3. 作为X-Content-Security-Policy header实现,只支持'sandbox'指令。

4. 在Safari 6中实现为X-Webkit-CSP header。

5. 在iOS 5.1中作为X-Webkit-CSP header实现

  1. Content-Security-Policy-Report-Only

2. WebExtensions中的内容安全性

3. 显示安全和隐私政策在Firefox开发者工具中

Previous article: Next article: