【问题标题】:Is it safe to display an OAuth Access Token?显示 OAuth 访问令牌是否安全?
【发布时间】:2016-01-19 20:20:59
【问题描述】:

显示我的 OAuth 2.0 应用获得的访问令牌是否存在安全问题?也许不一定要显示,但甚至可以将其回显到网站的源代码中,用户基本上可以“找到”它。假设一切都是 HTTPS。

示例:我有一个网站,我想允许人们使用 Facebook 登录。一旦他们登录,我就会从身份提供者或 Facebook PHP SDK 获得一个 FB API 访问令牌。此令牌与刚刚登录的用户相关联。我想通过显示他们的个人资料图片让用户有宾至如归的感觉,渲染一些类似于以下内容的 HTML 是否安全?

<img src='https://graph.facebook.com/me/picture?access_token=USERS_ACCESS_TOKEN'>

编辑: 我知道还有其他显示个人资料图片的选项,我不一定要求更好的方法来做到这一点。我对这些访问令牌需要采取的安全性更感兴趣。我看到的大多数资源似乎都没有提及它。

【问题讨论】:

  • 您永远不需要在源代码中输出访问令牌。您获取个人资料图像的示例不需要它,到目前为止,您还没有描述任何其他需要这样做的特定用例。如果您想进行客户端 API 调用,请使用 JS SDK,并让其处理令牌。

标签: facebook security facebook-graph-api oauth


【解决方案1】:

访问令牌应具有与其关联的最小权限集,即足以实际显示用户图片。在这种情况下,不会增加风险。 XSS 攻击,因为在攻击者设法窃取会话 cookie 和/或令牌的情况下,每种显示图片的解决方案都会涉及相同的风险。

仅当访问令牌具有与其相关联的额外权限且不用作前端的一部分时,从安全角度来看,将其呈现在前端是不太可取的。

【讨论】:

  • 感谢您的回答。这与我的想法一致,无论令牌包含在 JS 对象中还是实际上位于 DOM 上的某个位置,我们真正担心的唯一事情是某种 XSS 攻击(除了类似于 over-肩观)。我不确定 JS SDK 是如何处理这些令牌的,但我必须假设如果有人可以访问脚本,他们就可以访问这些令牌。
  • 虽然我认为带有标记的&lt;img&gt; 或&lt;a&gt; 标记会使用户更有可能执行诸如右键单击并将图像另存为或将链接发送给其他人的操作。所以至少在JS里面比那个更安全,直到现在才想到。
  • 我不会将其标记为更安全,但确实更模糊,即不方便将其剥离或意外保存在某个地方,但对于坚定的攻击者来说肯定仍然可行。
【解决方案2】:

好吧,如果 OAuth 令牌与用户会话相关联,那么攻击者窃取用户 cookie(例如通过 XSS)并将其与访问令牌一起用于代表他的 FB 执行某些操作就没有什么比这更简单的了他在您的应用程序中的帐户。我想说安全相关内容的经验法则是只披露你真正需要的信息,而不是其他信息。

【讨论】:

    【解决方案3】:

    啊,我明白你在做什么。而不是 oauth 令牌这样做:http://graph.facebook.com/1477079525902964/picture 和 ta-da

    【讨论】:

    • 我可能应该在问题中进一步澄清这一点(我会编辑),但我不一定要寻找如何显示个人资料图片。我知道有几种不同的方法可以做到这一点,我对访问令牌需要采取的安全预防措施更加好奇。您是否有一个很好的资源表明它们不应该以纯文本形式呈现?
    • 从我在这里看到的情况来看,其中有几个可能是安全问题:developers.facebook.com/docs/facebook-login/permissions/v2.5(ads_management、user_photos、publish_actions)我认为经验法则就是不要。没有人愿意承担任何责任。如果它在页面上,我可以创建一个 XSS 攻击来针对您的页面并将它们从 html 中捞出。
    猜你喜欢
    • 2018-02-28
    • 1970-01-01
    • 2021-10-26
    • 2016-03-21
    • 2011-10-29
    • 2019-07-23
    • 1970-01-01
    • 2016-12-12
    • 2014-10-30
    相关资源
    最近更新 更多