Web安全漏洞:跨站请求伪造(CSRF)
字数 828 2025-11-13 11:13:47
Web安全漏洞:跨站请求伪造(CSRF)
-
基础定义
跨站请求伪造(CSRF)是一种恶意攻击方式。攻击者诱骗已登录合法网站的用户,在不知情的情况下向该网站发送非法请求。例如,用户登录银行网站后,点击恶意链接,可能导致账户资金被转移。 -
攻击原理与必要条件
- 用户会话保持:用户已登录目标网站,浏览器保存了认证信息(如Cookie)。
- 请求触发:攻击者通过伪造的链接、图片或表单,诱导用户触发请求。
- 权限滥用:浏览器自动携带用户凭证发送请求,服务器无法区分是否为用户自愿操作。
- 典型场景:恶意链接包含转账请求
https://bank.com/transfer?to=attacker&amount=1000,用户点击后即执行操作。
- 具体攻击步骤分解
- 步骤一:用户登录
example.com,服务器返回会话Cookie。 - 步骤二:用户访问攻击者创建的页面,该页面隐藏了自动提交的表单,目标指向
example.com/change-email。 - 步骤三:表单提交时,浏览器自动附加Cookie,服务器误认为是用户合法操作,执行修改邮箱等敏感操作。
- 防御机制与技术手段
- 同源策略限制:浏览器阻止跨域脚本访问其他站点的Cookie,但无法阻止自动携带Cookie的请求。
- CSRF Token:
- 服务器生成随机Token嵌入表单或请求头。
- 提交请求时验证Token合法性,攻击者无法伪造。
- SameSite Cookie属性:
- 设置Cookie为
SameSite=Strict或Lax,限制跨站请求自动发送Cookie。
- 设置Cookie为
- 二次验证:对敏感操作要求重新输入密码或验证码。
- 现代开发中的实践策略
- 前端框架(如React、Angular)自动集成CSRF Token管理。
- RESTful API采用无状态Token(如JWT)替代会话Cookie,减少依赖浏览器的凭证管理。
- 安全扫描工具(如OWASP ZAP)自动化检测CSRF漏洞。