浅谈渗透测试过程中的CSRF机制

2021-12-06|

最近看了一篇关于csrf机制的文章,觉得很有收获,所以自己总结了一下与大家分享

首先我们要理解一个概念,要从三个方面入手,即是什么?为什么?怎么做?


一、CSRF是什么?

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。(出自百度百科)


二、CSRF机制是什么?

CSRF验证机制是为了预防CSRF攻击而创立的,它的具体验证方法是:从cookie中获取一个csrf_token的值,再从请求体中获取一个csrf_token的值,二者进行比较,如果两个值相同则验证通过。如果两个值不同,则验证失败,拒绝请求。


三、为什么要用CSRF机制?

首先我们通过一个案例来了解CSRF的危害:如下图所示,假设用户通过浏览器访问一个银行网站时,浏览器会将cookie中的用户信息发给银行网站,然后用户在银行网站上进行转账操作,网站就接收到用户的POST请求和请求体中的信息,包括转账人和转账金额等。

这是正常的请求流程,但有些黑客网站会伪造成银行网站(使用相似的域名或IP地址)当用户误点进黑客网站后,黑客网站就会获取到用户的cookie信息,这样他就可以伪造一个转账POST请求发给真正的银行网站,而银行并不知道这个请求是伪造的,就会造成危害和损失。

图1:未开启csrf防护机制的情况


上面是没有使用csrf防护机制的情况,如果使用了csrf机制,我们在cookie中和请求体中都加入了csrf-token变量,在上述案例中,当用户误点进黑客网站后,黑客虽然能得到用户的cookie,但他在伪造请求时就无法获取到请求体中的csrf-token值。

这里有同学会问了,既然我都获取到用户的cookie了,那我直接从cookie中读取csrf-token的值不就行了吗?这里就用到了浏览器的一个机制了,也是csrf防护机制的核心机制,就是同源策略,同源策略就是浏览器限制了不同源(IP)的网站不能相互操作资源。

所以,由于同源策略的限制,黑客网站根本无法获取到csrf-token的值,但他不死心啊,他还是伪造了请求发给银行网站,企图瞎猫碰死耗子,但csrf-token的值都是加密过的,蒙对的概率无异于中彩票,结果可想而知,银行网站收到请求后通过比对用户cookie和请求体的csrf-token的值就会发现这是伪造的请求,所以果断拒绝。

这样通过csrf防护机制,就可以避免悲剧的发生,为人类文明的和谐发展贡献一份绵薄之力,实乃幸也!

图2:开启csrf防护机制


总结:总体来说,csrf防护机制是很有必要的,它可以大大的提高网站的安全性,所以我们在建站时要注意使用这个机制,不积小流,无以成江河,不积跬步,无以至千里。希望今天我的讲解能够让大家有所收获~


最后打一波广告,本人是python全栈工程师,如果各位大佬有什么兼职项目或者工作机会都可以找我哈,感激不尽~

我的QQ:1480456073


标签: csrf 机制 请求 网站 用户 伪造 银行 cookie 同源 转账
出处: https://www.toutiao.com/a7038009426753651208/

文明发言,请先登录

文明上网理性发言,请遵守国家法律法规。

最新评论

©2003- 黑基网 黑名单存档手机版网站地图免责条款法律声明隐私保护