Skip to content

CSRF

CSRF(跨站请求伪造)是一种攻击方式,攻击者诱使已登录的用户在不知情的情况下,向受信任的网站发起恶意请求,从而执行未经授权的操作。


1. CSRF 攻击原理

  • 基本概念
    当用户在网站 A 登录后,网站 A 会为用户建立一个会话(通常通过 Cookie 维持登录状态)。如果用户同时访问了攻击者控制的网站 B,该网站可以诱导用户发送一个针对网站 A 的请求,而由于浏览器会自动附带 Cookie,这个请求会被视为合法请求,从而触发敏感操作。

  • 典型攻击场景
    假设用户在银行网站登录后,攻击者在恶意网站上嵌入如下代码:

html

当用户访问恶意网站时,该图片请求会自动发送至银行网站,由于用户的登录 Cookie 被附带,银行可能错误地将转账请求当作合法请求处理。


2. CSRF 攻击风险

  • 未经授权的操作
    攻击者可以利用用户的身份,进行诸如转账、修改用户信息、删除数据等敏感操作。

  • 影响范围广泛
    任何依赖 Cookie 维持会话的 Web 应用都可能受到 CSRF 攻击,尤其是金融、电商、社交网络等高敏感性系统。


3. 防范 CSRF 攻击的措施

a. 使用 CSRF Token

  • 原理
    在每个表单或敏感请求中嵌入一个随机生成的 CSRF Token,服务器在接收到请求时验证该 Token 是否与当前会话匹配。
  • 优点
    攻击者无法伪造有效的 Token,即使利用用户 Cookie 发起请求,也无法通过验证。
  • 实现示例
    • 在服务端生成 Token,并在页面中嵌入隐藏域:
html
<input type="hidden" name="csrf_token" value="随机生成的token">
  • 服务端在处理请求时验证该 Token。
  • 原理
    设置 Cookie 的 SameSite 属性,限制 Cookie 只在同一站点请求时发送,防止跨站请求自动附带 Cookie。
  • 优点
    能够有效阻止跨站请求携带 Cookie,从而减少 CSRF 攻击风险。
  • 设置示例(HTTP 响应头):
Set-Cookie: session_id=abc123; SameSite=Strict; Secure; HttpOnly

c. 检查 Referer 或 Origin 头

  • 原理
    在服务器端验证请求的 Referer 或 Origin 头,确保请求来自受信任的来源。
  • 优点
    能够拦截来自不可信来源的请求,但需注意部分用户可能禁用这些头部信息。
  • 原理
    将 CSRF Token 存储在 Cookie 中,并在请求体中传递同一 Token,服务器比较两者是否匹配。
  • 优点
    利用 Cookie 的不可见性与请求体数据的安全性共同提高防护效果。

4. 总结

  • CSRF 利用浏览器的自动 Cookie 附带机制,诱导已登录用户发起未经授权的请求。
  • 防范策略
    • CSRF Token 是最常用的防御手段;
    • SameSite Cookie 设置可以有效限制跨站 Cookie 发送;
    • 同时结合 Referer/Origin 检查 提供额外的安全保障。

通过合理的防护措施,可以有效降低 CSRF 攻击对 Web 应用的风险。

评论区

欢迎留言、补充或勘误。

xiaoba.blog