Firebase 无身份验证的Firestore安全规则

Firebase 无身份验证的Firestore安全规则,firebase,google-cloud-firestore,firebase-storage,firebase-security,Firebase,Google Cloud Firestore,Firebase Storage,Firebase Security,我使用Firestore和firebase存储存储了我的公文包应用程序数据。 我的应用程序中没有用户输入或注册,只是一个简单的公文包来展示我的作品。 我希望任何用户都能够读取来自我的firestore和firebase存储的数据 我目前的规则是: service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read: if true;

我使用Firestore和firebase存储存储了我的公文包应用程序数据。 我的应用程序中没有用户输入或注册,只是一个简单的公文包来展示我的作品。 我希望任何用户都能够读取来自我的firestore和firebase存储的数据

我目前的规则是:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read: if true;
    }
  }
}
这个规则的问题是,攻击者可以通过请求使我的应用程序流畅。 我甚至收到警告邮件说 由于您的项目没有强大的安全规则,任何人都可以访问您的整个数据库。攻击者可以读取您的所有数据,并且可能会增加您的账单

我没有任何敏感数据存储,但我想防止谷歌额外收费。
我如何设置Firestore安全规则,使任何用户都可以在没有身份验证的情况下阅读,但可以防止攻击?

Firebase安全规则不喜欢数据库点处于打开状态,虽然这通常是通过安全规则和身份验证来完成的,但您可以根据文档内部的值定义文档的可读性

在本例中,文档的bool值为
Public

service cloud.firestore{
匹配/databases/{database}/documents{
//如果文档具有“可见性”,则允许用户读取数据
//字段设置为“公共”
匹配/{document=**}{
允许读取:如果resource.data.public==true;
}
}
}

谢谢您的回答。假设我在我的规则中写下你的建议,我应该在我的react应用程序中添加什么(以及在哪里)?它是否只会使安全警告消失,或者实际上有助于防止攻击者访问许多请求,如果是,如何进行?您不需要在react应用程序中添加任何附加要求,这是为了防止您的项目数据库被Firebase锁定。这将使所有未来的警告停止。目前也没有写入的方法,只能防止对数据库的任何直接滥用。您只需要为您自己和其他客户机添加关于何时以及如何写入的逻辑条件,这是readsi的一个单独字段。我应用了您建议的规则,并将添加到一些文档中的“public”bool字段设置为“true”。但根本没有数据显示,好像安全规则设置为false。我收到以下错误消息:快照侦听器中出现未捕获错误:FirebaseError:权限缺失或不足。请仔细检查字符串大小写是否相等。还要知道,如果您正在查询,这可能会被拒绝,因为public也可能是false。我提供的代码来自Firebase文档