【问题标题】:How secure is Oauth 2.0 Implicit Grant?Oauth 2.0 隐式授权有多安全?
【发布时间】:2012-12-27 04:40:13
【问题描述】:

在隐式授予中,访问令牌在回调 URL 中发回。这不是安全风险吗,因为如果此回调 URL 缓存在跃点中。一般来说,建议不要在 URL 参数中发送敏感数据,并且此访问令牌将是访问所有受保护用户资源的令牌。那么为什么它在 URL 中作为片段传递

【问题讨论】:

    标签: security web oauth-2.0 application-security


    【解决方案1】:

    嗯,恐怕上面的答案有一些误解。虽然使用 TLS 时 URL 查询字符串是安全的,因此访问令牌在飞行中受到保护,但它会暴露在用户浏览器(他们历史的一部分)以及目标 Web 浏览器日志中。大多数 Web 浏览器都会记录传入请求的整个 URL。它们是一个称为“引用”泄漏问题的附加问题,其中查询字符串将被传递到第三方站点。可以在以下位置找到一个很好的概述:

    http://blog.httpwatch.com/2009/02/20/how-secure-are-query-strings-over-https/

    【讨论】:

    • vlatko - 你说 URI 片段有一些特殊属性是正确的,所以严格来说我上面的 cmets 不适用。然而,这是消息交换的一个非常脆弱的方面——你实际上是依赖于浏览器在重定向上的特定行为来保护流(它在重定向上省略了 URI 的片段组件)。如果 URI 片段确实在某个地方被拾取,它会为攻击者生成一个多用途令牌。
    • 你是完全正确的。根据定义,这种类型的身份验证是不安全的。
    【解决方案2】:

    详细说明@vlatko 的回复...

    为了降低在片段中发送令牌的风险(或通过任何其他 OAuth2 授权):

    发行短期访问令牌(如@vlatko 所说)将减少令牌泄露的影响,但不是预防措施。

    【讨论】:

    • 即使通过https发送访问令牌,由于它是一个片段,网络中的中间跃点服务器不可能嗅探它。
    • 你的意思是即使它是通过http发送的?
    • 如果我们假设 Oauth Server 为 X,请求访问的客户端为 Y。那么即使访问令牌在 https 中作为片段发送,从 X 到 Y,www 网络中的中间机器从 X到 Y 可以读取此访问令牌(即:窃听 https 查询参数/片段就像窃听 http 查询参数/片段一样简单)。在 https 的情况下,只有 HTTP 正文中的数据会被加密。
    • 感谢您的解释
    【解决方案3】:

    正如您所指出的,令牌是通过 URI 片段传递的。由于浏览器不会将 URL 片段发送到 HTTP 服务器,因此有人窃听并获取访问令牌的机会大大降低。

    还有其他安全措施,例如在隐式授权流程中仅发布短期访问令牌。

    OAuth2 threat models document 中的更多信息。

    【讨论】:

    • 即使通过https发送访问令牌,由于它是一个片段,网络中的中间跃点服务器不可能嗅探它
    猜你喜欢
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 2018-05-18
    • 1970-01-01
    • 2020-01-07
    • 2019-03-11
    • 2015-10-15
    相关资源
    最近更新 更多