HTTP 标头 |内容安全策略
内容安全策略响应头域是一种实现深度防御机制的工具,用于保护数据免受跨脚本攻击等内容注入漏洞的影响。它提供了一种策略机制,允许开发人员检测其应用程序中存在的缺陷并降低应用程序权限。它为开发人员提供了对应用程序的细粒度控制,以防止各种攻击并保持内容完整性。
句法:
Content Security Policy : directive directive-value ; directive directive-value
上面有指令和指令值。可以在以分号分隔的行中使用多个策略指令。
带有示例的指令:
1.获取指令:这些用于控制某个资源可以访问或加载到系统中的点。
- child-src:它控制嵌套浏览上下文的创建和填充工作人员框架的请求。
Content-Security-Policy: child-src https://example.com/
- default-src:考虑输入的值,用作策略的默认源列表,并用作其他获取指令的后备。
Content-Security-Policy: default-src 'self'
- frame-src:它限制为嵌套浏览上下文加载的 URL。
Content-Security-Policy: frame-src https://example.com/
- manifest-src:它控制可以从中加载资源的各种元素的 URL。
Content-Security-Policy: manifest-src https://example.com/
- object-src:用于限制可以将插件内容加载到应用程序中的 URL。
Content-Security-Policy: object-src https://example.com/
- connect-src:用于控制可以使用脚本接口加载到应用程序中的 URL。
Content-Security-Policy: connect-src https://example.com/
- font-src:它控制可以将字体加载到应用程序中的 URL。
Content-Security-Policy: font-src https://example.com/
- img-src:它控制可以将图像加载到应用程序中的 URL。
Content-Security-Policy: img-src https://example.com/
- media-src:它控制可以将音频、视频和相关文本轨道资源加载到应用程序中的 URL。
Content-Security-Policy: media-src https://example.com/
- style-src:它控制可以将加载和应用样式表应用到应用程序的源。
- script-src:它控制可以在应用程序中实现 JavaScript 的源。
- 很少有 fetch 指令是实验性的应用程序编程接口,例如prefetch-src、script-src-elem、script-src-attr、style-src-elem、style-src-attr 和 worker-src。
2.文档指令:这些指令控制在 CSP 治理下的所有文档和工作环境的属性的实现。
- 插件类型:它限制加载的资源,以限制插件被嵌入到文档中的可能性。
Content-Security-Policy: plugin-types application/pdf
- base-uri:它控制可以加载到文档中存在的基本元素的 URL。
- 沙盒:用户代理可以通过该指令的规范应用 HTML 沙盒策略。
3. Navigation Directives包含form-action、frame-ancestors 和 navigate-to指令。 form-action指令控制可用于表单提交的 URL。 frame-ancestors指令限制可以使用frame、iframe、object、embed或applet元素嵌入资源的 URL。导航到指令指定文档可以通过任何方法遍历到的 URL。
4.报告指令包含report-to ,它指定发送违规报告的端点。较早使用的 report-uri现在已弃用。
还有几个例子:
本文中的所有示例均取自万维网联盟的 CSP Level 3 草案。
Content-Security-Policy: script-src https://cdn.example.com/scripts/; object-src 'none'
Content-Security-Policy: script-src 'self'; report-to csp-reporting-endpoint
Content-Security-Policy: prefetch-src https://example.com/
Content-Security-Policy: worker-src https://example.com/
Content-Security-Policy: navigate-to example.com
浏览器兼容性:
CSP Level 3 部分支持 Chrome 59+、Firefox 58+ 和 Edge 79+ 版本。
CSP Level 2 完全支持 Chrome 40+、Safari 10+、Edge 76+ 版本,部分支持 Firefox 31+ 和 Edge 15+。
CSP 级别 1 完全支持 Chrome 25+、Firefox 23+、Edge 12+ 和 Safari 7+ 版本。