【问题标题】:Enforce Rules in Firebase Realtime Database Editor [duplicate]在 Firebase 实时数据库编辑器中执行规则 [重复]
【发布时间】:2018-07-27 03:38:33
【问题描述】:

概述

在 Firebase 中使用实时数据库时,我可以编辑和绕过规则。我知道这在某些情况下很方便,但我也想将规则应用于手动提交的数据。

示例

这是在任何地方禁用写入的最简单的写入规则。使用规则模拟器,我无法按预期编写。

但是,即使我保存了规则,我仍然可以在我的数据库中写入

今天是我使用 Firebase 规则的第一天。我是否对规则感到困惑,或者在手动编辑器中没有禁用绕过规则的选项?

【问题讨论】:

  • Firebase 控制台作为管理进程运行,不会强制执行您的安全规则。这是设计使然,因为您通常应该只在初始开发期间(当您的规则仍然非常不稳定时)和一些特殊的管理任务(您通常不在规则中强制执行)使用控制台。对于其他一切:使用应用程序代码,可能在自定义的管理仪表板中用于您的应用程序的常规管理任务。

标签: firebase firebase-realtime-database firebase-security firebase-console


【解决方案1】:

您将能够从控制台手动写入数据库(没有没有选项),但是使用上面的规则".write": "false",这意味着最终用户将无法写入数据库。

手动添加到数据库的人通常是管理员。这就是为什么即使它是write:false 它仍然会添加到数据库中。

但如果你有这个:

  Class
     randomid
      Keys:values

那么将在他的手机中创建类的用户将无法将数据发送到数据库,因为write:false

即使你有这个:

  {
"rules": {
      ".read": "false",
      ".write": "false",  
   }
 }

您仍然可以在控制台中看到数据,但最终用户将无法读取或写入数据库。

【讨论】:

  • 这很不幸。谢谢你的确认。您认为这将是一个有益的功能吗?例如,我不希望手动输入的信息违反条件并破坏我的应用程序。我会在 24 小时内接受您的答复,但请稍候,以防有人碰巧有相反的答复(怀疑)。
  • 您是唯一可以访问该控制台的人,因此您是唯一可以手动添加的人。如果您不想破坏应用程序,则不要手动添加,因为当您更改规则时,您也会影响最终用户(他将无法看到他想要检索时写入的数据)
  • 感谢您的解释。我的具体情况是设置用户只能读取的配置值,但手动输入数据的意外类型将是有害的。而且绝对!随意回报:)
【解决方案2】:

删除最后一个逗号。

{
     "rules": {
         ".read": "false",
         ".write": "false"
     }
}

并发布更改,而不是测试。

注意,无论如何您都可以添加值,因为您拥有该数据库并从控制台使用它。如果您通过 SDK(Android、iOs、Node 等)使用它,您将无法写入数据。

【讨论】:

  • 这并没有改变行为,因为我仍然能够编辑数据库。
猜你喜欢
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 2020-12-28
  • 2021-01-31
相关资源
最近更新 更多