news 2026/5/8 2:53:15

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/5/8 2:53:15

CAD插件注册表路径

2000中文版: HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R14.0\ACAD-1:804 2002中文版: HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R15.0\ACAD-1:804 2004中文版: HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R16.0\ACAD-201:804 2005中文版: HKEY_LOCAL_MACHINE\S…

作者头像 李华
网站建设 2026/4/28 2:48:09

关于我怎么用30天考研复试口语拿到大结果

初试擦线进面&#xff0c;但复试成功逆袭十几个名次&#xff0c;一战上岸985……大家好&#xff0c;我是沐沐h。在准备复试那几天&#xff0c;因为那没有任何优势的成绩&#xff0c;我焦虑的整夜睡不着。比起在初试被淘汰&#xff0c;我更怕因为面试没过而无缘梦校……我不敢松…

作者头像 李华
网站建设 2026/5/7 3:15:39

Strix:AI驱动的全自动安全测试平台,LinuxOS部署

Strix1.简介Strix 是开源的 AI 驱动安全测试工具&#xff0c;能帮助开发人员和安全团队快速发现、验证应用程序中的漏洞。工具通过模拟真实黑客攻击&#xff0c;动态运行代码&#xff0c;减少误报。Strix 支持本地代码库、GitHub 仓库和 Web 应用的安全评估&#xff0c;具备自主…

作者头像 李华
网站建设 2026/5/7 2:46:11

APT 配置 Proxy

方法 1&#xff1a;临时设置 APT 代理如果只需要在某个终端会话中使用代理&#xff0c;可以临时配置代理。运行以下命令&#xff1a;sudo apt-get -o Acquire::http::Proxy"http://proxy-server:port/" update其中 proxy-server 是代理服务器的地址&#xff0c;port …

作者头像 李华
网站建设 2026/5/2 22:22:24

手摇专用蜗轮梯形丝杆升降机的工作原理是怎样的?

手摇专用蜗轮梯形丝杆升降机是蜗轮梯形丝杆升降机的手动特化简化款&#xff0c;专为无电、轻载、低频率精细调整场景设计&#xff0c;全程无任何电气部件&#xff0c;核心工作原理围绕 **“人力发力→力臂初级增扭→蜗轮蜗杆二次大减速比增扭 90 动力转向→梯形丝杆副将旋转转…

作者头像 李华