--- title: Content-Security-Policy slug: Web/HTTP/Headers/Content-Security-Policy translation_of: Web/HTTP/Headers/Content-Security-Policy ---
Content-Security-Policy
允许站点管理者控制用户代理能够为指定的页面加载哪些资源。除了少数例外情况,设置的政策主要涉及指定服务器的源和脚本结束点。这将帮助防止跨站脚本攻击(Cross-Site Script
)({{Glossary("XSS")}})。如需更多信息,请查阅Content Security Policy (CSP)。
头部类型 | {{Glossary("Response header")}} |
---|---|
{{Glossary("Forbidden header name")}} | no |
Content-Security-Policy: <policy-directive>; <policy-directive>
通过获取指令来控制某些可能被加载的确切的资源类型的位置。
如果开发者希望管控内嵌浏览器内容和 web worker 应分别使用{{CSP("frame-src")}}和{{CSP("worker-src")}} 指令,来相对的取代 child-src
。
被object-src
控制的元素可能碰巧被当作遗留HTML元素,导致不支持新标准中的功能(例如<iframe>
中的安全属性sandbox
和allow
)。因此建议限制该指令的使用(比如,如果可行,将object-src
显式设置为'none'
)。
文档指令管理文档属性或者worker环境应用的策略。
导航指令管理用户能打开的链接或者表单可提交的链接
报告指令控制 CSP 违规的报告过程. 更多请看 {{HTTPHeader("Content-Security-Policy-Report-Only")}} 报头.
SecurityPolicyViolationEvent
.Workers 一般来说不被创建他的文档(或者父级Worker)的CSP策略管理。如果要为Worker指定CSP策略,可以为Worker脚本的请求的响应的头部设置CSP策略。
例外的情况是,如果Worker脚本的来源是一个全局唯一ID(比如,它的URL是一个结构化的数据或者BLOB)。在这种情况下,这个Worker会继承它所属的文档或者创建它的Worker的CSP策略。
CSP 允许在一个资源中指定多个策略, 包括通过 Content-Security-Policy
头, 以及 {{HTTPHeader("Content-Security-Policy-Report-Only")}} 头,和 {{HTMLElement("meta")}} 组件。
你可以像以下实例一样多次调用 Content-Security-Policy
头。 特别注意这里的 {{CSP("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加载这些资源 (images, fonts, scripts, etc.)
// header Content-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 Web Security Guidelines 上的更多例子.
规范 | 状态 | 注释 |
---|---|---|
{{specName("CSP 3.0")}} | {{Spec2('CSP 3.0')}} | Adds disown-opener , manifest-src , navigation-to , report-uri , strict-dynamic , worker-src . Undeprecates frame-src . Deprecates report-uri in favor if report-to . |
{{specName("Mixed Content")}} | {{Spec2('Mixed Content')}} | Adds block-all-mixed-content . |
{{specName("Subresource Integrity")}} | {{Spec2('Subresource Integrity')}} | Adds require-sri-for . |
{{specName("Upgrade Insecure Requests")}} | {{Spec2('Upgrade Insecure Requests')}} | Adds upgrade-insecure-requests . |
{{specName("CSP 1.1")}} | {{Spec2('CSP 1.1')}} | Adds base-uri , child-src , form-action , frame-ancestors , plugin-types , referrer , reflected-xss , and report-uri . Deprecates frame-src . |
{{specName("CSP 1.0")}} | {{Spec2('CSP 1.0')}} | Defines connect-src , default-src , font-src , frame-src , img-src , media-src , object-src , report-uri, sandbox , script-src, and style-src . |
{{Compat("http/headers/content-security-policy", "Content-Security-Policy")}}
Display security and privacy policies In Firefox Developer Tools