首页 > 其他分享 >CSRF攻击与修复

CSRF攻击与修复

时间:2024-07-04 23:19:21浏览次数:17  
标签:修复 攻击 Cookie CSRF Samesite com example 请求

基本原理

  • 受害者登录a.com,并保留了登录凭证(Cookie)。
  • 攻击者引诱受害者访问了b.com。
  • b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie。
  • a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。
  • a.com以受害者的名义执行了act=xx。
  • 攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作。

常见的攻击类型

GET类型

![](https://awps-assets.meituan.net/mit-x/blog-images-bundle-2018b/ff0cdbee.example/withdraw?amount=10000&for=hacker)

POST类型

<form action="http://bank.example/withdraw" method=POST> 
  <input type="hidden" name="account" value="xiaoming" /> 
  <input type="hidden" name="amount" value="10000" /> 
  <input type="hidden" name="for" value="hacker" /> 
</form> <script> document.forms[0].submit(); </script>

链接型

<a href="http://test.com/csrf/withdraw.php?amount=1000&for=hacker" taget="_blank"> 重磅消息!! <a/>

防御手段

同源检测

在HTTP协议中,每一个异步请求都会携带两个Header,用于标记来源域名:、

  • Origin Header
  • Referer Header

假设我们有以下场景:

一个网页 https://example.com/page.html 中包含一个 AJAX 请求,向 https://api.example.com/data 发送跨域请求。

Origin Header:

POST /data HTTP/1.1
Host: api.example.com
Origin: https://example.com

Referer Header:

POST /data HTTP/1.1
Host: api.example.com
Referer: https://example.com/page.html
![](https://awps-assets.meituan.net/mit-x/blog-images-bundle-2018b/ff0cdbee.example/withdraw?amount=10000&for=hacker)

CSRF Token

而CSRF攻击之所以能够成功,是因为服务器误把攻击者发送的请求当成了用户自己的请求。那么我们可以要求所有的用户请求都携带一个CSRF攻击者无法获取到的Token。服务器通过校验请求是否携带正确的Token,来把正常的请求和攻击的请求区分开,也可以防范CSRF的攻击。

http://url/?csrftoken=tokenvalue%E3%80%82

双重Cookie验证

利用CSRF攻击不能获取到用户Cookie的特点,我们可以要求Ajax和表单请求携带一个Cookie中的值。与CSRF Token的区别就是使用了浏览器本身的cookie来进行验证。

https://www.a.com/comment?csrfcookie=v8g9e4ksfhw

Samesite Cookie属性

防止CSRF攻击的办法已经有上面的预防措施。为了从源头上解决这个问题,Google起草了一份草案来改进HTTP协议,那就是为Set-Cookie响应头新增Samesite属性,它用来标明这个 Cookie是个“同站 Cookie”,同站Cookie只能作为第一方Cookie,不能作为第三方Cookie,Samesite 有两个属性值,分别是 Strict 和 Lax,下面分别讲解:

Samesite=Strict

Set-Cookie: foo=1; Samesite=Strict 
Set-Cookie: bar=2; Samesite=Lax 
Set-Cookie: baz=3

我们在 a.com 下发起对 b.com 的任意请求,foo 这个 Cookie 都不会被包含在 Cookie 请求头中,但 bar 会。举个实际的例子就是,假如淘宝网站用来识别用户登录与否的 Cookie 被设置成了 Samesite=Strict,那么用户从百度搜索页面甚至天猫页面的链接点击进入淘宝后,淘宝都不会是登录状态,因为淘宝的服务器不会接受到那个 Cookie,其它网站发起的对淘宝的任意请求都不会带上那个 Cookie。

Samesite=Lax

Set-Cookie: foo=1; Samesite=Strict Set-Cookie: bar=2; Samesite=Lax Set-Cookie: baz=3

用户从 a.com 点击链接进入 b.com 时,foo 这个 Cookie 不会被包含在 Cookie 请求头中,但 bar 和 baz 会,也就是说用户在不同网站之间通过链接跳转是不受影响了。但假如这个请求是从 a.com 发起的对 b.com 的异步请求,或者页面跳转是通过表单的 post 提交触发的,则bar也不会发送。

标签:修复,攻击,Cookie,CSRF,Samesite,com,example,请求
From: https://www.cnblogs.com/Ho1dF0rward/p/18284884

相关文章

  • 什么是跨域请求未在攻击?浏览器在这方面做了哪些努力? 为什么随机UUID做token 可以解
    跨域请求伪造攻击(Cross-SiteRequestForgery,简称CSRF)是一种恶意攻击,其中攻击者诱使用户在已认证的会话中执行未授权的操作。通过在受害者访问的站点中嵌入恶意请求,攻击者可以利用用户的身份来执行一些用户未授权的操作,如转账、修改资料等。跨域请求伪造攻击(CSRF)攻击原理用户......
  • Win10关闭断电三次修复功能,并彻底关闭windowupdate服务
    应用环境:某些环境断电较频繁,断电3次造成系统修复,系统修复又需要人为干预,从而造成生产停止,因此需要禁用该功能。1、关闭断电三次修复功能以管理者权限运行cmd.exebcdedit/setbootstatuspolicyignoreallfailuresbcdedit/setrecoveryenabledNobcdedit/set{current}boot......
  • 安卓手机微信H5无法长按保存图片修复
     <imageid="saveImg":src="imgSrc"></image>主要是因为空格的处理:this.img.replace(/(\r\n)|(\n)|(\r)/g,"")网络上的其他方式都尝试了 却忽略了最简单的问题;computed:{ imgSrc(){ if(/android/i.test(navigator.userAgent)){//判断是不......
  • CentOS7修复OpenSSH漏洞升级到OpenSSH 9.8 RPM一键更新包
    OpenSSH是SSH(SecureShell)协议的开源实现,它支持在两个主机之间提供安全的加密通信,广泛用于Linux等系统,通常用于安全远程登录、远程文件传输和其它网络服务。2024年7月1日,OpenSSHServer中存在的一个远程代码执行漏洞(CVE-2024-6387,又被称为regreSSHion)细节被公开,该漏洞影响基于gli......
  • 服务器Oracle数据库损坏修复
    当Oracle数据库在服务器上损坏时,修复过程需要谨慎且系统地进行,以确保数据的完整性和系统的稳定性。一、初步诊断与评估检查错误日志:首先,检查Oracle数据库的错误日志(如alertlog和tracefiles),这些日志通常包含有关数据库损坏的详细信息,如错误代码、失败的操作等。确定损坏范围:......
  • 修复Scikit-learn中的`ValueError: Input contains NaN`
    @TOC博主默语带您GotoNewWorld.✍个人主页——默语的博客......
  • (三)openEuler欧拉系统CVE-2024-1086漏洞复验及修复
    目录前言一、openEuler内核漏洞复验1.1、漏洞信息​编辑1.2、影响版本1.3、验证过程二、openEuler内核漏洞修复三、openEuler修复验证四、总结前言近日,Linux内核被曝存在提取权限漏洞(漏洞编号CVE-2024-1086),攻击者利用该漏洞可在本地进行提权操作,最高可获取目......
  • csrf跨站请求,钓鱼网站实现示例,CSRF校验,CSRF相关装饰器,Auth模块,扩展Auth表
    ⅠDjango框架之csrf跨站请求【一】跨站请求伪造介绍【1】引入CSRF(Cross-SiteRequestForgery)跨站请求伪造是一种常见的网络攻击方式。攻击者通过诱导受害者访问恶意网站或点击恶意链接将恶意请求发送到目标网站上利用受害者在目标网站中已登录的身份来执行某些操作从而......
  • 区块链技术如何有效防御DDOS攻击?揭秘前沿安全策略!
    在当今数字化时代,DDOS(分布式拒绝服务)攻击已成为网络安全的重大威胁之一。这些攻击通过控制大量计算机或网络设备,向目标服务器发送海量请求,导致服务器过载、响应缓慢甚至完全崩溃。然而,区块链技术作为一种新兴的安全解决方案,正逐步展现出在DDOS防御中的巨大潜力。区块链技术的......
  • IBM服务器SQL/ Oracle数据库修复
    一、故障诊断:1.使用IBM服务器管理工具(如IBMStorageManager)连接到服务器,检查当前存储状态和数据库状态。2.查看错误日志和系统日志,确定数据库损坏的具体原因,如硬盘故障、RAID阵列崩溃、文件系统损坏等。风险评估:1.评估数据库损坏的严重程度和恢复的可能性。2.确定是否有可用......