【问题标题】:Basic Firebase Rules [duplicate]Firebase 基本规则 [重复]
【发布时间】:2020-04-30 14:16:24
【问题描述】:

我是 firebase 新手,有点不遵守规则。

我的应用本质上是一个博客网站。 它允许非登录阅读帖子、用户、cmets。 它还允许登录和经过验证的用户创建帖子。

这是我的规则

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

Firebase 向我发送电子邮件说这些不安全,因为“任何用户都可以读取您的整个数据库”。 有什么我想念的吗?因为我希望人们能够在不登录的情况下读取数据?

【问题讨论】:

  • 您已授予所有人读取权限。如果您存储了某种凭据或个人资料,这可能是一个问题。但是您自愿希望每个人都阅读您的数据,所以这应该不是问题。我以前从未见过这样的电子邮件。如果您发布它的屏幕截图,将不胜感激。

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


【解决方案1】:

我相信您仍然会明白这一点,因为根据“如果为真”的逻辑,任何用户都有能力阅读其他人的“资料”。您可以做的是在匹配数据库文档中添加一些函数,以返回更多定制的测试。您确实希望避免在 Firestore 中使用开放式数据库,因此部分原因是设计使然,就您收到的电子邮件而言。我自己也遇到过同样的问题,最后为了那个特定的用例转向了 Mongo。

但是,如果您想让它保持打开状态,您可以从控制台关闭警报电子邮件。单击右上角的 Firebase 警报,单击设置(齿轮),选择您的项目,只需选择您要接收的项目即可。我知道这些警报会让人讨厌,哈哈,但这是 Google 试图提供帮助的方式 :) 祝你好运!

【讨论】:

    【解决方案2】:

    Firebase 希望您在安全规则中单独调用每个集合以允许访问,而不是使用通配符来匹配所有内容。他们无法知道您是否真的在集合中拥有一些私人数据,并且不小心授予了对它的访问权限。通过分别为每个集合指定规则,您可以非常清楚和具体地了解每个集合的访问权限。

    【讨论】:

    • 啊,我明白了。因此,如果我确实有一些个人信息,比如用户收集。我会写一条规则,这样不是每个人都可以阅读该个人信息,只有所有者可以阅读。但是,在我的情况下,它都是按设计公开的,所以现在可以忽略此警告吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 2011-03-16
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 2017-08-05
    相关资源
    最近更新 更多