如何设置规则以限制匿名读写Firebase数据库Firestore和实时对特定域的访问

问题描述

我有一个需要用户匿名读写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。无法验证访问是否来自特定的应用程序或浏览器域。

还有另一种方法可以安全地允许匿名用户读取/写入吗?

要么允许匿名访问,要么不允许。除此之外,没有其他方法可以“保护”匿名访问。