【问题标题】:Allow Dropbox API to access my account on user's device允许 Dropbox API 访问我在用户设备上的帐户
【发布时间】:2013-02-07 11:16:53
【问题描述】:

作为一名移动开发人员,我正在寻找一种解决方案,该解决方案允许我的应用程序用户下载多个 .zip 文件,从而为我的应用程序添加“模块化”感觉。我在另一个应用程序中使用了 Dropbox API 来允许用户将项目备份到 他们的 帐户,但现在我需要用户访问 我的 帐户。

有没有办法自动对 我的 帐户的 Dropbox 会话进行身份验证,或者只是连接到我的公共文件夹而不让用户注意到?

后续问题

将我的访问密钥和应用密钥/秘密硬编码到应用程序中会带来哪些安全隐患?我知道从 .apk 中获取源代码相当简单,但是有人可以用这些信息做什么?

【问题讨论】:

    标签: android dropbox dropbox-api


    【解决方案1】:

    将我的访问密钥和应用密钥/秘密硬编码到应用程序中会带来哪些安全隐患?

    有足够动力的人最终会得到你的访问密钥。

    我知道从 .apk 中获取源代码相当简单,但是有人可以用这些信息做什么?

    他们可以用这些信息做任何你能做的事情。

    【讨论】:

      【解决方案2】:

      一段时间过去了,但是 现在 dropbox 将让您生成公共访问令牌并在您的代码中使用它

      是的,有一种方法可以允许永久访问 Dropbox API。我们需要从应用程序设置(保管箱控制台)生成访问令牌并使用它。下面是 Dropbox 的说明:

      通过生成访问令牌,您将能够进行 API 调用 您自己的帐户,无需通过授权流程。到 获取其他用户的访问令牌,使用标准 OAuth 流程。

      在代码中:

      AndroidAuthSession session = buildSession();
      mApi = new DropboxAPI<AndroidAuthSession>(session);
      
          private AndroidAuthSession buildSession() {
              AppKeyPair appKeyPair = new AppKeyPair(APP_KEY, APP_SECRET);
              AndroidAuthSession session = new AndroidAuthSession(appKeyPair, ACCESS_TOKEN);
              // I guess then you just have to instantiate a DropboxAPI object and you're good to go without the startAuthentication()... endAuthentication() etc.
              return session;
          }
      

      在这里,我们只需使用 mApi 做任何你想做的事情

      【讨论】:

        【解决方案3】:

        这不是 API 的预期用途,但您可以手动为您的应用授权一次访问令牌,然后以编程方式在您的应用的所有实例中嵌入并重用该访问令牌。 (不过,您需要注意不要意外撤销该访问令牌。)不过,此方法可能存在安全性和速率限制问题,具体取决于具体情况。

        或者,使用链接的其他方法可能会更容易。只需make the link(s) desired(如有必要,convert to direct),然后是download from it。 (另外,Dropbox 当然不是 CDN,所以请注意bandwidth limits。)

        后续回答

        如果您将应用令牌和访问令牌嵌入到应用中,攻击者可能会提取这些令牌,然后可以(通过 API)对您的 Dropbox 的尽可能多的应用访问权限(应用程序文件夹或完整的 Dropbox,具体取决于您的 API 应用程序),而不管您的应用程序本身通常会尝试强制执行的任何限制。因此,您不希望使用此方法来存储任何私人信息,例如任何私人用户特定文件。

        【讨论】:

        • 谢谢格雷格,我昨晚真的想通了。我认为除了创建演示应用程序和登录之外,还有一种更简单的方法来获取访问令牌。感谢带宽限制的链接,我也想知道这一点。您能否对我添加的后续问题有所了解?
        • 如果这不是 API 的预期目的并且存在潜在的安全漏洞风险,那么还有什么替代方法呢?是否有任何服务或 API 可用于此? Google Drive 或 iCloud 怎么样?我正在寻找类似的解决方案。谢谢。
        • Greg- '这不是 API 的预期用途,但您可以手动为您的应用程序授权一次访问令牌,然后以编程方式在您的应用程序的所有实例中嵌入并重用该访问令牌。 (不过,您需要小心不要意外撤销该访问令牌。)'。如果我以后更改帐户密码,这仍然有效吗?
        • 是的,帐户的访问令牌不受更改帐户密码的影响。 (如果需要,可以通过dropbox.com/account/applications 单独撤销访问令牌)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-12
        • 2022-01-02
        • 1970-01-01
        • 1970-01-01
        • 2018-07-14
        相关资源
        最近更新 更多