【发布时间】:2016-05-26 21:08:57
【问题描述】:
Firebase 提供数据库后端,以便开发人员可以专注于客户端代码。
因此,如果有人使用我的 firebase uri(例如,https://firebaseinstance.firebaseio.com)然后本地开发它。
那么,他们能否从我的 Firebase 实例中创建另一个应用,注册并验证自己以读取我的 Firebase 应用的所有数据?
【问题讨论】:
Firebase 提供数据库后端,以便开发人员可以专注于客户端代码。
因此,如果有人使用我的 firebase uri(例如,https://firebaseinstance.firebaseio.com)然后本地开发它。
那么,他们能否从我的 Firebase 实例中创建另一个应用,注册并验证自己以读取我的 Firebase 应用的所有数据?
【问题讨论】:
@Frank van Puffelen,
您提到了网络钓鱼攻击。实际上有一种方法可以保证这一点。
如果您登录到您的 googleAPIs API Manager 控制台,您可以选择锁定您的应用将接受来自哪个 HTTP 引荐来源网址的请求。
这应该只允许列入白名单的域使用您的应用。
这也在此处的 firebase 启动清单中进行了描述:https://firebase.google.com/support/guides/launch-checklist
也许 firebase 文档可以使其更加可见或默认自动锁定域并要求用户允许访问?
【讨论】:
有人知道您的网址这一事实并不构成安全风险。
例如:我可以毫无问题地告诉您,我的银行在 bankofamerica.com 托管其网站,并且在那里使用 HTTP 协议。除非您还知道我用来访问该网站的凭据,否则知道 URL 对您没有任何好处。
为了保护您的数据,您的数据库应该受到以下保护:
这在Firebase documentation on Security & Rules 中都有介绍,我强烈推荐。
有了这些安全规则,其他人的应用程序可以访问您数据库中的数据的唯一方法是,如果他们复制您的应用程序的功能,让用户登录到他们的应用程序而不是您的并登录/读取/写入您的数据库;本质上是网络钓鱼攻击。在这种情况下,数据库中没有安全问题,尽管可能是时候让一些权威机构参与进来了。
2021 年 5 月更新:借助名为 Firebase App Check 的新功能,现在实际上可以将实时数据库的访问权限限制为仅来自已注册的 iOS、Android 和 Web 应用程序的访问权限在您的 Firebase 项目中。
您通常希望将此与上述基于用户身份验证的安全性结合起来,这样您就有了另一个屏障,可以防止确实使用您的应用的滥用用户。
通过将 App Check 与安全规则相结合,您既可以广泛地防止滥用,又可以很好地控制每个用户可以访问的数据。
【讨论】:
https://tinderclone.firebaseio.com/ 和 https://tinderclone.firebaseio.com/profiles.json。它们是真正的 firebase 数据库。你能开发一个应用程序吗,用电子邮件制作一个注册表单和登录表单。由于我的应用程序允许任何人使用电子邮件注册,所以在您注册后,您可以读取所有数据吗?稍后我会问你另一个问题。谢谢
".read": false 即可防止任何人看到数据。您可能希望允许更多,但这完全取决于您的用例。 Firebase documentation on Security & Rules 中介绍了保护数据的方法。
关于移动应用的Auth白名单,在域名不适用的情况下,Firebase有
SHA1 fingerprint 用于Android 应用 和
App Store ID and Bundle ID and Team ID (if necessary) 用于您的 iOS 应用
您必须在 Firebase 控制台中进行配置。
有了这种保护,因为验证不仅是验证某人是否拥有有效的 API 密钥、身份验证域等,还验证它是否来自我们的授权应用程序和 Web 的domain name/HTTP referrer in case。
也就是说,如果这些 API 密钥和其他连接参数暴露给其他人,我们不必担心。
欲了解更多信息,https://firebase.google.com/support/guides/launch-checklist
【讨论】: