Google cloud firestore 允许未注册用户查询Firestore以检查电子邮件是否已存在

Google cloud firestore 允许未注册用户查询Firestore以检查电子邮件是否已存在,google-cloud-firestore,firebase-security,Google Cloud Firestore,Firebase Security,现在,在我的Firestore规则中,只有注册用户具有对我的项目的读/写访问权限。但是,我还想在注册过程中验证电子邮件是否已经存在,这意味着匿名用户也可以访问我的用户数据 我不确定从安全角度看这是如何兼容的。我是否应该创建类似电子邮件收集的内容,并在此处复制所有电子邮件地址,并允许匿名用户查询 是的,这确实是典型的方法。将要匿名访问的数据复制到单独的集合中,并在其中授予更广泛的访问限制 在该电子邮件地址集合的规则中,通常允许阅读每个特定文档,但不允许列出所有文档。比如: match /email

现在,在我的Firestore规则中,只有注册用户具有对我的项目的读/写访问权限。但是,我还想在注册过程中验证电子邮件是否已经存在,这意味着匿名用户也可以访问我的用户数据


我不确定从安全角度看这是如何兼容的。我是否应该创建类似电子邮件收集的内容,并在此处复制所有电子邮件地址,并允许匿名用户查询

是的,这确实是典型的方法。将要匿名访问的数据复制到单独的集合中,并在其中授予更广泛的访问限制

在该电子邮件地址集合的规则中,通常允许阅读每个特定文档,但不允许列出所有文档。比如:

match /emails/{email} {
  // Applies to single document read requests
  allow get: if <condition>;

  // Applies to queries and collection read requests
  allow list: if false;
}

这意味着,一旦用户键入了特定的电子邮件地址,您就可以检查该电子邮件地址是否存在文档。但他们不能仅仅从收藏中获取所有文档来获取您的用户群。

Frank-谢谢您的示例。我对单个文档的读取请求有点不知所措。当我真的想让每个人都做这个单一的读取请求时,应该有什么条件吗。。。好的。在这种情况下,如果是真的,应该是这样。您还可以考虑:if request.auth.uid!=null,并使用匿名登录。这并不要求用户输入任何数据,但至少提供了一个额外的保护级别。