问题描述
我有一个需要用户匿名读写Firebase数据库的应用程序。我需要一种方法来使用户只能从特定域匿名读取/写入。我在这里看过类似的堆栈溢出问题
How do I lock down Firebase Database to any user from a specific (email) domain?
我尝试过类似的规则
{
"rules": {
".read": "auth.token.email.matches(/.*@mydomain.wtf$/)",".write": "auth.token.email.matches(/.*@mydomain.wtf$/)"
}
}
但这似乎只与电子邮件有关。
https://firebase.google.com/docs/rules/basics#cloud-firestore 我在官方文档中看到的所有规则示例似乎都未提及域。
有没有一种方法可以限制基于域的匿名读/写访问?如果没有,还有另一种方法可以安全地允许匿名用户读取/写入吗?如果还有另一种不涉及限制域的方法,我将不知所措。
解决方法
有没有一种方法可以限制基于域的匿名读/写访问?
否,无法基于网络域限制使用。人们可以使用公共REST API从Internet上的任何位置访问Firebase数据库。 API可用于实时数据库和Firestore。无法验证访问是否来自特定的应用程序或浏览器域。
还有另一种方法可以安全地允许匿名用户读取/写入吗?
要么允许匿名访问,要么不允许。除此之外,没有其他方法可以“保护”匿名访问。