CSRF 攻击简介

码不停提

2026-02-02
24 次浏览
0 条评论

CSRF(Cross-Site Request Forgery,跨站请求伪造)** 是一种常见的 Web 安全攻击,攻击者诱导已登录用户的浏览器,在用户毫不知情的情况下,对信任的网站执行非本意的操作。

网站安全漏洞
CSRF
XSS
分享:

什么是 CSRF?

CSRF(Cross-Site Request Forgery,跨站请求伪造) 是一种常见的 Web 安全攻击,攻击者诱导已登录用户的浏览器,在用户毫不知情的情况下,对信任的网站执行非本意的操作。由于浏览器会自动携带用户的身份凭证(如 Cookie),攻击可以在受害者不知情的情况下冒充其身份完成敏感操作。


攻击原理

  1. 受害者已登录某个网站,如银行、邮箱、论坛等,浏览器已存有该网站的 Cookie。
  2. 攻击者诱导受害者访问一个恶意网页或点击钓鱼链接
  3. 该网页会向受害者已登录的网站发起一个接口请求(如转账、修改邮箱等)。由于浏览器会自动带上 Cookie,目标网站会以为这是用户的正常请求。
  4. 攻击成功,受害者的敏感信息被篡改或资金被窃取。

简单的 CSRF 攻击示例

假设一个银行网站的转账接口如下:

<form action="https://bank.com/transfer" method="POST">
    <input type="hidden" name="to" value="attacker_account">
    <input type="hidden" name="amount" value="10000">
</form>
<script>
    document.forms[0].submit();
</script>

如果受害者在登录状态下访问了此页面,就会自动向银行发起转账请求。


典型危害

  • 伪造用户身份,进行未授权操作,如转账、修改邮箱、发帖
  • 针对企业后台的批量恶意操作
  • 结合社交网络进行大规模传播

CSRF 与 XSS 的区别

  • CSRF:利用用户登录状态,诱导用户浏览器发起伪造请求,攻击代码通常不驻留在受害站点。
  • XSS:注入脚本到目标站点,让其他用户执行恶意脚本。

防御措施

  1. CSRF Token 在每个敏感操作表单/请求中随机生成一个唯一的 csrf_token,服务端验证 token,攻击者无法预测。
  2. SameSite Cookie 属性 设置 Cookie 的 SameSite=StrictLax,限制第三方请求携带 Cookie。
  3. Referer/Origin 校验 后端检查请求头中的 RefererOrigin 来源是否合法。
  4. 用户交互验证 如二次确认弹窗、图形验证码等。
  5. 限制 Content-Type 仅允许特定 Content-Type 的请求通过,如 application/json,防止伪造表单请求。

实际开发建议

  • 所有金融、设置等敏感操作都应加 CSRF 防护。
  • 框架如 Django/Flask/Spring 等均内置 CSRF 防护机制,应正确配置和启用。
  • 勿在用户数据或业务接口中仅依赖 Cookie 认证,结合 token、多因素认证提升安全性。

总结

CSRF 攻击隐蔽且危害极大,开发者在设计 Web 应用时必须对敏感操作提供充分且多层次的防护,以保障用户账号和数据安全。

评论区 (0)

你需要先 登录 后才能发表评论。
还没有人评论,赶快成为第一个吧。