gpt4 book ai didi

facebook-graph-api - 从没有服务器的桌面客户端进行 OAuth 的正确方法

转载 作者:行者123 更新时间:2023-12-04 15:44:35 25 4
gpt4 key购买 nike

我正在开发一个必须与 Facebook 连接才能下载一些用户数据的扩展程序。我对 OAuth 舞蹈的细节有些陌生,并且无法以所需的安全级别实现这一点。在当前设置(有效)中,我担心作恶者劫持我的应用程序名称并使用它来发布垃圾邮件。

我已经尝试了许多不同的技术来在我的扩展中实现 OAuth(特别是使用 Facebook 登录)。当前设置使用 Facebook's Manual Login flow .

  • 在沙盒选项卡中打开 OAuth 弹出窗口。
  • 将redirect_url 设置为特殊的internal facebook page不需要配置重定向 URL,将 auth_token 参数设置为返回 auth_token,而不是临时代码。
  • 将 javascript 注入(inject)特殊重定向页面,该页面使用 auth_token 向扩展程序发布消息。

  • 这按预期工作。在他们通过弹出窗口授予我的应用程序权限后,我可以检索用户 auth_tokens。

    我担心安全性,因为扩展没有服务器来存储 key ,也没有有效的域来限制 redirect_urls 和验证授权请求的真实性。由于这个流程:黑客可以简单地将源下载到我的扩展程序,窃取 Facebook 应用程序 ID,从他们自己的网站为我的应用程序生成弹出窗口,并获取可以代表“通过”我的应用程序发布的 auth_tokens。

    更令人担忧的是, official Google Chrome gudie to OAuth in Extensions 建议将您的 consumer_secret 嵌入到扩展中。这似乎违反直觉。

    我有理由相信这可以通过两种方式解决:
  • 创建我自己的服务器,充当我的扩展程序和 Facebook 之间的代理。我可以将 redirect_url 设置为我的自定义域,将 consumer_secret 存储在我的服务器上,并在客户端和我自己的服务器之间定义一个狭窄的 API。
  • 将授权重定向限制为我的 Chrome 扩展 ID(有点像 Facebook iOS SDK 使用应用商店捆绑标识符的方式)。不幸的是,我无法将我的 Facebook 应用程序与 Chrome 扩展程序 ID 相关联。它说“无效的 URL”。

  • 我更喜欢第二个选项,因为运行服务器的成本可能很高,并且会为扩展引入另一个故障点。用户还必须处理持有他们的 auth_tokens 的“黑匣子”代码,这很糟糕。

    有趣的是,Facebook 似乎对 ms-app://URL(Windows 8 应用程序)做了特殊的异常(exception)处理。为什么不使用 chrome-extension://网址?

    所以我的问题是:——这可能吗?我错过了什么吗?其次:我对这种类型的劫持攻击有偏执吗?这似乎相当温和,但我宁愿不允许黑客劫持我的应用程序的 oauth 对话框。

    谢谢你

    最佳答案

    你的直觉是正确的。根据 facebook 的开发者文档:

    Never include your App Secret in client-side or decompilable code.



    这样做的原因正是您所说的,即使在已编译的混淆字节码中,使用现代方法对应用程序 secret 进行逆向工程也是相当简单的,即使您使用的是 https。

    在这种情况下,最好的做法是拥有一个托管 api,用于通过外部源代理所有登录,并将您的应用程序 ID 和应用程序密码隐藏在单独的配置文件中。

    关于facebook-graph-api - 从没有服务器的桌面客户端进行 OAuth 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21791631/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com