【web安全】深刻理解CSRF漏洞的原理及利用方式

对于web客户端的攻击,除了首当其冲的XSS之外,CSRF也是一个很是重要的安全漏洞。
CSRF漏洞是跨站请求伪造,也有少数文章中称其XSRF,其实指的是同一个东西。
这个漏洞的原理要分两层,狭义的CSRF和广义的CSRF。
狭义的CSRF是指在黑客已经将代码植入受害用户的浏览器访问的页面的前提下,以“受害用户”的身份向服务端发起一个伪造的http请求,从而实现服务器CURD来执行读写操做。
这就是绝大多数博客,以及《白帽子讲web安全》一书中道哥所提到的CSRF漏洞的执行方式。
既然有狭义,也要说说广义的CSRF。本质上讲,CSRF漏洞就是黑客将一个http接口中须要传递的全部参数都预测出来,而后无论以什么方式,他均可以根据他的目的来任意调用你的接口,对服务器实现CURD。
因此说,其实CSRF并不必定非要借助受害用户的浏览器,黑客能够本身写脚本伪造出一个和真实的http请求如出一辙的数据包发给你的服务器,前提是你的这个http接口中的全部参数都是能够预期的。
须要说明的是,对于广义的CSRF,是我本身的理解,在这一点上可能与书本上所讲的内容存在一些出入。
狭义的CSRF的原理很简单,实现难度也不大,无非就是写两行javascript代码的ajax调用一下服务端的rest接口。
可是实现CSRF的关键在于,要么先找到一个xss漏洞,而后将黑客的恶意代码植入到页面中去的前提下才能够实现狭义的CSRF;要么构造出一个url,将参数设好,而后把url贴在网络上像反射型XSS那样骗用户访问这个url。
讲到这里,其实不难发现,CSRF和XSS这两个漏洞一旦结合起来,将会爆发出巨大的威力。那么对于CSRF应该如何防护?javascript

查看原文html

注:原创技术文章,为避免未经许可的匿名转载,所有文章内容请移步原文阅读,带来的不便敬请谅解。java

相关文章
相关标签/搜索