gpt4 book ai didi

security - 状态参数在基于 OAuth2 的身份验证中可以防止什么样的 CSRF 攻击?

转载 作者:行者123 更新时间:2023-12-05 00:10:02 25 4
gpt4 key购买 nike

我正在使用 Google OAuth2 API 进行身份验证部分。
我使用的是“服务器”流程,而不是“隐式”流程。

执行第 1 步获取 code 时指南建议使用 state参数以确保最终服务提供者将收到与其发起的身份验证请求相关的响应。

https://developers.google.com/identity/protocols/OpenIDConnect#createxsrftoken

据我所知,code 有可能可以被盗,和redirect_uri猜到了。

但我不明白为什么这被称为反CSRF保护?

根据 wiki CSRF 攻击“利用站点对用户浏览器的信任”。
据我所知,应该在浏览器中保留一些敏感的东西,以使 CSRF 攻击成为可能。最经典的例子 - 身份验证 cookie。

但是与 OpenID-connect 代码流相关的浏览器中保存了什么?
它只是从服务提供者到身份提供者并返回的两个结果重定向。代码本身作为 URL 参数在回调中传递。浏览器的角色是被动的 - 被重定向两次。这里没有存储任何东西。

所以我的问题是,CSRF 攻击究竟是什么类型的 state防止?谁能给个详细的例子?或者只是在谷歌指南中误用了术语“CSRF”?

最佳答案

CSRF 的目标是通过单击攻击者发送的链接来欺骗用户在网站中执行操作(通常是用户在正常情况下不会执行的破坏性写入操作)。此类事件的一个示例可能是删除用户自己的网站帐户。假设用户登录到网站,来自用户浏览器的请求受到网站服务器的信任,网站服务器无法发现(没有 CSRF token )用户实际上是被欺骗做出该请求。

如果是 Google OAuth2(授权码授予类型),请注意对 Google 身份验证服务器的初始请求包含用户在成功身份验证后实际想要访问的 url。攻击者可以小心翼翼地构造具有某种恶意意图的 url 并让用户使用它。

状态 token 检查使服务器能够确保请求确实来自其自己的网站,而不是来自任何其他地方。如果攻击者使用一些随机状态 token 创建 url,服务器将无法识别并拒绝请求。

关于security - 状态参数在基于 OAuth2 的身份验证中可以防止什么样的 CSRF 攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58823560/

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