【发布时间】:2019-02-26 19:02:15
【问题描述】:
我使用OAuth Playground 来更好地理解OpenID Connect 流程,它对验证state 参数有这样的说法:
用户被重定向回客户端,您会在 URL 中注意到一些额外的查询参数:
?state=7ymOWcwttpCfDNcs&code=Tav2TPBjSNvR8aowA3oe由于攻击者有可能制作与此类似的 GET 请求,因此攻击者可能会向您的应用程序提供垃圾授权代码。您需要首先验证 state 参数是否与此用户的会话匹配,以便您可以确定您发起了请求,并且只发送了一个用于您的客户端的授权代码。
根据这种解释,我们用 state 参数阻止的唯一“攻击”似乎是攻击者向我们的应用程序发送错误代码,我们针对授权服务器检查错误代码,然后我们被拒绝。
但是这实际上并没有给攻击者带来太多或伤害我们:我们只是向身份验证服务器发出一些额外的 http 请求,如果我们立即拒绝请求,我们就不需要发出这些请求当状态不匹配时我们的服务器。
我的问题是:我的理解是否正确,还是我错过了 state 正在阻止的更严重的攻击向量?
【问题讨论】:
标签: oauth-2.0 openid openid-connect