对于web客户端的攻击,除了第一个XSS之外,CSRF也是一个非常重要的安全漏洞。CSRF漏洞是一种跨站请求伪造。也有几篇文章称它为XSRF,但实际上指的是同一个东西。这个漏洞的原理分为两层,narrowCSRF和generalizedCSRF。狭义的CSRF是指在黑客已经将代码植入受害用户浏览器访问的页面的前提下,以“受害用户”的身份向服务器发起伪造的http请求,从而实现服务器CURD执行读写操作。大部分博客和刀哥在《白帽子讲web安全》一书中提到的CSRF漏洞都是这样执行的。既然有狭义,那我们就从广义上说说CSRF。CSRF漏洞本质上就是黑客预测了一个http接口中需要传递的所有参数,然后不管他怎么利用,他都可以根据自己的目的任意调用你的接口,在服务器端实现CURD。所以,其实CSRF并不一定要依赖受害用户的浏览器。黑客可以编写脚本伪造一个与真实http请求一模一样的数据包发送到你的服务器。参数都是预期的。需要说明的是,对于广义的CSRF,是我自己的理解,这一点可能和书上说的有些出入。狭义的CSRF原理很简单,实现起来也不难。无非就是用ajax写两行javascript代码调用服务端的rest接口。但是实现CSRF的关键是先找到一个xss漏洞,然后将黑客的恶意代码植入到页面中,实现狭义的CSRF;或者构造一个url,设置好参数,然后将url设置到网上发布,像反射型XSS一样,诱骗用户访问这个url。说到这里不难发现,CSRF和XSS这两个漏洞一旦结合在一起,就会爆发出巨大的威力。那么如何防御CSRF呢?查看原文注意:原创技术文章,为避免未经允许匿名转载,请移步原文阅读文章全部内容,造成的不便敬请谅解。
