【问题标题】:Posted Firebase security rules as example are incorrect发布的 Firebase 安全规则示例不正确
【发布时间】:2021-04-27 23:35:29
【问题描述】:

我收到一封电子邮件,说明规则不安全,对此表示赞赏,但遵循文档并尝试应用其中一个规则,我收到了各种错误,因此希望有人能在这里帮助我,因为我找不到一种与 google-firebase 通信的方式。

除了试图在要更正的页面上发布反馈外,反馈还要求提供只能在同一页面上截取的屏幕截图?这可能是我的浏览器默认设置为不允许的东西?我会检查一下,但在那之前这里是规则和错误,所以也许有人可以让我知道在实时数据库的公共和私人混合访问下此页面上的错误:https://firebase.google.com/docs/rules/insecure-rules

{
    // Allow anyone to read data, but only authenticated content owners can
    // make changes to their data

    "rules": {
    "some_path/${uid}": {
        ".read": true
        // or ".read": "auth.uid != null" for only authenticated users
        ".write": "request.auth.uid == uid"
    }
  }
}

模拟失败 - 第 9 行:应为 ',' 或 '}'。

删除了 cmets,然后出现此错误:

{
    "rules": {
    "some_path/${uid}": {
        ".read": true
        ".write": "request.auth.uid == uid"
    }
  }
}

感谢您的帮助 按照建议使用这种格式的规则

{
   "rules": {
        "propco-test": {
            "$uid": {
                ".read": true,
                ".write": "request.auth.uid == $uid"
            }
        }
   }
}

错误是: 模拟失败 - 第 6 行:未知变量“请求”

【问题讨论】:

  • 规则在".read": true 之后缺少,,这使它们成为无效的JSON。如果您添加该错误应该消失。我建议通过 JSON 验证器运行规则来捕获这样的语法错误。我还提交了一个错误以在文档中修复它,所以希望它会尽快修复。
  • 我之前试过,忘了提。它给出了这个错误:模拟失败 - 第 6 行:键名不能包含“.”、“#”、“$”、“/”、“[”或“]”(未绑定的名称以“$”开头) .我还将尝试使用 json 验证器。谢谢
  • 是的,这不是一个有效的语法:"some_path/${uid}":
  • @FrankvanPuffelen 感谢您的帮助。它仍然无法以您抱怨相同的格式在下面发布(第 8 行:字符串不能包含“.”、“#”、“$”、“/”、“[”或“]” )。我完全迷失了这些规则。在另一个帐户上完全相同的设置,它停止接收不安全的规则。可以在任何地方接受有关这些规则的教育?看起来文档非常神秘(对于新手),并且在某些情况下测试时甚至无法正常工作。赞赏
  • 该错误消息应该随着我下面答案中的结构而消失。您发现的文档错误已修复。如果您发现类似问题,请提供链接。您发现问题的文档是我们在该主题上拥有的最好的文档。我发现它没有那么神秘,只是一种不寻常的语法。如果您遇到另一个具体问题,请发布一个包含您的规则的问题,以及不适合它的代码。

标签: firebase-realtime-database firebase-security


【解决方案1】:

您的规则中的"some_path/${uid}" 无效。如果您想为some_path/$uid 制定规则,如下所示:

{
  "rules": {
    "some_path": {
      "$uid": {
        ".read": true,
        ".write": "auth.uid == $uid"
      }
    }
  }
}

另请参阅 $ wildcard variables in security rules 上的 Firebase 文档。


编辑request 不是实时数据库安全规则中的变量,因此我将其从答案中删除。我注意到这也是文档中的一个错误,所以我提交了一个修复程序,应该会在接下来的几天内发布。

【讨论】:

  • 你好,我认为他们还没有在这部分更新谷歌文档。所以我对此代码有一个问题,例如“some_path”:可以在我们的我们应用程序的根文件夹?如果是这样,我们如何应用它?
  • 鉴于我提交了修复并发布了它,我很确定它成功了。:) 也就是说,如果您对安全规则有疑问/疑问,我建议您打开一个新的用自己的MCVE提问。
猜你喜欢
  • 2016-10-31
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2016-06-27
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
相关资源
最近更新 更多