CSRF(跨站请求伪造)详解:原理、攻击方式与防御手段

📌 什么是 CSRF?

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种"偷懒攻击"方式,黑客利用你已经登录的身份,在你不知情的情况下,让你执行某些本不想做的操作。

🔹 你可以把 CSRF 理解成"钓鱼网站 + 偷用身份"!

🎬 真实案例:银行转账攻击

👀 假设你登录了银行网站 bank.com

  1. 你输入密码登录,银行网站给你存了一个 Cookie,之后不需要每次输入密码即可转账。

  2. 黑客创建了一个惨惨的名称叫 bad-hacker.com 的恶意网站。

  3. 你无意中点击了这个恶意链接(比如邮件中的钓鱼网址)。

  4. 该恶意网站偷偷发送如下请求到 bank.com

    复制代码
    <img src="https://bank.com/transfer?to=hacker&amount=1000" />
  5. 你的浏览器自动携带 bank.com 的 Cookie,银行服务器以为是你本人操作,直接执行转账!

🛑 这样,你的银行账户就被黑客利用,钱被转走了!

🔐 CSRF 攻击的核心条件

要发生 CSRF 攻击,需要满足以下条件:

  1. 用户已登录,浏览器里有 Cookie(如已登录银行网站)。

  2. 网站通过 Cookie 验证身份(没有要求额外的身份验证)。

  3. 服务器没有额外的 CSRF 保护机制(如 CSRF Token)。

🎯 如何防止 CSRF?

✅ 方法 1:使用 CSRF Token

银行可以要求所有"敏感操作"请求都带上一个额外的 CSRF Token,只有正确的 Token,才会执行操作。

复制代码
<form action="https://bank.com/transfer" method="POST">
    <input type="hidden" name="csrf_token" value="a1b2c3d4">
    <button type="submit">转账</button>
</form>

🔍 为什么 CSRF Token 有效?

  • Token 只能在 bank.com****生成,黑客无法获取。

  • 黑客无法跨站访问 bank.com****的 Token(受同源策略保护)。

  • Token 通常是动态变化的,避免被黑客重复利用。

✅ 方法 2:检查 Referer 头

银行可以检查请求来源,确保请求来自自己的网站。

复制代码
Referer: https://bank.com/

如果请求来源是 bad-hacker.com,服务器就拒绝操作。

银行可以在设置 Cookie 时,要求 Cookie 只能用于同源请求。

复制代码
Set-Cookie: sessionid=abc123; SameSite=Strict

这样,即使黑客诱骗你访问 bad-hacker.com,该网站也无法使用你的 Cookie,攻击失效!

📝 总结

问题 答案
CSRF 是什么? 黑客利用你的身份,在你不知情的情况下,让你执行敏感操作。
CSRF 的攻击流程? 你登录 bank.com → 访问 bad-hacker.com → 浏览器带着 Cookie 访问 bank.com → 服务器误以为你本人操作。
如何防御 CSRF? 使用 CSRF Token、检查 Referer、SameSite Cookie 保护。

🔄 CSRF 是一个常见的安全漏洞,但只要合理使用防御手段,就能有效防止攻击!

💡 你学会了吗?如果有不理解的地方,可以留言交流哦!

相关推荐
谈不譚网安17 天前
CSRF请求伪造
前端·网络安全·csrf
俺的图图呢?17 天前
Django笔记——CSRF
笔记·django·csrf
小菜刀刀20 天前
文件包含漏洞,目录遍历漏洞,CSRF,SSRF
前端·csrf
我最厉害。,。20 天前
CSRF 请求伪造&Referer 同源&置空&配合 XSS&Token 值校验&复用删除
前端·xss·csrf
魔云连洲22 天前
深入理解前端安全:CSRF与XSS攻击详解
前端·安全·xss·csrf
独行soc1 个月前
2025年常见渗透测试面试题-红队面试宝典下(题目+回答)
linux·运维·服务器·前端·面试·职场和发展·csrf
独行soc1 个月前
2025年常见渗透测试面试题- 应急响应(题目+回答)
java·前端·数据库·python·安全·面试·csrf
阳光普照世界和平1 个月前
跨站脚本攻击(XSS)与跨站请求伪造(CSRF)的介绍、区别和预防
前端·xss·csrf
予安灵1 个月前
《白帽子讲 Web 安全》之跨站请求伪造
网络·安全·web安全·网络安全·csrf·跨站请求伪造
字节王德发2 个月前
Django CSRF验证失败请求为什么会中断?
python·django·csrf