0


CSRF(跨站请求伪造)原理

什么是CSRF?

(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

CSRF指的是攻击者盗用了你的身份,以你的名义发送恶意的请求,给你造成个人隐私泄露及财产安全。

知识点补充:

Cookie实际上是一小段的文本信息(key-value格式)。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

CSRF原理图:

93fa57609ced441ab65eda4e51576140.png

简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的

从上图可以看出,要完成一次CSRF攻击,受害者必须依次完成两个步骤:

  • 登录受信任网站A,并在本地生成Cookie。
  • 在不登出A的情况下,访问危险网站B。 看到这里,你也许会说:“如果我不满足以上两个条件中的一个,我就不会受到CSRF的攻击”。是的,确实如此,但你不能保证以下情况不会发生:

1.你不能保证你登录了一个网站后,不再打开一个tab页面并访问另外的网站。
2.你不能保证你关闭浏览器了后,你本地的Cookie立刻过期,你上次的会话已经结束。(事实上,关闭浏览器不能结束一个会话,但大多数人都会错误的认为关闭浏览器就等于退出登录/结束会话了......)
3.上图中所谓的攻击网站,可能是一个存在其他漏洞的可信任的经常被人访问的网站。

一个典型的CSRF例子:

759d2a51b336437ca07bf4c2d8716495.png

CSRF的分类:

CSRF的定义是强迫受害者的浏览器向一个易受攻击的Web应用程序发送请求,最后达到攻击者所需要的操作行为。CSRF漏洞的攻击根据提交数据的方式不同一般分为get型和post型。

Get型攻击:

533bd304798b46ad8d050bd0c554218d.png如果一个网站某个地方的功能,比如用户修改密码是通过GET请求进行修改的。如:/?password_new=12345&password_conf=12345&change=change# ,这个链接的意思是登陆密码修改为12345,当我们把这个链接修改为 /?password_new=admin123&password_conf=admin123&change=change# ,然后通过各种手段发送给被攻击者,诱使被攻击者点击我们的链接,当用户刚好在访问这个网站,他同时又点击了这个链接,那么悲剧发生了。这个用户的登陆密码变成 了admin123.(来自DVWA-CSRF-low)

Post型攻击:

9ea79c909c0947eb9f92e31c2cc6984e.png

在普通用户的眼中,点击网页->找到个人中心->修改密码是一个很正常的一个流程。可是在攻击者的眼中可以算正常,但又不正常的,当然不正常的情况下,是在开发者安全意识不足所造成的。攻击者在修改密码处抓到密码修改的地址。比如:/?password_new=12345&password_conf=12345&change=change# 。通过提交表单,服务器处理相关信息,表单数据如上图所示。当用户访问该页面后,表单会自动提交,相当于模拟用户完成了一次POST操作。

防御CSRF攻击:

目前防御 CSRF 攻击主要有三种策略:

  • 验证 HTTP Referer 字段;
  • 在请求地址中添加 token 并验证;
  • 在 HTTP 头中自定义属性并验证。
标签: csrf 安全 网络

本文转载自: https://blog.csdn.net/weixin_62528361/article/details/127229847
版权归原作者 繁〖星辰〗宇 所有, 如有侵权,请联系我们删除。

“CSRF(跨站请求伪造)原理”的评论:

还没有评论