隐式流的安全风险是什么?

时间:2017-02-01 04:46:53

标签: oauth-2.0 google-oauth facebook-oauth oauth2

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

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

1 个答案:

答案 0 :(得分:6)

正确的陈述应该是

  

隐式流程对代码流不安全相对

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

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

  • XSS(正如您已解释过的)
  • 困惑的副问题(正如你已经解释过的)
  • 会话固定问题(在用户B的会话中使用用户A的令牌。https://www.facebook.com/FacebookforDevelopers/videos/10152795636318553/
  • redirect_url参数操作
  • (可能)带引荐标头的令牌泄漏
  • 各种网络钓鱼和社交工程可能会欺骗用户泄露其访问令牌(比询问密码更容易)

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