OAuth授权码流程安全问题(授权码被黑客截获)
OAuth authorization code flow security question (authorization code intercepted by a hacker)
我无法理解的事情。
据我了解,授权代码流应该比隐式流更安全,因为令牌不是直接从授权服务器发送到客户端,而是由您的后端检索。
所以流程基本上是:
- 浏览器获取授权码(作为排序的 URL 参数)。
- 将其发送到 public 后端端点。
- 后端将代码 + 客户端密码发送到授权服务器,检索令牌并将它们存储在客户端的 cookie/local 存储中以供进一步使用。
在此流程中,所有教程都将授权码描述为对黑客毫无用处,这是为什么呢?黑客不能使用 Postman 或其他客户端并直接访问您的 (public) API,让它通过第 3 步,从而检索令牌吗?
我在这里错过了什么?
code
只使用了一次。在许多情况下,攻击者可能会访问 code
,它已被交换为访问令牌,因此无用。
authorization_code
是一次性令牌。
授权码又名 auth code
仅 public 使用,以便客户端可以在他和授权服务器之间建立一个安全的反向通道,这样他就可以在不使用的情况下与访问令牌交换它浏览器。
auth code
是 public 并且可以通过代理拦截,因为它出现在 redirect_uri
的查询中并通过浏览器使用(这被认为是不安全的)。访问令牌依赖于auth_code
(public)和client_secret
(私有)进行交换。如果没有 client_secret
,攻击者可以通过这种方式通过暴力破解获得 access token
。
总结:即使攻击者知道 authcode
他也可以在没有 client_secret
在注册时(或动态地)给客户端并假定是安全的情况下做任何事情。
我无法理解的事情。 据我了解,授权代码流应该比隐式流更安全,因为令牌不是直接从授权服务器发送到客户端,而是由您的后端检索。 所以流程基本上是:
- 浏览器获取授权码(作为排序的 URL 参数)。
- 将其发送到 public 后端端点。
- 后端将代码 + 客户端密码发送到授权服务器,检索令牌并将它们存储在客户端的 cookie/local 存储中以供进一步使用。
在此流程中,所有教程都将授权码描述为对黑客毫无用处,这是为什么呢?黑客不能使用 Postman 或其他客户端并直接访问您的 (public) API,让它通过第 3 步,从而检索令牌吗?
我在这里错过了什么?
code
只使用了一次。在许多情况下,攻击者可能会访问 code
,它已被交换为访问令牌,因此无用。
authorization_code
是一次性令牌。
授权码又名 auth code
仅 public 使用,以便客户端可以在他和授权服务器之间建立一个安全的反向通道,这样他就可以在不使用的情况下与访问令牌交换它浏览器。
auth code
是 public 并且可以通过代理拦截,因为它出现在 redirect_uri
的查询中并通过浏览器使用(这被认为是不安全的)。访问令牌依赖于auth_code
(public)和client_secret
(私有)进行交换。如果没有 client_secret
,攻击者可以通过这种方式通过暴力破解获得 access token
。
总结:即使攻击者知道 authcode
他也可以在没有 client_secret
在注册时(或动态地)给客户端并假定是安全的情况下做任何事情。