【问题标题】:Advice for Firebase RulesFirebase 规则建议
【发布时间】:2019-09-08 06:11:17
【问题描述】:

我已将我的 Firestore 规则稍微修改为以下代码(要求用户通过身份验证才能写入)。为了保护网站安全,您还建议进行哪些其他限制?

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

【问题讨论】:

  • 在不知道数据库中的所有内容、您希望用户如何与之交互以及隐私问题的情况下,真的无法说出您应该做什么。从广义上讲,您的规则应该反映您的应用满足用户需求所需的最低权限。

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-07
    • 2017-10-08
    • 1970-01-01
    • 2019-01-23
    • 2011-05-05
    • 2015-10-12
    • 1970-01-01
    相关资源
    最近更新 更多