【问题标题】:How OAuthV2 applications protect from replay attacks on the callback from the authorization server?OAuthV2 应用程序如何保护来自授权服务器的回调免受重放攻击?
【发布时间】:2020-05-05 00:57:52
【问题描述】:

我将以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 后创建与请求者的会话.这有任何意义吗?如何防范?

【问题讨论】:

    标签: security oauth oauth-2.0


    【解决方案1】:

    为了利用这一点,攻击者首先需要获取重定向 url。这是困难的部分。重定向将从授权服务器发送到资源所有者,并且需要 HTTPS。

    一旦攻击能够窥探到这一点,大多数安全性就会消失。

    【讨论】:

    • 所以重定向 url 和 passing sensitive information on query params 通过 HTTPs 一样安全吗?
    • @M.M 是的,通过 url 传递令牌确实存在问题,特别是考虑到这些 url 可能最终出现在日志和缓存中。但是,code 应该是非常短暂且一次性使用的,这应该可以大大缓解这种情况。
    • 如果攻击者在验证代码之前以某种方式访问​​了代码,就会出现问题。
    • 完美,感谢您回答问题以及网址上的详细信息!
    • @M.M 您可能还想知道 OAuth2.1 正在开发中,草稿很好,并且需要对授权码进行额外签名。但是,我认为这个问题仍然没有改变。
    猜你喜欢
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 2015-12-08
    • 2012-03-21
    • 1970-01-01
    相关资源
    最近更新 更多