内容安全策略(CSP——Content-Security-Policy)
2021年8月2日
背景
- 同源策略
网站的安全模式源于同源策略,web浏览器允许第一个进入web页面中的脚本访问页面中的数据,前提是两个web页面都具有相同的源。同源策略防止一个页面的恶意脚本通过该页面的文档访问另一个页面的敏感数据。 安全风险例子:假如你正在访问银行系统,未注销的情况下跳转到另外一个站点,则该站点如果注入了一些恶意脚本进行交易操作。 - 网页安全漏洞——xss攻击
在一些情况下,用同源策略,限制县太强,其实不太友好。比如说在大型网站的各个子域下进行一些数据操作,开发过程中用同源策略就有些不太方便;这个时候,就想着利用一些技术放宽一些策略。但是xss攻击可通过欺骗网站来绕过同源策略;通过寻找将恶意脚本注入网页,攻击者可以获得对敏感页面内容,会话cookie以及浏览器代表用户维护的各种其他信息的提升访问权限。 风险例子:盗号、强制发送邮件等等
引入CSP内容安全策略
为了缓解很大一部分的潜在跨脚本问题,浏览器的扩展系统引入了内容安全策略(CSP)的概念。简单来说这技术就是:开发者明确告诉客户端,制定一些严格的策略和规则,那些外部资源是可以加载和执行的,即使攻击者发现漏洞,但是他也是没有办法注入脚本的。
开发人员可以使用这种工具以各种方式锁定其应用程序,降低内容注入漏洞(如跨站点脚本)的风险,并降低其应用程序执行的权限
怎么启用CSP
两种方式:
一种是通过 HTTP 头信息的Content-Security-Policy或Content-Security-Policy-Report-Only的字段
通过网页的标签
CSP的意义
防XSS等攻击的利器。CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。CSP 大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的可信主机。
CSP的分类
Content-Security-Policy
配置好并启用后,不符合 CSP 的外部资源就会被阻止加载。
Content-Security-Policy-Report-Only
表示不执行限制选项,只是记录违反限制的行为。它必须与report-uri选项配合使用。