CSP 内容安全策略

  • 该策略用于限制HTML只能从被允许的的地址中加载css/jss/data等资源,降低被XSS攻击、注入恶意内容的风险。
  • 实施方式: 在response Header头中添加Content-Security-Policy字段,支持该字段的浏览器识别到后会进行处理

最佳实践

浏览器支持Content-Security-Policy和Content-Security-Policy-Report-Only字段。

  • Content-Security-Policy字段: 会强制浏览器按照指定的规则执行,阻止规则不允许的资源加载
  • Content-Security-Policy-Report-Only字段: 不会阻止资源加载。但会输出错误信息到console面板也可以将错误上传到指定的url进行分析,可以用于上线csp策略前的埋点调试

埋点调试错误信息

nginx返回用于调试的header头 more_set_headers "Content-Security-Policy-Report-Only: default-src 'self' *.itgod.org; style-src 'self' *.baidu.com; script-src 'self'; report-uri https://9d4e-43-154-200-149.ngrok-free.app/csp";

上线CSP策略

通过上述的调试策略分析所有的错误信息,并进行修复后,可以直接将Content-Security-Policy-Report-Only头修改为Content-Security-Policy头,这样浏览器就会强制阻止规则以外的资源加载了。

nginx 添加返回头: more_set_headers "Content-Security-Policy: default-src 'self' *.baidu.com; style-src 'self' *.baidu.com; script-src 'self'; report-uri https://9d4e-43-154-200-149.ngrok-free.app/csp";

1、Content-Security-Policy-Report-Only和Content-Security-Policy头可以同时存在,浏览器同样会严格阻止Content-Security-Policy规则以外的资源,触发的Content-Security-Policy-Report-Only规则限制则只会上报
2、尽量不要使用HTML内联样式,样式都通过外部文件加载,内联样式的注入风险比较大(比如标签被关闭后植入script代码)
3、Content-Security-Policy也支持指定report-uri,注意时刻收集线上的csp错误并及时处理

参考: https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP

Copyright © 运维知识库 all right reserved,powered by Gitbook文件修订时间: 2023-10-09 17:32:28

results matching ""

    No results matching ""