我在搜索网络后认为这在技术上不可能,但我想再次询问以防我遗漏了什么。
我有一个使用Firebase的应用程序。 通过安全规则,只有授权用户才能读取和写入,但是有些信息我希望未经授权的用户能够访问(这样我就不必在他们面前放置登录壁垒,从而影响流失)。
我想知道的是,是否有任何方式可以锁定这种读取访问权限,只有我的应用程序才能调用数据库? 我知道我可以锁定域以防止有人编写本地主机爬虫,但是如何防止有人克隆并重新设计一个应用程序,并将其指向相同的后端? 使用您的证书指纹是否可以实现这一点?
我在搜索网络后认为这在技术上不可能,但我想再次询问以防我遗漏了什么。
我有一个使用Firebase的应用程序。 通过安全规则,只有授权用户才能读取和写入,但是有些信息我希望未经授权的用户能够访问(这样我就不必在他们面前放置登录壁垒,从而影响流失)。
我想知道的是,是否有任何方式可以锁定这种读取访问权限,只有我的应用程序才能调用数据库? 我知道我可以锁定域以防止有人编写本地主机爬虫,但是如何防止有人克隆并重新设计一个应用程序,并将其指向相同的后端? 使用您的证书指纹是否可以实现这一点?
没有办法仅将数据库访问限制在您的应用程序中。这与Firebase API基于云的性质不符。任何知道您数据库URL的人原则上都可以访问它,而安全规则是确保所有访问得到授权的方法。
请注意,安全规则并不是全有或无的方法:您可以要求某些部分的数据库进行登录,同时使其他部分可公开读取。但是您不能使公开可读的部分仅由您自己的应用程序可读。
同一主题的一些先前问题:
更新:自2021年5月以来,您实际上可以通过实现Firebase应用检查来限制对您的应用程序用户的访问。
".write": "request.referrer != null && request.referrer.startsWith('https://your-web-app-domain.com')"