gpt4 book ai didi

oauth-2.0 - 在 OAuth2.0 中没有状态参数的情况下,CSRF 是如何工作的?

转载 作者:行者123 更新时间:2023-12-03 22:49:06 27 4
gpt4 key购买 nike

我在公司使用 identityserver3 的 OAuth2.0 进行 SSO,我不明白 state 参数是如何阻止 CSRF 的。

我复制了如下攻击流程:

1.Mallory 访问某个客户的网站并开始授权该客户使用 OAuth 访问某个服务提供商的过程

2. 客户代表 Mallory 向服务提供商请求访问权限,该权限被授予

3.Mallory 被重定向到服务提供商的网站,她通常会在其中输入她的用户名/密码以授权访问

4.相反,Mallory 捕获/阻止此请求并保存其 URL(Callback Url)

5. 现在,Mallory 以某种方式让 Alice 访问该 URL。如果 Alice 使用她自己的帐户登录到服务提供商,那么她的凭据将用于颁发授权码

6.授权码换取访问 token

7.现在Mallory在客户端的账户被授权访问Alice在服务提供商的账户

我可以理解第 1 步到第 4 步。但从第 5 步开始,我感到有些困惑。根据我的理解,在第5步Alice登录时访问Callback Url,然后服务器只需使用授权码访问OAuth服务提供者在后端获取openid和访问 token ,然后Alice的浏览器就可以了使用 Mallory 的账户和访问 token 执行登录。与 Mallory 的浏览器有什么关系?
你能详细解释一下吗?感谢您花时间阅读我的话!

最佳答案

我认为步骤 3 和 4 不太正确。我已经编辑了你的例子来展示我认为攻击是如何工作的。

1.Mallory 访问某个客户的网站(例如 https://brilliantphotos.com )并开始授权该客户使用 OAuth 访问某些服务提供商的过程(例如 Acebook - 因为brilliantphotos.com 允许其用户将图片发布到他们的 Acebook 页面)

2.brilliantphotos.com 将 Mallory 的浏览器重定向到 Acebook 的授权服务器,请求在身份验证完成后重定向回自身。

3.Mallory 被重定向到授权服务器,在那里她输入她的 Acebook 用户名/密码以授权访问。

4.成功登录后,Mallory 捕获/阻止后续重定向请求并保存其 URL(带有与 Mallory 相关的验证码的回调 URL)例如

https://brilliantphotos.com/exchangecodefortoken?code=malloryscode

5. 现在,Mallory 以某种方式让 Alice 访问该 URL(可能作为论坛帖子上的链接......)请注意,Alice 可能已经使用她自己的帐户登录到brilliantphotos.com。

6.Alice点击进入brilliantphotos.com的链接,授权码换取访问 token (访问淘气的马洛里的账户)。如果 Alice 已登录,那么brilliantphotos.com 可以想象将 Alice 的帐户与新类型转换的访问 token 相关联。

7.现在如果 Alice 继续使用brilliantphotos.com 网站,客户可能会无意中将图片张贴到服务提供商 (Acebook) 上的 Mallory 帐户中。

如果一个状态参数是由 brightphotos.com 维护的,那么 Mallory 的状态代码将绑定(bind)到她的浏览器,而不是 Alice 的。因此,当 Alice 单击恶意 URL 时,brilliantphotos.com 将无法将状态代码与 Alice 的浏览器 session 相关联。

关于oauth-2.0 - 在 OAuth2.0 中没有状态参数的情况下,CSRF 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35985551/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com