安全-常见安全策略
内容安全策略(CSP)
内容安全策略(CSP)是一个额外的安全层, 用于检测并削弱某些特定类型的攻击, 包括跨站脚本(XSS)和数据注入攻击等. 无论是数据盗取, 网站内容污染还是散发恶意软件, 这些攻击都是主要的手段.
我们可以通过 CSP 来尽量减少 XSS 攻击. CSP 本质上也是建立白名单, 规定了浏览器只能够执行特定来源的代码.
通常可以通过 HTTP Header 中的 Content-Security-Policy 来开启 CSP
配置实例
- 只允许加载本站资源:
Content-Security-Policy: default-src ‘self’
- 允许内容来自信任的域名以及其子域名:
Content-Security-Policy: default-src 'self' *.trusted.com
- 只允许加载 HTTPS 协议图片:
Content-Security-Policy: img-src https://*
- 允许加载任何来源框架:
Content-Security-Policy: child-src 'none'
- 允许网页应用的用户在自己的内容中包含来自任何源的图片, 但是限制音频或者视频需要从信任的资源提供者获得:
Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com
CSP的主要目标是减少和报告XSS攻击. CSP通过指定有效域--即浏览器仍可的可执行脚本的有效来源--使服务器管理者有能力减少或者消除XSS攻击所依赖的载体. 一个CSP兼容的浏览器将会仅执行从白名单域获取的脚本文件, 忽略所有其他的脚本.
对策略进行测试
为了降低部署成本, CSP是可以部署为报告模式的. 在此模式下, CSP策略不是强制性的, 但是任何违规行为将会报告给一个指定的URI地址.
- 指定http的头部字段
Content-Security-Policy-Report-Only: policy
- 启用违例报告
Content-Security-Policy: default-src 'self'; report-uri http://reportcollector.example.com/collector.cgi