什么是CSRF漏洞

Posted CodeSecurity

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是CSRF漏洞相关的知识,希望对你有一定的参考价值。


概念


CSRF(Cross-site request forgery)跨站请求伪造:攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。

CSRF这种攻击方式在2000年已经被国外的安全人员提出,但在国内,直到06年才开始被关注,08年,国内外的多个大型社区和交互网站分别爆出CSRF漏洞,如:NYTimes.com(纽约时报)、Metafilter(一个大型的BLOG网站),YouTube和百度HI……而现在,互联网上的许多站点仍对此毫无防备,以至于安全业界称CSRF为“沉睡的巨人”。

原理

攻击原理

一个典型的CSRF攻击有着如下的流程:

1、受害者登录Web A;
2、认证成功,浏览器保留了登录凭证(Cookie);
3、攻击者引诱受害者访问了Web B;
4、Web B 向 Web A 发送了一个请求:Web A/act=xx。浏览器会默认携带Web A的Cookie;
5、Web A接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。Web A以受害者的名义执行了act=xx。

攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让Web A执行了自己定义的操作。

CSRF漏洞成因:网站的cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,之后只要访问这个网站,都会默认你已经登录的状态。在此期间,攻击者发送了构造好的csrf脚本,或包含csrf脚本的链接,诱使受害者去点击。

XSS与CSRF的区别

XSS:是攻击者盗取受害者cookie,并自己使用凭证进入系统,执行操作
CSRF:攻击者利用cookie凭证,是受害者自己进入系统,帮助攻击者执行各种操作且不会被察觉

防御

1、二次验证

进行重要敏感操作时,要求用户进行二次验证。

2、验证码

进行重要敏感操作时,加入验证码。

3、验证 HTTP 的 Referer 字段。

CSRF攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证信息都是存在于Cookie中,因此黑客可以在不知道这些验证信息的情况下直接利用用户自己的Cookie来通过安全验证。要抵御CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于Cookie之中。可以在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个token,如果请求中没有token或者token内容不正确,则认为可能 CSRF攻击而拒绝该请求。

5、HTTP 头中自定义属性并验证。

总结

对于 CSRF 其危害性比较大,不易防护,建议在开发过程中结合以上的多条防护措施进行防护,不建议只用某一点或某一条,多层防护更有利于系统的安全。


以上是关于什么是CSRF漏洞的主要内容,如果未能解决你的问题,请参考以下文章

实战 | 从零学习CSRF漏洞并配合实战挖掘CSRF漏洞

从漏洞复现到代码审计,深入学习csrf漏洞原理

什么是CSRF漏洞

一个csrf实例漏洞挖掘带你了解什么是csrf

谈谈CSRF漏洞

CSRF漏洞的挖掘与利用