news 2026/9/3 1:21:38

CSRF(Cross-site Request Forgery)跨站请求伪造攻击(浏览器自动携带同源Cookie机制)与XSS攻击区别、现代网站安全模板、sameSite、Referer校验

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CSRF(Cross-site Request Forgery)跨站请求伪造攻击(浏览器自动携带同源Cookie机制)与XSS攻击区别、现代网站安全模板、sameSite、Referer校验

文章目录

  • 深入理解CSRF:原理、攻击与防御实战指南
    • 一、一个真实场景:你点开的“猫咪视频”,正在转走你的存款
    • 二、CSRF本质:身份可信 ≠ 操作可信
    • 三、防御三板斧:纵深防御才是王道
      • ✅ 方案1:SameSite Cookie 属性(现代首选)(安全模板)
      • ✅ 方案2:CSRF Token(行业黄金标准)
      • ✅ 方案3:辅助验证(增强层)
    • 四、常见误区澄清
    • 五、最佳实践清单
    • 六、结语:安全是链条,而非单点

深入理解CSRF:原理、攻击与防御实战指南

你的“已登录身份”,可能正在被悄悄滥用。本文带你彻底搞懂CSRF攻击的本质与防御之道。

一、一个真实场景:你点开的“猫咪视频”,正在转走你的存款

小明登录了银行网站,办理完业务后未退出。
随后他点开朋友发的“超萌猫咪视频”链接(实为钓鱼页面)。
页面中隐藏了一段代码:

<imgsrc="https://your-bank.com/transfer?to=attacker&amount=5000"width="0"height="0">

结果:浏览器自动携带小明的银行Cookie发起转账请求——钱没了,而小明毫无察觉。

这就是典型的CSRF(Cross-site Request Forgery)跨站请求伪造攻击


二、CSRF本质:身份可信 ≠ 操作可信

  • 核心原理:利用浏览器“自动携带同源Cookie”的机制,诱导用户在已认证的网站上执行非本意操作。
  • 关键特征
    • 攻击者无法窃取Cookie内容(与XSS本质区别)
    • 但能触发浏览器自动发送Cookie
    • 用户全程无感知(“被操作”)
  • 必要条件
    1. 目标网站存在敏感操作接口(如转账、改密)
    2. 该接口仅依赖Cookie/session验证身份
    3. 用户已登录且未退出
    4. 用户访问了恶意页面

💡CSRF vs XSS
XSS是“盗取你的钥匙开门”,CSRF是“骗你亲手开门”。前者窃取凭证,后者滥用凭证。


三、防御三板斧:纵深防御才是王道

✅ 方案1:SameSite Cookie 属性(现代首选)(安全模板)

