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 是一个常见的安全漏洞,但只要合理使用防御手段,就能有效防止攻击!

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

相关推荐
字节王德发5 小时前
如何在Django中设置CSRF Token?
django·sqlite·csrf
奔跑吧邓邓子6 天前
【商城实战(23)】筑牢安全防线,防范常见漏洞
安全·springboot·uniapp·csrf·element plus·sql注入·商城实战
黑客老李10 天前
某系统webpack接口泄露引发的一系列漏洞
前端·人工智能·安全·webpack·node.js·xss·csrf
linweidong14 天前
希音(Shein)前端面试题集锦和参考答案
前端·arcgis·xss·csrf·前端面试·前端面经·webpack原理
C_V_Better15 天前
Spring Security 如何防止 CSRF 攻击?
java·开发语言·数据结构·后端·算法·spring·csrf
渗透测试老鸟-九青16 天前
记一次Self XSS+CSRF组合利用
网络·经验分享·安全·web安全·代码审计·xss·csrf
爱编程的小庄24 天前
web安全:跨站请求伪造 (CSRF)
安全·web安全·csrf
顾比魁24 天前
pikachu之CSRF防御:给你的请求加上“网络身份证”
前端·网络·网络安全·csrf
摸鱼也很难24 天前
CSRF 漏洞原理演示 && 基本绕过(同源 异源)&& 配合XSS&Token值校验&复用删除
web安全·csrf