Firebase规则建议

时间:2019-04-17 22:52:50

标签: firebase google-cloud-firestore firebase-security-rules

我已将Firestore规则略微修改为以下代码(要求用户进行身份验证才能编写)。您建议对网站进行其他限制吗?

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read;
      allow write: if request.auth != null;
    }
  }
}

1 个答案:

答案 0 :(得分:1)

对不起。我目前无法发表评论,所以我所能做的就是写一个答案。

我的经验如下。

确保仅根据需要提供对数据的访问。

因此,从一无所有开始,并在需要时显式添加访问。任何开发人员都会告诉您,或者在需要访问权限时自行解决,然后可以将其添加到该集合中。以这种相反的方式进行操作,即由已认证的用户读取或读取所有内容,将永远无法识别您授予的权限是否过多。

例如,如果云功能使用了集合,而没有别的,则不需要读取访问权限。

因此,通过集合而不是对所有内容显式添加权限。

如果未经身份验证的用户需要读取访问权限,则添加读取,但是如果仅经过身份验证的用户需要读取访问权限,则进行读取

allow read:if request.auth != null;

如果文档仅应由当前经过身份验证的用户访问,则应限制该用户,而不仅仅是所有经过身份验证的用户。

allow read: if request.auth.uid == userId;

请参阅规则的Firestore帮助] 1

此外,规则还可以包括数据验证。这允许进行长度检查,值检查等,并且还可以允许基于操作的限制,而不仅仅是读取和写入。例如

match /users/{userId} {
      allow read, update, delete: if request.auth.uid == userId;
      allow create: if request.auth.uid != null;
    }

allow read: if resource.data.userType == 'reader';

关于这个主题有一些不错的视频

Video on firestore security rule use