Oauth 2.0 “OAuth”吗;“国家”;减轻任何真正危险的攻击?

Oauth 2.0 “OAuth”吗;“国家”;减轻任何真正危险的攻击?,oauth-2.0,openid,openid-connect,Oauth 2.0,Openid,Openid Connect,我使用的是为了更好地理解OpenID连接流,它是关于验证状态参数的: 用户被重定向回客户端,您会注意到URL中有几个额外的查询参数: ?state=7ymowwttpcfdncs&code=Tav2TPBjSNvR8aowA3oe 由于攻击者可能会创建类似于此的GET请求,因此攻击者可能会向您的应用程序提供垃圾授权代码。您需要首先验证state参数是否与此用户的会话匹配,以便确保您启动了请求,并且只发送了一个用于客户端的授权码 基于这种解释,我们使用状态参数防止的唯一“攻击”似乎是攻击者发送我们

我使用的是为了更好地理解OpenID连接流,它是关于验证
状态
参数的:

用户被重定向回客户端,您会注意到URL中有几个额外的查询参数:

?state=7ymowwttpcfdncs&code=Tav2TPBjSNvR8aowA3oe

由于攻击者可能会创建类似于此的GET请求,因此攻击者可能会向您的应用程序提供垃圾授权代码。您需要首先验证state参数是否与此用户的会话匹配,以便确保您启动了请求,并且只发送了一个用于客户端的授权码

基于这种解释,我们使用状态参数防止的唯一“攻击”似乎是攻击者发送我们的应用程序错误代码,我们根据授权服务器检查错误代码,然后我们被拒绝

但实际上,这并没有给攻击者带来太多的伤害:我们只是向身份验证服务器发出一些额外的http请求,如果我们在服务器上立即拒绝了状态不匹配的请求,我们就不需要发出这些请求


我的问题是:我的理解正确吗?或者我缺少一个更重要的攻击向量,<代码>状态>代码>正在阻止?< /P> < P> <强>我的问题是:我的理解正确吗? 没有

为什么?

OAuth2.0规范提供了一个关于伪造重定向可以做什么的可靠示例。第一,从

状态:推荐。客户端用于维护的不透明值 请求和回调之间的状态

状态有助于将授权请求与授权响应相关联,并防止跨站点请求伪造。假设您的客户端有一个接收响应的重定向URL。如果恶意方使用有效的访问令牌(当使用隐式流时)重定向到您的客户端,该怎么办。如果此访问令牌允许访问您使用的同一资源服务器中属于恶意方的有效资源,该怎么办

针对客户端重定向URI的CSRF攻击允许攻击者 注入自己的授权码或访问令牌,可以 导致客户端使用与关联的访问令牌 攻击者的受保护资源而不是受害者的(例如,保存) 将受害者的银行帐户信息发送到受保护的资源 由攻击者控制)


状态参数可防止此类攻击。此外,我欢迎你通过。它包括许多攻击向量和在采用OAuth2.0时可以采取的对抗措施。它还包括一个关于的部分。

谢谢您的链接。我注意到您说过:“当使用隐式流时。”我应该更清楚地知道,我是在询问授权代码流。然而,在阅读您提供的链接时,CSRF似乎也是身份验证代码流中的一个问题——正确吗?@Jonah yes。考虑一下授权代码流。一旦客户机收到授权代码,它就会将代码交换为令牌。假设恶意方以某种方式获得了原始请求的客户机id(注意-身份验证请求中需要客户机id,身份验证代码与客户机id相关),则将向令牌颁发允许访问恶意资源的作用域。因此,客户端可能会公开最终用户的详细信息。是的,CSRF对需要重定向的授权类型是一种威胁。请注意,这里的恶意资源并不一定意味着有害资源。根据提供的规范和链接,它们是资源服务器中存在的某个有效方所拥有的资源。但这些资源不是最终用户想要访问的必需资源。例如,最终用户可以在不知情的情况下与该非预期方共享敏感信息。