【问题标题】:Restrict access to Firebase storage so only my app can access it限制对 Firebase 存储的访问,因此只有我的应用可以访问它
【发布时间】:2019-01-14 14:19:41
【问题描述】:

这是我的场景:1) 我正在开发一个使用 Firebase 存储的 iOS 应用。 2) 我的应用具有基于 Facebook 登录的自定义轻量级身份验证机制。 3) 所有经过身份验证的用户都可以访问 firebase 存储中的任何数据。 4) 所有其他人都不能。

我只想确保只有我的应用可以访问存储空间。如果我要构建自己的服务器,我只会使用一些 API 密钥评估每个传入的请求,该 API 密钥是在应用程序中预设的,因此来自我的应用程序的所有请求都会成功解决。如果其他人想使用我的 API,他应该知道 API 密钥。

我明白了,这不是 WEB-APP 的解决方案,因为每个人都可以看到源代码(和 API 密钥),但对于没有这种可能性的移动应用程序来说这是可以的。

所以我的问题是:我应该为此烦恼还是 Firebase 已经根据配置文件中的 APIkey 完成了这项工作。如果我应该这样做,你会推荐什么?

也许我错过了 firebase 文档中的某些内容,但我发现他们不清楚这个特定问题。

【问题讨论】:

  • 请说明您要问的实际问题。

标签: ios firebase firebase-storage


【解决方案1】:

在正常情况下,是的,所有其他人都无法访问存储。但是,没有什么是“不可破解的”。

  1. 人们可以对您的应用程序进行逆向工程并获取凭据、api 密钥等。因此,最好的方法是应用另一层保护,例如 this (for iOS)this (For Android)(仅供参考)。尽管如此,它还是可以破解的,但需要更多的努力,通常人们会放弃攻击它。

  2. 我假设您使用的是标准的 firebase 方式,需要您下载配置文件。查看您放置在项目中的配置文件,它允许人们在您的 api-key 使用下访问 firebase 功能(在本例中为 firebase 存储)。您可以应用双向因素身份验证(来自 firebase 身份验证或 facebook 身份验证)验证真实用户

希望它能给你一些想法,干杯!

【讨论】:

    【解决方案2】:

    借助名为 Firebase App Check 的新功能,现在实际上可以将对 Firebase 项目的调用限制为仅来自在该项目中注册的 iOS、Android 和 Web 应用程序的调用。

    您通常希望将此与基于用户身份验证的安全规则结合起来,例如在 common access control patterns 上的 Firebase 文档中显示的那些。

    【讨论】:

      【解决方案3】:

      首先,有人很可能会反编译您的移动应用程序并获取它的代码,即使它与您编写的不完全一样。您的 APK 或 IPA 中没有秘密。

      在 Cloud Storage 中保护文件的唯一机会是使用 Firebase 身份验证以及为您的存储分区定义的 security rules。如果您使用某种形式的自定义身份验证,则必须在此基础上使用 Firebase 身份验证,并为每个用户使用 generate a JWT

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多