使用CSP来辅助防御XSS

来源:互联网 发布:在linux执行shell 编辑:程序博客网 时间:2024/05/20 20:20

#CSP(Content Security Policy)的作用

通过定义一个名为Content-Security-Policy 的header来让浏览器仅载入可信域的资源文件,限制使用内联脚本,禁止页面中使用<script>标签,控制ajax请求域等等。

可以通过https://content-security-policy.com/browser-test/来测试下你的浏览器对CSP的支持度。



#为什么CSP可以用来防御XSS

防御XSS一般的认识是要做好数据的输入校验和输出Encode,那么为什么CSP可以用来辅助防御XSS?想想看,XSS攻击的目的无非是窃取信息或者搞破坏,其实所有的攻击行为无非是这两种直接目的。一般情况下,都是以窃取用户信息为目的。想要窃取成功,用户浏览器就必须和攻击者的某个地址进行通信,否则攻击者就没有办法接收到最终窃取到的信息结果,而CSP可以用来定义哪些域是被信任的,如果攻击者设定的域不属于被设定的信任域,那么信息就没有办法被偷出去。这样就起到了防御XSS的效果。


#简单用法

最简单的我们可以定义一个filter,在页面返回的时候添加头信息,比如可以像下面这样,除了本域之外不相信任何域

response.addHeader("Content-Security-Policy","default-src 'self'");

真正使用的时候应当建立一个配置文件,通过配置的方式来定义和管理安全规则。

CSP详细的参数可以参见:https://content-security-policy.com/


#只能作为辅助手段

CSP通过设定安全规则,让浏览器来辅助解决XSS的问题这是非常合适的,因为我们知道所有的XSS都是发生在浏览器端。但是,CSP只能用来辅助防御XSS,减轻XSS带来的后果,它并不应该作为防御XSS的主要手段,它只能减轻以偷取信息为目的的XSS行为,对于纯粹的破坏行为则无能为力,特别是DOM Based XSS。所以想要较好的处理XSS,还是应当认真的做好数据的输入校验以及数据输出的Encode处理。

0 0
原创粉丝点击