网站内容策略(什么是安全策略内容安全策略(CSP)怎么使用配置内容)

优采云 发布时间: 2022-01-21 02:21

  网站内容策略(什么是安全策略内容安全策略(CSP)怎么使用配置内容)

  什么是安全策略

  内容安全策略 (CSP) 是额外的安全层,用于检测和缓解某些类型的攻击,包括跨站点脚本 (XSS) 和数据注入攻击。无论是数据窃取、网站内容污染,还是恶意软件的传播,这些攻击都是主要手段。

  CSP 具有跨站点脚本攻击功能

  CSP 使服务器管理员能够通过指定有效域来减少或消除 XSS 攻击所依赖的向量,这些域是浏览器识别的可执行脚本的有效来源。符合 CSP 的浏览器只会执行从白名单域中获取的脚本文件,而忽略所有其他脚本(包括内联脚本和 HTML 事件处理属性)。

  数据包嗅探攻击

  除了限制可以加载内容的域之外,服务器还可以指定允许使用哪些协议;例如(从理想的安全角度来看),服务器可以指定所有内容都必须通过 HTTPS 加载。完整的数据安全传输策略不仅强制使用 HTTPS 进行数据传输,还会将所有 cookie 标记为安全标志,并提供自动重定向以将 HTTP 页面定向到 HTTPS 版本。网站您还可以使用 Strict-Transport-Security HTTP 标头来确保连接到它的浏览器仅使用加密通道。

  如何使用 CSP

  配置内容安全策略涉及将 Content-Security-Policy HTTP 标头添加到页面并配置相应的值以控制用户代理(浏览器等)可以为该页面获取哪些资源。例如,可以上传文件和显示图像的页面应该允许图像来自任何地方,但将表单的操作属性限制为仅指定的端点。正确设计的内容安全策略应该有效地保护页面免受跨站点脚本攻击。

  如何测试 CSP

  为了降低部署成本,可以在仅报告模式下部署 CSP。在这种模式下,不强制执行 CSP 策略,但任何违规都会报告给指定的 URI 地址。此外,报告模式标头可用于测试将在未来应用的修订策略,而无需实际部署它。

  您可以使用 Content-Security-Policy-Report-Only HTTP 标头指定您的策略,如下所示:

  

Content-Security-Policy-Report-Only: policy

  如果 Content-Security-Policy-Report-Only 标头和 Content-Security-Policy 都出现在响应中,则这两个策略都有效。Content-Security-Policy 标头中指定的策略是强制性的,而 Content-Security-Policy-Report-Only 中的策略仅生成报告而不是强制性的。

  启用违规报告

  默认情况下,不发送违规报告。要启用违规报告的发送,您需要指定 report-uri 策略指令并提供至少一个 URI 地址以将报告提交到:

  

Content-Security-Policy: default-src 'self'; report-uri /csp-report

  CSP 应用示例

  例如,我们将策略设置为

  

Content-Security-Policy: default-src 'none'; style-src cdn.example.com; report-uri /csp-reports

  以上表示不允许当前源站的静态资源(包括ico、js、css等),只允许加载样式,报错信息到/csp-reports请求

  以下是测试结果。可以看到,请求源站的静态资源会被阻塞,无法加载。

  

  上面设置report-uri /csp-report后,浏览器会通过post请求向服务器发送每个违规请求。请求正文如下

  

{

"csp-report": {

"document-uri": "http://localhost:8080/",

"referrer": "",

"violated-directive": "style-src-elem",

"effective-directive": "style-src-elem",

"original-policy": "default-src 'none'; style-src cdn.example.com; report-uri /report",

"disposition": "enforce",

"blocked-uri": "http://localhost:8080/public/dist/style/index.cebb39b158b702281852.css",

"line-number": 8,

"source-file": "http://localhost:8080/",

"status-code": 200,

"script-sample": ""

}

}

  请求体的字段解释如下

  文档-uri

  发生违规的文档的 URI

  推荐人

  发生违规的文档参考(地址)

  阻塞的uri

  CSP 阻止的资源 URI。如果被阻止的 URI 来自与文档 URI 不同的来源,则被阻止的资源 URI 将被截断,只留下协议、主机和端口号

  违反指令

  违反政策名称

  原创政策

  Content-Security-Policy HTTP 标头中指定的原创策略

  纯前端使用

  CSP可以通过设置html文档的响应头或者前端的meta标签来控制。简单用法如下

  

    

    

  本文为原创,任何媒体或个人自媒体未经授权禁止转载

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线