代码之家  ›  专栏  ›  技术社区  ›  SiberianGuy

隐式流的安全风险是什么

  •  13
  • SiberianGuy  · 技术社区  · 9 年前

    隐式流被认为是不安全的。我意识到两个问题:

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

    看起来不太糟。是否有其他我不知道的安全漏洞?

    1 回复  |  直到 9 年前
        1
  •  12
  •   SureshAtt    7 年前

    正确的陈述应该是:

    隐式流是不安全的 相当地 到代码流。

    如果攻击者想使用代码流从应用程序中窃取用户访问令牌,则攻击者必须侵入服务器网络,要么揭开应用程序的秘密,要么窃听从服务器到Google(即HTTPS)的网络流量,以获取访问令牌。

    在隐式流中,访问令牌驻留在浏览器中。在这种情况下,攻击者有许多其他可能在不破坏网络的情况下窃取令牌。

    • XSS(正如您已经解释的)
    • 混乱的代理问题(正如您已经解释的)
    • 会话固定问题(在用户B的会话中使用用户A的令牌)。 https://www.facebook.com/FacebookforDevelopers/videos/10152795636318553/ )
    • redirect_url参数操作
    • (可能)令牌泄漏与引用器标头
    • 各种钓鱼和社会工程的可能性,以欺骗用户泄露其访问令牌(比询问其密码更容易)

    但是,正如您所说的,如果您是一个具有安全意识的开发人员,那么减轻所有这些错误是很简单的。但如果实现隐式流,仍然有可能出现这些漏洞。因此,如果不将令牌传递给浏览器并在服务器端组件(代码流)中处理令牌,这可能是一个好主意。