【问题标题】:OAuth authorization code flow security question (authorization code intercepted by a hacker)OAuth授权码流安全问题(授权码被黑客截获)
【发布时间】:2021-08-21 01:06:55
【问题描述】:

我无法理解的东西。 据我了解,授权代码流应该比隐式流更安全,因为令牌不是从授权服务器直接发送到客户端,而是由您的后端检索。 所以流程基本上是:

  1. 浏览器获取授权码(作为排序的 URL 参数)。
  2. 将其发送到公共后端端点。
  3. 后端将代码 + 客户端密码发送到授权服务器,检索令牌并将其存储在客户端的 cookie/本地存储中以供进一步使用。

在这个流程中,所有教程都将授权码描述为对黑客无用,这是为什么呢?黑客不能使用 Postman 或其他一些客户端并直接访问您的(公共)API,使其通过第 3 步,从而以相同的方式检索令牌吗?

我在这里错过了什么?

【问题讨论】:

    标签: oauth websecurity


    【解决方案1】:

    code 只使用一次。在许多攻击者可能会访问code 的情况下,它已经被交换为访问令牌,因此无用。

    authorization_code 是一次性令牌。

    【讨论】:

    • 一个小后续:是否有可能在实际流程完成之前拦截授权码并访问BE API,从而劫持令牌?是否有防止这种情况发生的最佳做法?
    • @Matan,是的。您应该使用 PCKE。这是authorization_code 流程的扩展。
    【解决方案2】:

    授权码又名auth code是公开使用的,这样客户端就可以在他和授权服务器之间建立一个安全的反向通道,这样他就可以在不使用浏览器的情况下与访问令牌交换它。

    auth code 是公开的,可以通过代理拦截,因为它出现在redirect_uri 的查询中并通过浏览器使用(这被认为是不安全的)。访问令牌取决于交换的auth_code(公共)和client_secret(私人)。如果没有client_secret,攻击者可以通过这种方式暴力破解access token

    总结:即使攻击者知道authcode,他也可以在没有client_secret 在注册时(或动态地)提供给客户端并假定它是安全的情况下做任何事情。

    【讨论】:

      猜你喜欢
      • 2015-12-11
      • 2018-11-21
      • 2014-11-04
      • 2016-10-15
      • 2015-09-16
      • 2015-12-16
      • 2020-03-01
      • 2019-09-21
      • 2020-12-11
      相关资源
      最近更新 更多