限制Firebase数据库访问权限仅限于特定应用程序

14

我在搜索网络后认为这在技术上不可能,但我想再次询问以防我遗漏了什么。

我有一个使用Firebase的应用程序。 通过安全规则,只有授权用户才能读取和写入,但是有些信息我希望未经授权的用户能够访问(这样我就不必在他们面前放置登录壁垒,从而影响流失)。

我想知道的是,是否有任何方式可以锁定这种读取访问权限,只有我的应用程序才能调用数据库? 我知道我可以锁定域以防止有人编写本地主机爬虫,但是如何防止有人克隆并重新设计一个应用程序,并将其指向相同的后端? 使用您的证书指纹是否可以实现这一点?

3个回答

7

没有办法仅将数据库访问限制在您的应用程序中。这与Firebase API基于云的性质不符。任何知道您数据库URL的人原则上都可以访问它,而安全规则是确保所有访问得到授权的方法。

请注意,安全规则并不是全有或无的方法:您可以要求某些部分的数据库进行登录,同时使其他部分可公开读取。但是您不能使公开可读的部分仅由您自己的应用程序可读。

同一主题的一些先前问题:

更新:自2021年5月以来,您实际上可以通过实现Firebase应用检查来限制对您的应用程序用户的访问。


谢谢你的回答,特别是第一个链接,我现在觉得更有意义了。 - JamesR

1

0
看起来有两种方法可以做到这一点:
第一种不太安全的方法是在您的安全规则中使用request.referrer。在这里,我们将其限制为一个域以进行写入访问:
   ".write": "request.referrer != null && request.referrer.startsWith('https://your-web-app-domain.com')"

其次,Firebase还增加了App Check,在查看安全规则文件之前提供了额外的安全层。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接