©
This document usesPHP Chinese website manualRelease
HTTPContent-Security-Policy
响应头允许网站管理员控制允许用户代理为给定页面加载的资源。除少数例外,策略主要涉及指定服务器源和脚本端点。这有助于防止跨站点脚本攻击(XSS)。
有关更多信息,另请参阅本文有关内容安全策略(CSP)的文章。
标题类型 |
响应标题 |
---|---|
禁止标题名称 |
没有 |
Content-Security-Policy:;
提取指令控制可以加载某些资源类型的位置。
child-src
定义Web工作人员的有效来源以及使用元素(例如和)加载的嵌套浏览上下文
。
connect-src
限制可以使用脚本接口加载的URLdefault-src
用作其他提取指令的后备。
font-src
指定使用加载的字体的有效来源@font-face
。frame-src
为使用元素(例如和)加载的嵌套浏览上下文指定有效来源
。
img-src
指定图像和网站图标的有效来源。
manifest-src
指定应用程序清单文件的有效来源。
media-src
指定使用加载媒体来源有效,
和
元素。
object-src
指定有效的来源,
和
元素。
script-src
指定JavaScript的有效来源。
style-src
指定样式表的有效来源。
worker-src
指定有效来源Worker
,SharedWorker
或ServiceWorker
脚本。
Document指令控制策略适用的文档或工作环境的属性。
base-uri
限制可以在文档
元素中使用的URL 。
plugin-types
通过限制可以加载的资源类型来限制可以嵌入到文档中的一组插件。
sandbox
为请求的资源启用沙箱,类似于sandbox
属性。disown-opener
确保资源在导航时不会泄露其开启者。
例如,导航指令控制用户可以导航到哪个位置或将表单提交到哪个位置。
form-action
限制可以用作来自给定上下文的表单提交的目标的URL。frame-ancestors
指定有效的父级可以使用嵌入网页,
,
,
,或
。
navigation-to
限制文档可以通过任何方式(a, form, window.location, window.open,等)导航到的URL。
报告指令控制着违反CSP的报告流程。另见Content-Security-Policy-Report-Only
标题。
report-uri
指示用户代理报告违反内容安全策略的企图。这些违规报告由通过HTTP 请求发送到指定URI 的JSON文档组成POST
。report-to
FiresSecurityPolicyViolationEvent
。
block-all-mixed-content
当使用HTTPS加载页面时,防止使用HTTP加载任何资产。
referrer
用于在引用者(sic)头中指定远离页面的链接的信息。
Referrer-Policy
改为使用标题。
require-sri-for
需要在页面上使用SRI作为脚本或样式。
upgrade-insecure-requests
指示用户代理将所有站点的不安全URL(通过HTTP提供的URL)视为已被替换为安全URL(通过HTTPS提供的URL)。此指令适用于需要重写大量不安全的旧版URL的网站。
Workers在一般不是由创建它们的文档(或父worker)的内容安全策略管理。要为 workers 指定内容安全策略Content-Security-Policy
,请为请求 workers 脚本本身的请求设置响应标头。
例外情况是,如果workers脚本的来源是全局唯一标识符(例如,如果其 URL 具有数据或 blob 的方案)。在这种情况下,workers 会继承创建它的文档或 workers 的内容安全策略。
CSP允许为资源指定多个策略,包括通过Content-Security-Policy
标题,Content-Security-Policy-Report-Only
标题和元素。
您可以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
示例:预先存在的站点使用过多的内联代码进行修复,但希望确保仅通过 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 |
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 |
element 支持 |
(Yes) |
(Yes) |
(Yes) |
45.0 |
No |
(Yes) |
(Yes) |
Worker 支持 |
(Yes) |
(Yes) |
? |
50.0 |
No |
? |
No |
在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实现
Content-Security-Policy-Report-Only
2. WebExtensions中的内容安全性
3. 显示安全和隐私政策在Firefox开发者工具中