锁定Firebase数据库访问权限以适用于特定应用程序。
Firebase数据库无法限制访问仅限于您的应用程序。这与Firebase API的基于云的特性不符合。任何知道数据库URL的人原则上都可以访问它,而安全规则是确保所有访问经过授权的方式。
请注意,安全规则不是一种全有或全无的方法:您可以要求某些部分的数据库进行登录,同时让其他部分可公开读取。但是,您无法使公开可读的部分仅可由您自己的应用程序读取。
一些先前关于同一主题的问题:
- 如何确保只有我自己的网站(客户端代码)可以与Firebase后端通信?(对此我通常的回答)
- 如何在没有登录的情况下允许仅我的应用访问Firebase?
- 限制Firebase数据库访问一个Android应用
- 如何在没有登录的情况下允许仅我的应用访问Firebase?
更新:自2021年5月以来,您实际上可以通过实施Firebase App Check来限制仅允许您的应用程序的用户访问。
感谢您的答案,尤其是第一个链接,我现在觉得更有道理了。
Firebase提供了一个很好的解决方案,可以将数据库访问权限限制在特定的应用程序上。这对于那些希望保护他们的数据免受未经授权的访问的开发者来说非常有用。在下面的链接中,我回答了一个关于如何将Cloud Firestore限制在特定域名下的问题。
解决方法如下:
1. 首先,你需要在Firebase控制台中打开数据库的访问规则。
2. 在规则中,你可以使用`request.auth.token.firebase.sign_in_provider`来检查用户是否是通过你的特定应用程序进行身份验证的。
3. 如果用户是通过你的应用程序进行身份验证的,你可以允许他们访问数据库。
4. 如果用户不是通过你的应用程序进行身份验证的,你可以拒绝他们的访问请求。
以下是一个示例规则,用于将数据库访问限制在特定应用程序上:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.token.firebase.sign_in_provider == 'your_app_provider';
}
}
}
在上面的规则中,只有通过名为`your_app_provider`的身份验证提供程序进行身份验证的用户才能读取和写入数据库。
通过这种方式,你可以确保只有你的特定应用程序可以访问和修改数据库,从而提高数据的安全性和保护隐私。
出现的原因:为了限制Firebase数据库的访问权限,仅允许特定的应用程序访问。
解决方法:有两种方法可以实现这一目标。
第一种方法是使用安全规则中的request.referrer。这种方法相对不太安全,只适用于写入操作,并且限制了访问的域名。
".write": "request.referrer != null && request.referrer.startsWith('https://your-web-app-domain.com')"
第二种方法是使用Firebase新增的App Check功能,提供了在查看安全规则文件之前的额外安全层。
Firebase App Check的详细信息可以在官方文档中找到。