搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > CodeSecurity > 什么是CSRF漏洞

什么是CSRF漏洞

CodeSecurity 2020-06-27


概念


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漏洞》的版权归原作者「CodeSecurity」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注CodeSecurity微信公众号

CodeSecurity微信公众号:CodeSecurity

CodeSecurity

手机扫描上方二维码即可关注CodeSecurity微信公众号

CodeSecurity最新文章

精品公众号随机推荐