Web安全:CSRF的攻击原理与防御措施

什么是 CSRF?

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种利用 浏览器自动携带 Cookie 的机制,诱骗用户在已登录目标网站的情况下,执行恶意操作的攻击方式。

攻击核心特点:

  • 攻击者 不需要窃取 Cookie,而是利用浏览器自动发送 Cookie 的机制。
  • 服务器无法区分 用户主动提交的请求和 恶意网站伪造的请求。

CSRF 攻击流程

示例场景(银行转账)

  1. 用户登录银行网站
    访问your-bank.com,服务器设置Cookie并返回:

    Set-Cookie: session_id=abc123; Secure; HttpOnly
    

    浏览器存储该 Cookie,后续访问 your-bank.com 时自动携带。

  2. 用户访问恶意网站
    恶意网站malicious.com隐藏了一个自动提交的表单:

       <form action="https://your-bank.com/transfer" method="POST">
         <input type="hidden" name="amount" value="10000">
         <input type="hidden" name="to_account" value="hacker">
       </form>
       <script>
         document.forms[0].submit(); // 自动提交
       </script>
    
  3. 浏览器发送伪造请求
    由于目标地址是your-bank.com,浏览器自动附加 Cookie

    POST /transfer HTTP/1.1
    Host: your-bank.com
    Cookie: session_id=abc123
    amount=10000&to_account=hacker
    

    服务器看到合法 session_id,执行转账,攻击成功!

CSRF 防御措施

(1)CSRF Token(最常用)

原理:服务器生成随机 Token,嵌入表单,提交时验证。
实现步骤:

  1. 服务器在渲染表单时生成 Token,存储(Session/Redis):
       <form action="/transfer" method="POST">
         <input type="hidden" name="csrf_token" value="RANDOM_STRING">
       </form>
    
  2. 提交请求时,服务器验证 Token 是否匹配:
       if request.cookies["session_id"] != user_session or request.form["csrf_token"] != stored_token:
           return "Invalid request!"
    
  3. 恶意网站无法获取 Token,伪造请求会被拒绝。

(2)SameSite Cookie(浏览器级防御)

通过设置 SameSite 属性,限制跨站请求携带 Cookie。
SameSite属性有三个值:

  • Strict模式‌(最严格、但可能影响用户体验)
    仅在请求来源与当前域名完全一致时发送Cookie,所有跨站请求均不携带。‌安全性最高,但可能影响用户体验(如从外部链接跳转时需重新登录)。‌‌
  • ‌Lax模式(推荐、默认值)
    允许在‌GET请求的顶级导航‌(如点击链接跳转)中发送Cookie,但禁止跨站的POST请求或其他非安全方法携带Cookie。‌‌平衡安全性与用户体验,成为主流浏览器的默认配置。‌‌
    Set-Cookie: session_id=abc123; Secure; HttpOnly; SameSite=Lax
    
  • None模式
    允许所有跨站点请求携带Cookie,但必须同时设置Secure属性(仅通过HTTPS传输)。‌‌

(3)检查 Referer/Origin 头

服务器检查 Referer(表示当前请求是从哪个 URL 页面发起的) 或 Origin (当前请求的 发起源,仅含协议 + 域名 + 端口,不含路径),判断请求来源是否合法。
缺点:Referer 可能被篡改或缺失,不适合作为唯一防护。

【SCI一区论文复】基于SLSPC系列的高阶PT-WPT无线电能传输系统研究(Matlab代码实现)内容概要:本文围绕“基于SLSPC系列的高阶PT-WPT无线电能传输系统研究”展开,重点复现SCI一区论文中的核心技术,通过Matlab代码实现高阶无线电能传输系统的建模仿真。研究聚焦SLSPC拓扑结构在恒压-恒流(CV/CC)输出特性方面的优势,深入分析系统的传输效率、耦合特性、频率分裂现象及参数敏感性,并探讨其在高功率、长距离无线充电场景中的应用潜力。文中详细给出了系统数学建模、参数设计、仿真验证等关键步骤,旨在帮助读者掌握先进无线电能传输技术的核心原理实现方法。; 适合人群:具备一定电力电子、自动控制理论基础,熟悉Matlab/Simulink仿真工具,从事无线电能传输、新能源充电技术等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解SLSPC型无线电能传输系统的恒压恒流输出机理;②掌握高阶WPT系统的建模、仿真性能分析方法;③复现SCI一区论文成果,为后续科研创新提供技术基础和代码参考;④应用于无线充电、电动汽车、植入式医疗设备等领域的系统设计优化。; 阅读建议:建议读者结合Matlab代码逐段分析系统模型构建过程,重点关注谐振参数设计、传输特性仿真及效率优化策略,同时可拓展研究不同耦合条件下的系统行为,以深化对高阶WPT系统动态特性的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值