跨站请求伪造(CSRF)
字数 682 2025-11-13 16:40:23

跨站请求伪造(CSRF)

  1. 核心概念
    CSRF是一种恶意攻击方式,攻击者诱使用户在已登录受信任网站的情况下,执行非本意的操作(如转账、修改密码)。其本质是冒用用户身份,而非窃取数据。例如,用户登录银行网站后,误点恶意链接,导致自动发起转账请求。

  2. 攻击原理

    • 依赖条件
      1. 用户已登录目标网站,浏览器保存了认证信息(如Cookie)。
      2. 用户访问恶意页面,该页面隐藏了伪造的请求(如通过自动提交表单)。
    • 流程举例
      用户登录bank.com后,访问攻击者创建的页面。该页面包含:
      <form action="https://bank.com/transfer" method="POST">
        <input type="hidden" name="amount" value="10000">
        <input type="hidden" name="to" value="attacker">
      </form>
      <script>document.forms[0].submit();</script>
      
      浏览器自动携带已保存的Cookie发送请求,服务器误认为是用户合法操作。
  3. 防御机制

    • 同源策略限制:浏览器默认阻止跨域读取响应,但跨域请求仍可发送(需服务器配合防御)。
    • Token验证
      服务器生成随机Token嵌入表单或请求头(如X-CSRF-Token),验证请求来源的合法性。
    • SameSite Cookie属性
      设置Cookie的SameSite=StrictLax,限制跨站请求自动携带Cookie。
    • 验证Referer/Origin头
      检查请求头中的来源域名,拒绝非白名单的请求。
  4. 现代应用场景的演变

    • 单页应用(SPA)中,Token常通过加密签名与前端框架集成(如Axios自动附加)。
    • OAuth 2.0等授权流程需显式处理CSRF,如通过state参数绑定会话。
  5. 与XSS的关联与区别

    • 区别:XSS利用用户对网站的信任,CSRF利用网站对用户浏览器的信任。
    • 关联:XSS可能窃取Token,绕过CSRF防护,因此需综合防御。
跨站请求伪造(CSRF) 核心概念 CSRF是一种恶意攻击方式,攻击者诱使用户在已登录受信任网站的情况下,执行非本意的操作(如转账、修改密码)。其本质是 冒用用户身份 ,而非窃取数据。例如,用户登录银行网站后,误点恶意链接,导致自动发起转账请求。 攻击原理 依赖条件 : 用户已登录目标网站,浏览器保存了认证信息(如Cookie)。 用户访问恶意页面,该页面隐藏了伪造的请求(如通过自动提交表单)。 流程举例 : 用户登录 bank.com 后,访问攻击者创建的页面。该页面包含: 浏览器自动携带已保存的Cookie发送请求,服务器误认为是用户合法操作。 防御机制 同源策略限制 :浏览器默认阻止跨域读取响应,但 跨域请求仍可发送 (需服务器配合防御)。 Token验证 : 服务器生成随机Token嵌入表单或请求头(如 X-CSRF-Token ),验证请求来源的合法性。 SameSite Cookie属性 : 设置Cookie的 SameSite=Strict 或 Lax ,限制跨站请求自动携带Cookie。 验证Referer/Origin头 : 检查请求头中的来源域名,拒绝非白名单的请求。 现代应用场景的演变 单页应用(SPA)中,Token常通过加密签名与前端框架集成(如Axios自动附加)。 OAuth 2.0等授权流程需显式处理CSRF,如通过 state 参数绑定会话。 与XSS的关联与区别 区别 :XSS利用用户对网站的信任,CSRF利用网站对用户浏览器的信任。 关联 :XSS可能窃取Token,绕过CSRF防护,因此需综合防御。