我已将Firestore规则略微修改为以下代码(要求用户进行身份验证才能编写)。您建议对网站进行其他限制吗?
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read;
allow write: if request.auth != null;
}
}
}
答案 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';
关于这个主题有一些不错的视频