当前位置: 首页 > news >正文

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,服务器就拒绝操作。

✅ 方法 3:SameSite Cookie 保护

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

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

相关文章:

  • Flutter 学习之旅 之 flutter 使用 SQLite(sqflite) 实现简单的数据本地化 保存/获取/移除/判断是否存在 的简单封装
  • 《C#上位机开发从门外到门内》3-4:基于TCP/IP的远程监控系统设计与实现
  • docker-compose install nginx(解决fastgpt跨区域)
  • 海外红人营销助力游戏出海:从单一营销到生态构建的转变
  • CSS块元素、行内元素、行内块元素详解
  • 【从零开始学习计算机科学】信息安全(十)安全协议
  • Mermaid 子图 + 拖拽缩放:让流程图支持无限细节展示
  • Qt6.8实现麦克风音频输入音频采集保存wav文件
  • Git——分布式版本控制工具使用教程
  • 嵌入式/C++笔试面试指南(前言)
  • MySQL原理:逻辑架构
  • 企业安全——密码学基础
  • 鸿蒙应用程序包HAP的开发与使用
  • 欧拉降幂-乘积幂次
  • RocketMQ 性能优化与调优策略(二)
  • 【redis】Jedis 操作 Redis 基础指令(上)
  • 2022 年 3 月青少年软编等考 C 语言七级真题解析
  • 【Azure 架构师学习笔记】- Azure Databricks (22) --Autoloader
  • LeetCode 热题 100_前 K 个高频元素(75_347_中等_C++)(堆)(哈希表+排序;哈希表+优先队列(小根堆))
  • 基于ssm的自习室预订座位管理(全套)
  • 韩国代总统、国务总理韩德洙宣布辞职
  • 世界黄金协会:一季度全球黄金投资需求同比增170%
  • 鲁迅先生儿媳、周海婴先生夫人马新云女士逝世,享年94岁
  • 奈雪的茶叫停“能喝奶茶就不要喝水”宣传,当地市监称不要误导消费者
  • 朝鲜海军新型驱逐舰进行首次武器系统测试
  • 五一小长假,带着小狗去上海音乐厅