菜单导航

如何玩转网络攻防?看这文就够了!

作者: 精装之家 来源: 精装之家 发布时间: 2019年10月08日 14:42:00

在这个世界中,有人的地方就有江湖。网络也是一样,由于其相对匿名的特性,其中的攻防甚至更为激烈。

随着智能手机的兴起,越来越多的人开始接入互联网,同时,以此为基础的灰产也在蒸蒸日上。虽然几乎全社会都浸淫在移动互联网中,但技术对他们来说是透明的。对于可用性上来说,这是极好的,能够使得老幼妇孺都能享受到这种便利,但另一方面,由于对技术的不了解,就仿佛随时有无形的杀手潜伏在周围,毫无还手之力。

仅关于“点击链接”,就有各种诈骗相关的新闻,不胜枚举。其中最耸人听闻的是:由于点击了钓鱼链接,导致银行账户直接被洗劫一空。在这个新闻首次被报道时,我妈噤若寒蝉,这些在她眼中似乎都是魔法。那时的我就十分好奇,骗子真有如此神通吗?毕竟人人都得遵循基本的物理呀。

如何玩转网络攻防?看这文就够了!

由于我才疏学浅,只能从最基本处讲起。这篇文章来谈一谈CSRF。

什么是 CSRF?

CSRF(Cross Site Request Forgery,跨站域请求伪造)虽然是一种基本的攻击方式,但是它覆盖面极广,而且常常被忽视。

我记得从初中起,QQ空间常常会出现一些陌生人的留言,内容为:“这是那天我们聚会的照片,我发在这里了:XXX链接”或是“有人把你的照片贴在这里了,这是你吗?XXX链接”。

后来,在每年开学都会收到一份发件人为“教务处”的邮件,内容为:“这是上学期的成绩单”或者“这是这学期的课程安排”等,再配以一张二维码(二维码实质上也是一个链接)。

到如今,时常会在QQ上收到陌生人发来的一份在线共享文档,内容为:“这是近期工作安排”在辅以一条链接。可见这种基本的攻击方式过了这么多年,依然流行。之所以流行,应该是依然有源源不断的人中招,骗子有利可图。

下面我想谈谈CSRF的基本工作原理,以及如何防范。这有利于你日常多留个心眼谨防上当,其次,假如你是一名入门的开发人员,面试也可能会提及这个问题。

首先稍微解释一下什么是Cookie,以方便后续讲解。

假如你已经登录了A网站,那么A网站会在你的浏览器端生成你的Cookie,Cookie常常会在本地保存一些你的身份鉴别数据,由于它安全级别并不是很高,所以只要不是特别Low的网站,是不会将你的密码保存在Cookie中的。由于HTTP是无状态的,Cookie会保存你的身份鉴别信息,让服务器与你保持连接,以继续此次会话(Session)。

此时你已经在A网站通过认证登陆了,Cookie保存在了你的浏览器中,骗子想要从你的浏览器中拿到Cookie是很难的(除非他通过一些社会工程的行为,本篇先不谈)但是他可以让你在不知道的情况下去进行一些他想要的操作。

既然是跨站请求伪造,那么肯定不止一个站点,假设这里有A和B两个站点,A是你经常浏览的正派合法网站,B是攻击者自己的服务器。

攻击者是如何控制你的行为的呢?

如何玩转网络攻防?看这文就够了!

我曾看到过很多人的QQ空间里发了一些要么与黄色有关,要么与什么微商有关的广告,我觉得他们很可能是中了CSRF(假设,会导致这种效果)。比如攻击者在他引导你点击的链接页面中写了一段JS代码(仅简单示例):

如何玩转网络攻防?看这文就够了!

然后你就会携带你本地的Cookie与这个表单去请求服务器,服务器获取Cookie中的与身份有关的信息,并通过了验证,认为你是一个合法的用户,于是将你表单里的内容发布了出去。

至此为止,一次攻击就完成了。

那么如何来访防范这种攻击,浏览器有最基本的跨域检查,即检查请求的发起域与资源的请求域是否一致。但是在H5中,有些标签是可以直接跨域的。最好还是在服务端去抵御这种攻击。首先我们可以考虑一下,造成这种结果的原因在于:

没有验证请求的发起服务器。

无法确定表单是用户主动提交还是被动提交的。

假如让你来设计,该如何应对?同时来看看业界是如何解决的。

如何解决

Refer