- 攻击者再设置一个非常吸引人的网页,比如说该网页里面有很多美女的图片, 同时攻击者在里面放了一个
iframe
标签,并且该标签设置为不可见,让别的用户无法察觉,该标签里面加载的是步骤1中设置的网页,代码如下:
-
当用户被攻击者诱导着去点击了这个诱人的网站以后, 用户正开心的欣赏着网页里的图片呢,但是这个隐藏的 iframe 标签已经加载了攻击者设计的自动提交表单页面, 此时提交的表单参数就是攻击者设计好的,即
target_user=blackPerson&money=1000
,该表单请求正常发送给服务器。 -
服务器接收到该表单请求,同时接收到请求参数。先判断用户是否登录(判断是否存在用户的 cookie 信息),因为这个请求是在正常用户浏览器上发送的, 所以服务器会判断为该用户已登录;然后就将该用户的钱转1000(money)到 blackPerson (target_user) 的账户上。
-
就这样,一次跨站请求伪造就完成了,看看你们以后谁还敢乱登网站看图片哈哈哈哈哈,废话不多说,我们接下来看看如何防御这种攻击吧。
(2)防御跨站请求伪造
防御跨站请求伪造的方式一共有三种:
-
增加一个验证码, 服务端判断验证码是否正确
-
使用refer验证
-
参数伪造 token
- 增加一个验证码, 服务端判断验证码是否正确
该方法好处就是可以防御跨站请求伪造,因为攻击者设计的自动表单提交无法自动判断验证码是多少;坏处就是用户体验感会差,因为每次提交转账都要输入验证码。
这里推荐一个 node.js 的一个自动生成验证码的库svg-captcha,具体使用方式可以自己去github上查看,使用十分简单,下面放上一个链接——GitHub sva-captcha
- 使用referer验证
什么是referer呢? referer表示该请求来自哪个网页
那么,我们用户正常转账,发送请求时, referer 肯定就是那个转账网页的网址了; 那么如果是攻击者制造的自动提交表单发送的请求, referer 肯定就是攻击者自己的网页。 所以我们可以在服务端写一个判断,即如果 referer 不是正常的转账网页,那么就不完成转账操作, 这样就可以防御住跨站请求伪造。
但是,这种防御方式还是不太可靠,因为我们知道像请求头, 随随便便就可以伪造一个, 所以很容易就能攻破这个防御,接下来我们来将一个很可靠的,并且被广泛运用的防御方式。
- 参数伪造 token
我们都知道CSRF攻击是因为攻击者可以借助别的用户来伪造一次请求,那我们想要防御他,只需要在请求时发送一个攻击者无法伪造的参数就可以了,这就是我们要说的token,接下来我们来说说他是怎么实现的。
不知道大家还记得我上面给大家举的攻击者借助用户的 cookie 并用自己设定好的请求参数伪造了一次转账请求吗? 其实原理很简单, cookie 由用户提供, 攻击者只需要将提交表单中的参数全部写好即可通过全部的转账信息验证。那么我们就可以在这个表单提交中, 添加一个无法让攻击者轻易获得的参数,这个参数是在用户登录时,由服务器发送过来存放在浏览器中的, 表单提交时将这个参数也一起提交过去,然后在服务端进行验证这个参数信息是否正确, 就可以做到一定程度上防御CSRF。
- 总结
这三种方式都有各自的优点和缺点, 我们需要自己在安全方面与用户体验方面进行权衡来考虑使用哪种方法或者使用多种方法进行防御(例如既判断referer,又判断token信息)。
结束语
好了, CSRF的讲解就到这里,希望可以帮助到大家了解安全的一些安全知识。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
f1415a9e35662316578e07.png#pic_center)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-SgqTWyKu-1713028681907)]