Firebase Firestore公共收集规则

Firebase Firestore公共收集规则,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我有一个web应用程序,它基本上是一个公共项目列表,未经身份验证的用户可以搜索数据库并列出集合中的搜索结果。在我开始每天收到Firebase发来的关于Firestore数据库中不安全规则的电子邮件之前,我一直认为一切正常,但现在我开始怀疑它们 以下是我的规则: service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read: if true

我有一个web应用程序,它基本上是一个公共项目列表,未经身份验证的用户可以搜索数据库并列出集合中的搜索结果。在我开始每天收到Firebase发来的关于Firestore数据库中不安全规则的电子邮件之前,我一直认为一切正常,但现在我开始怀疑它们

以下是我的规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
     allow read: if true;
     allow write: if request.auth.uid !=null;
    }
  }
}
我是Firebase/Firestore的新手,试图了解:

1-数据是公开的,但是从Firebase收到电子邮件,这些规则实际上是一个问题吗


2-虽然这些数据是公开的,但如果有人只是顺道过来,一次下载整个收藏,那就糟了。因此,除非请求来自web应用程序/域,否则可以通过某种方式阻止对集合/文档的访问来稍微限制公共访问吗?也许是某种形式的代币?或者其他方法?

现在,您的规则允许对数据库中的所有文档进行公共读取访问,并允许经过身份验证的用户对所有文档进行写访问。Firebase通常认为这是不安全的

全局递归/{document=**}通配符有点危险,因为它可能应用于不希望可读写的数据。您应该在单独的规则中调用集合的特定名称。这样,如果创建新集合,它们将不会自动包含在通配符中


一般来说,您的规则应该尽可能具体,而不依赖于全局递归通配符。

现在,您的规则允许对数据库中的所有文档进行公共读取访问,也允许经过身份验证的用户对所有文档进行写访问。Firebase通常认为这是不安全的

全局递归/{document=**}通配符有点危险,因为它可能应用于不希望可读写的数据。您应该在单独的规则中调用集合的特定名称。这样,如果创建新集合,它们将不会自动包含在通配符中

通常,您的规则应该尽可能具体,而不依赖于全局递归通配符