【问题标题】:Firebase database secure without firebase authFirebase 数据库安全,无需 Firebase 身份验证
【发布时间】:2026-02-08 23:10:01
【问题描述】:

我在 Play 商店发布了一个应用,我想在应用中实现 Firebase。

我已阅读所有文档,但有两个疑问:

  1. 如果有人在我的应用中使用 apk 反编译器并获取 googleservices.json,他们可以对数据库做任何他们想做的事吗?

  2. 在没有用户登录的情况下,我的数据库可能是安全的吗?

如果有任何帮助,我将不胜感激

【问题讨论】:

  • 这些是相互矛盾的要求:确保我的数据库安全但不强制执行任何安全性。您要么要求他们进行身份验证,要么允许对数据进行全局写入访问。另请参阅Anonymous Authentication,这可能是您正在寻找的内容,以及XY problem,即这个问题。另请参阅 how to askcreating an mcve

标签: android firebase firebase-realtime-database firebase-authentication firebase-security


【解决方案1】:
  1. 有人可以读取您的 googleservices.json 的事实并不涉及安全漏洞。如果您正确配置了 Firebase 项目,您会注意到在“Project Settings”面板中有一个 SHA-1 签名要添加。如果您添加 调试/生产密钥库 的签名,则只有具有特定签名 con 的应用才会使用 googleservices.json 的数据与您的 Firebase 平台进行通信。 (如果您决定不提供 SHA-1,Google 将使用其他东西作为识别机制,如 here 所述)

  2. 这个问题不是很清楚。您的数据库每次都是安全的。如果您的用户没有登录,他可能无法与数据库通信。请记住,用户应该只能看到自己的数据,因此如果您的应用程序逻辑正确,则登录用户应该无法看到其他人的敏感数据。此外请记住不要更改“规则”面板中的数据库/存储连接规则,如下图所示,以防止未经授权的操作:

【讨论】:

  • 假设我有一个应用程序的 googleservices.json,我创建一个项目,添加文件,放置相同的应用程序 ID 等。我将能够对数据库做任何我想做的事情对吧?
  • 否,因为您的应用不会使用与原始 Firebase 项目相同的 SHA-1 进行签名。您可以将 SHA-1 想象为只有 Firebase 项目所有者知道的私钥。当您使用需要身份验证的 Firebase 功能时,您将无法完成它,因为您只有公钥(在 googleservices.json 文件中)但没有私钥,因此服务器不会授权您继续(如果配置正确)
  • 我明白了,如果我在设置项目时没有添加 SHA-1 怎么办?无论如何我现在就去做
  • 如果您不添加 SHA-1,Firebase 可能会使用其他类型的识别机制(我不知道哪些是真诚的)。但是您可以在此处阅读:firebase.google.com/support/faq/#android-sha1 如果您想使用某些特定工具,则必须添加 SHA-1 证书
  • @MatPag 你能看看我的问题吗? *.com/questions/55120747/…