res.cookie('auth_token',token,{httpOnly:true,// 阻断XSS窃取(防XSS)secure:true,// 仅HTTPS传输(防中间人)sameSite:'Strict',// 严格模式:跨站不发Cookie// sameSite: 'Lax' // 宽松模式:允许安全GET跳转(如链接),推荐多数场景maxAge:7*24*60*60*1000,path:'/'});
  • Strict:最安全,但用户从外部链接跳转会丢失登录态(体验差)
  • Lax(推荐):允许<a href>等安全GET跳转,阻止POST/iframe等危险请求
  • ⚠️ 注意:旧版浏览器(如IE)不支持,需配合其他方案

✅ 方案2:CSRF Token(行业黄金标准)

  1. 服务端生成随机Token,存入Session
  2. 前端在表单/请求头中携带该Token
  3. 服务端校验Token一致性
// 前端(Axios示例)axios.post('/transfer',data,{headers:{'X-CSRF-Token':getCsrfToken()}// 从meta或cookie读取});// 后端(Express示例)app.post('/transfer',csrfProtection,(req,res)=>{...});// 使用csurf中间件自动验证
  • 优势:彻底打破“自动携带”链条,兼容性极佳
  • 关键:Token需绑定用户Session,且不可预测

✅ 方案3:辅助验证(增强层)

  • Referer/Origin校验:检查请求来源是否可信(注意隐私策略可能屏蔽Referer)
  • 二次验证:敏感操作要求输入密码/短信验证码(用户体验成本高)
  • 自定义请求头:如X-Requested-With: XMLHttpRequest(仅对AJAX有效)

四、常见误区澄清

误区正解
“设置了httpOnly就能防CSRF”❌ httpOnly防XSS,CSRF恰恰依赖浏览器自动发Cookie
“API用JWT就安全”⚠️ 若JWT存Cookie仍需SameSite;若存LocalStorage+Authorization头,天然免疫CSRF(但需防XSS)
“SameSite=Strict万能”❌ 旧浏览器不支持,且Strict模式影响正常跳转体验
“GET请求无害”❌ 若业务用GET做删除/转账,SameSite=Lax也无法防护

五、最佳实践清单

  1. Cookie必设SameSite=Lax+Secure+HttpOnly
  2. 敏感操作必加:CSRF Token(表单隐藏域 / 请求头)
  3. 关键操作二次验证:大额转账、改密等
  4. 定期审计:检查所有写操作接口是否验证来源
  5. 教育用户:重要网站操作后及时退出

六、结语:安全是链条,而非单点

CSRF攻击利用的是“信任链”的断裂——我们信任用户浏览器,却未验证操作意图。
真正的安全 = 技术防御(SameSite+Token) + 架构设计(无状态API) + 安全意识

🌐延伸思考
随着SPA和Token-Based认证普及,CSRF风险在降低,但传统Cookie Session架构仍广泛存在。理解CSRF,不仅是防御攻击,更是培养“最小信任原则”的安全思维。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 22:15:41

windows电脑部署OpenClaw

windows电脑部署OpenClaw什么是OpenClawOpenClaw是一个运行在本地电脑的开源 AI 智能体。核心优势&#xff1a;特性说明接入聊天工具出门在外用手机给它留言&#xff0c;它就能自动干活&#xff0c;还能实时同步截图和执行过程定时任务系统用自然语言创建定时任务&#xff0c;如…

作者头像 李华
网站建设 2026/9/2 14:56:07

软工毕业设计最新项目选题帮助

文章目录 &#x1f6a9; 1 前言1.1 选题注意事项1.1.1 难度怎么把控&#xff1f;1.1.2 题目名称怎么取&#xff1f; 1.2 选题推荐1.2.1 起因1.2.2 核心- 如何避坑(重中之重)1.2.3 怎么办呢&#xff1f; &#x1f6a9;2 选题概览&#x1f6a9; 3 项目概览题目1 : 图像隐写算法研…

作者头像 李华
网站建设 2026/9/2 22:16:45

核心技术突破:高功率密度线圈赋能智能装备高效运行

高功率密度线圈是指在有限体积和重量条件下&#xff0c;实现更高电磁能量转换效率的线圈产品&#xff0c;是当前高端装备、小型化系统和智能机器人的关键基础部件之一。随着设备集成度不断提升&#xff0c;对线圈性能的要求已从“能用”升级为“高效、稳定、紧凑”。在电机驱动…

作者头像 李华
网站建设 2026/9/2 21:42:12

设计 “砍一刀” 算法:如何做到用户疯狂参与,平台绝不亏?

在电商营销的流量厮杀中&#xff0c;“砍一刀” 凭借病毒式传播成为现象级玩法&#xff0c;但它也是一把 “双刃剑”&#xff1a;设计得当能低成本拉新百万&#xff0c;稍有不慎就会因黑产刷单、成本失控导致平台亏损&#xff0c;甚至引发用户投诉。 考察这类问题时&#xff0c…

作者头像 李华
网站建设 2026/9/2 21:41:11

我开发了一个 Claude Code 技能启动器,从此告别记忆命令的痛苦

仅适用于 Windows 系统 PowerShell 终端 前言&#xff1a;新玩具带来的小烦恼 Claude Code 推出 Skills 系统后&#xff0c;大家的工具箱一下子丰富了起来。 生成周报、处理 PDF、浏览器自动化、视频剪辑……各种技能层出不穷。但用了一段时间后&#xff0c;我发现有个小问…

作者头像 李华
网站建设 2026/9/2 21:41:09

基于Python的个人云盘管理系统的设计与实现(源码+lw+部署文档+讲解等)

课题介绍本课题针对个人文件存储分散、管理不便、文件备份不及时、跨设备访问困难、隐私安全无保障等痛点&#xff0c;设计并实现基于Python的个人云盘管理系统。后端采用Python语言搭建高效稳定的服务架构&#xff0c;整合相关数据处理框架实现文件上传、下载、存储的高效操作…

作者头像 李华