行业资讯

CSRF攻击是什么?CSRF攻击原理及防御详解

2019-12-27 14:34  浏览:

2009年一起黑客入侵事件轰动一时,好莱坞女星凡妮莎·哈金斯(Vanessa Hudgens)的邮箱遭黑客窃取,大量私密照片外泄。而导致该事件发生的举动仅仅是打开了一封Email。

这到底是怎么做到的呢?我们又该如何防范?

这就引出了我们今天的话题----CSRF攻击。

什么是CSRF?

CSRF攻击是什么?CSRF攻击原理及防御详解

CSRF是一种冒充用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。实际上就是攻击者恶意利用用户信任的网站,构造了某些操作,引诱用户去点击,从而冒充用户,在其不知情的情况下完成攻击者想做的操作,比如以你的名义发消息、发邮件,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。所以CSRF也被称为“One-Click Attack”(一键攻击)。

CSRF攻击是什么?CSRF攻击原理及防御详解

回到上文的例子,黑客整个攻击流程其实十分简单:

黑客给该明星的Gmail账户发了一封Email,邮件内容是一张图片,发送邮件中被植入了CSRF代码。

CSRF攻击是什么?CSRF攻击原理及防御详解

当用户点击邮件加载图片时,实际上访问了这样的链接:

https://mail.google.com/mail?ui=2&fw=true&fwe=attacker@email.com

这个链接的功能是设置Gmail邮件转发,因此目标邮箱中的所有邮件都被转发到黑客指定的邮箱。当这封邮件被打开时,攻击就悄悄地完成了,邮箱内所有邮件被转发到黑客的账号。

CSRF攻击是什么?CSRF攻击原理及防御详解

那么CSRF攻击原理是什么?

我们可以通过以下示意图1-7的顺序来了解CSRF的攻击原理:

CSRF攻击是什么?CSRF攻击原理及防御详解

从上图可以看出,完成一次CSRF攻击,必须满足以下两个条件:

1.用户登录受信任网站,并在本地生成Cookie(图中 步骤1-2)。

2.在不登出该受信任网站的情况下,访问危险网站(图中 步骤3-4)。

这两个条件看似不容易同时满足,但实际情况是用户登录了一个网站后,即便关闭了浏览器,储存在本地的Cookie也未必会立刻过期。

CSRF攻击是什么?CSRF攻击原理及防御详解

由于用户已经登录,攻击者只需构造正确的请求链接,让浏览器发送请求,浏览器就可携带正确的Cookie并直接访问链接实现相关功能。一个存在漏洞的可信任网站很有可能被恶意攻击者利用成为恶意网站。

待到用户察觉时……可能已经发生了不堪设想的后果……

那我们应该如何防御呢?

CSRF攻击主要有两个特点:

1.  通常发生在第三方域名

2.  CSRF攻击者只是使用而无法获取Cookie等信息

要防御CSRF攻击,我们对症下药!

目前主要使用以下两种策略,分别针对上述CSRF的两个特点:

1.验证HTTP请求头中指定字段

2.添加校验Token

第一种策略所指定的字段具体为Origin Header和Referer Header,通过验证这两个字段可以确定来源域名,但如果攻击者有权限在本域发布评论(含链接、图片等,统称UGC),那么它可以直接在本域发起攻击,这种情况下该策略无法达到防护的作用。

CSRF攻击是什么?CSRF攻击原理及防御详解

CSRF攻击是什么?CSRF攻击原理及防御详解

因此通过添加校验请求令牌(Token)来辅助认证才是我们比较通用的做法:

CSRF攻击之所以能够成功,是因为黑客可以伪造用户的请求,使用用户的Cookie来通过安全验证。要抵御CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于Cookie之中。

CSRF攻击是什么?CSRF攻击原理及防御详解

按照这个思路,我们可以在HTTP请求中加入一个随机产生的Token,并在服务器端建立一个拦截器来验证这个Token。当用户登陆后,Token保存在Session里。在用户发出请求时,该令牌会与其他请求信息一并被发出。在接收用户请求时,如果请求中没有Token或者Token内容不正确,则认为可能是CSRF攻击而拒绝该请求。

攻击者就没法盗取用户身份啦!

天下数据Web应用防火墙(WAF)是基于 AI 引擎的一站式 Web 业务运营风险防护方案,帮助用户应对网站入侵,漏洞利用,挂马,篡改,后门,爬虫Bot,域名劫持等安全问题,为组织网站及Web业务安全运营保驾护航。详询天下数据客服400-6388-808。

【免责声明】:部分内容、图片来源于互联网,如有侵权请联系删除,QQ:228866015

下一篇:关于DDoS攻击的认知误区,你中枪了么? 上一篇:什么是XSS攻击?XSS攻击有哪几种类型?
24H服务热线:4006388808 立即拨打