You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OAuth2场景下用户能否将自身OAuth登录链接发送给他人以获取对方数据?

场景可行性结论

你描述的攻击是完全可以实现的,这类漏洞在行业内被称为OAuth 授权会话混淆漏洞,是OAuth集成场景下非常常见的通用风险。

攻击成立的核心原因

  • OAuth2 核心规范仅要求授权服务器(也就是你提到的网站B)对重定向URI做白名单校验,确实没有强制要求第三方客户端(网站A)对回调请求做上下文校验,不少开发团队集成OAuth时会忽略这个环节的校验,直接给了攻击可乘之机。
  • 用户1生成的专属OAuth登录链接本质上已经绑定了用户1在网站A的会话上下文,用户2点击这个链接完成网站B的账号授权后,网站B返回的授权码会被网站A直接关联到生成该链接的用户1的账号上,网站A用授权码换出用户2的access token、拉取到用户2的数据后,自然就会展示给用户1。

标准修复方案

只需要严格遵循OAuth2推荐的state参数使用规则即可完全规避该风险:

  • 给每个用户生成OAuth授权链接时,同步生成一个随机、不可预测、长度足够的state值,将该值和当前用户的会话绑定存储在网站A的服务端
  • 接收到网站B的回调请求时,第一步先校验回调请求携带的state参数是否和当前发起回调请求的用户的会话中存储的state值完全匹配,只要不匹配就直接终止整个授权流程,不做后续的授权码换token操作

这个逻辑下,用户1把自己的授权链接发给用户2后,用户2的网站A会话里根本没有对应用户1生成的state值,回调校验会直接失败,攻击完全无法生效。


内容的提问来源于stack exchange,提问作者Nibbler Neymar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:06:03