CSRF攻击原理及防护

一、CSRF是什么

CSRF全称为跨站请求伪造(Cross-site request forgery),是一种网络攻击方式,也被称为 one-click attack 或者 session riding。

二、CSRF攻击原理

CSRF攻击利用网站对于用户网页浏览器的信任,挟持用户当前已登陆的Web应用程序,去执行并非用户本意的操作。

三、CSRF攻击实例

角色:

  • 正常浏览网页的用户:User
  • 正规的但是具有漏洞的网站:WebA
  • 利用CSRF进行攻击的网站:WebB

流程:

  1. 用户登录、浏览并信任正规网站WebA,同时,WebA通过用户的验证并在用户的浏览器中产生Cookie。


    步骤一
    步骤一
  2. 攻击者WebB通过在WebA中添加图片链接等方式诱导用户User访问网站WebB。


    步骤二
    步骤二
  3. 在用户User被诱导访问WebB后,WebB会利用用户User的浏览器访问第三方网站WebA,并发出操作请求。


    步骤三
    步骤三
  4. 用户User的浏览器根据WebB的要求,带着步骤一中产生的Cookie访问WebA。


    步骤四
    步骤四
  5. 网站WebA接收到用户浏览器的请求,WebA无法分辨请求由何处发出,由于浏览器访问时带上用户的Cookie,因此WebA会响应浏览器的请求,如此一来,攻击网站WebB就达到了模拟用户操作的目的。


    步骤五
    步骤五

四、CSRF攻击防护

上文简单的叙述了CSRF攻击的原理,接下来将要介绍几种CSRF攻击的防护方法。

  • 只使用JSON API

使用JavaScript发起AJAX请求是限制跨域的,并不能通过简单的 <form> 表单来发送JSON,所以,通过只接收JSON可以很大可能避免CSRF攻击。

  • 验证HTTP Referer字段

根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。在通常情况下,访问一个安全受限页面的请求来自于同一个网站,比如上文中用户User想要在网站WebA中进行转账操作,那么用户User

  1. 必须先登录WabA
  2. 然后再通过点击页面上的按钮出发转账事件

这时该转帐请求的 Referer 值就会是转账按钮所在的页面的URL,而如果黑客要对银行网站实施 CSRF攻击,他只能在他自己的网站构造请求,当用户User通过黑客的网站发送请求到WebA时,该请求的 Referer 是指向黑客自己的网站。
因此,要防御 CSRF 攻击,网站WebA只需要对于每一个转账请求验证其 Referer 值,如果是以网站WebA的网址开头的域名,则说明该请求是来自WebA自己的请求,是合法的。如果 Referer 是其他网站的话,则有可能是黑客的 CSRF 攻击,拒绝该请求。

  • 在请求地址中添加takon验证

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


参考链接:CSRF攻击的应对之道

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http://www.91ri.org/tag/fuzz-bug 通常情况下,有三种方法被广泛用来防御CSRF攻击...
    jdyzm阅读 9,706评论 0 5
  • CSRF概念:CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存...
    raincoco阅读 4,235评论 0 1
  • 转载地址:http://www.phpddt.com/reprint/csrf.htmlCSRF概念:CSRF跨站...
    matianhe阅读 4,533评论 0 104
  • CSRF 攻击的应对之道web安全之token和CSRF攻击CSRF Token 的设计是否有其必要性? CSRF...
    拾壹北阅读 3,097评论 0 1
  • 感觉远比对错重要 今天我读到一篇文章《你的感受最重要》,很有感触。文章讲述了一对80后小夫妻的故事,他们结婚不到一...
    亲子阅读蜕变阅读 3,875评论 0 0

友情链接更多精彩内容