Implicit flow有哪些安全隐患

What are the security risks of Implicit flow

隐式流被认为是不安全的。我知道两个问题:

  1. Confused deputy。但是要克服它,您只需要检查 access_token 是否已提供给您的应用程序。没什么大不了的。
  2. XSS 攻击。因此,如果我们的 access_token 通过 XSS 攻击被盗,它可以用来发出请求(这是我们最初请求范围的一部分)。它很糟糕,但很难窃取 access_token,因为我们很可能只在登录页面上拥有它,并且没有存储在应用程序状态中,因为它是短暂的(我想这就是隐式工作流不支持刷新令牌的原因)。

看起来还不错。还有其他我不知道的安全漏洞吗?

正确的说法应该是

implicit flow is insecure relatively to the code flow.

如果攻击者想要使用代码流从应用程序窃取用户访问令牌,则攻击者必须闯入服务器网络并发现应用程序秘密或窃听从服务器到 Google 的网络流量(这是 HTTPS)以保留访问令牌。

在隐式流程中,访问令牌驻留在浏览器中。在这种情况下,攻击者可以通过许多其他方式窃取令牌而不必破坏网络。

  • XSS(正如你已经解释过的)
  • 混淆副手问题(你已经解释过了)
  • Session 修复问题(在用户 B 的 session 中使用用户 A 的令牌。https://www.facebook.com/FacebookforDevelopers/videos/10152795636318553/
  • redirect_url参数操作
  • (可能)令牌泄漏与引用 header
  • 诱骗用户泄露访问令牌的各种网络钓鱼和社会工程可能性(比询问密码更容易)

但是正如您所说,如果您是具有安全意识的开发人员,则可以直接减轻所有这些错误。但是,如果您实施隐式流程,这些漏洞仍有可能出现。因此,最好不要将令牌传递给浏览器并在服务器端组件(代码流)中处理令牌。