我将以here为例。假设Resource Owner
想要授权Application
example-app.com有权访问他的某些资源。
1] Resource Owner
将被定向到Authorization Server
中的URI,例如:
https://authorization-server.com/auth
?response_type=code
&client_id=29352915982374239857
&redirect_uri=https%3A%2F%2Fexample-app.com%2Fcallback
&scope=create+delete
&state=xcoiv98y2kd22vusuye3kch
2)Resource Owner
将通过Authorization Server
进行身份验证,并将重定向到:
https://example-app.com/redirect
?code=g0ZGZmNjVmOWIjNTk2NTk4ZTYyZGI3
&state=xcoiv98y2kd22vusuye3kch
问题:如果其他人复制了步骤2中的URI并向相同的URI请求,该怎么办?假设Attacker
的请求将在Resource Owner
之前处理。例如,Attacker
将相同的请求发送至:
https://example-app.com/redirect
?code=g0ZGZmNjVmOWIjNTk2NTk4ZTYyZGI3
&state=xcoiv98y2kd22vusuye3kch
[在我看来Application
现在可以从Resource Owner
访问资源并与Attacker
共享资源,特别是如果Application
一旦验证code
而与请求者建立了会话,则尤其如此。这有任何意义吗?如何防止这种情况?
要利用这一点,攻击者首先需要获取重定向URL。这是困难的部分。重定向将从授权服务器发送到资源所有者,并且需要HTTPS。
一旦攻击能够对此进行侦听,大多数安全措施将无法提供。