【问题标题】:Can someone access my Firebase database if he/she does not have the URL?如果没有 URL,有人可以访问我的 Firebase 数据库吗?
【发布时间】:2021-06-12 13:47:00
【问题描述】:

Firebase 是一项出色的后端服务,具有强大的安全规则。在 I/O 2021 中,他们还引入了 Firebase App Check,增加了额外的安全层。但是,即使我将读/写权限设置为 true 并且不强制执行应用程序检查,任何人都可以在不知道 URL 的情况下访问我的数据库吗?如果不是,那么在 Android Studio 中完全隐藏 URL 的最佳方法是什么?

【问题讨论】:

    标签: android firebase firebase-realtime-database firebase-app-check


    【解决方案1】:

    要访问 Firebase 实时数据库,您必须知道其 URL。但这也意味着任何需要访问数据库的应用程序都必须知道其中的 URL - 在 Android 应用程序的情况下,这通常来自 google-services.json 文件。如果该 URL 存在于您的应用程序二进制文件中,则意味着恶意用户可以找到它,并使用它来访问您的数据库。

    所以:是的,您需要知道数据库的 URL 才能访问它,但不幸的是,您将该 URL 发送给应用程序的所有用户(因为这也需要 URL)。

    【讨论】:

    • 有没有办法保护 URL 免受逆向工程? (我知道 100% 的保护是不可能的,但有什么好的安全措施)?
    • 您的应用使用的任何数据都可能被(有充分动机的)恶意用户发现。因此,虽然您可以从某些云托管服务按需加载 URL,但您最终仍会在代码中使用该 URL,并且现在您添加了另一个云托管服务作为攻击媒介。保护数据库的正确方法是使用安全规则,现在使用 App Check,或者完全禁止客户端访问 (".read": false, ".write": false),然后通过自定义服务器端 API 进行所有访问(这也成为一种新的攻击向量)。
    • 感谢整个 Firebase 团队介绍 App Check。我们真的需要它。而且,我还记得你建议使用适当的安全规则。 :)
    猜你喜欢
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 2017-12-13
    相关资源
    最近更新 更多