【问题标题】:Google keeps warning insecure rules谷歌不断警告不安全的规则
【发布时间】:2021-11-19 00:32:20
【问题描述】:

对于我的游戏应用,我将 firebase 数据库规则设置如下

{
  “rules”: {
    “.read”: “auth != null”,
   “.write”: “auth != null”
  }
}

游戏的本质是用户必须向数据库输入数据。我的意思是经过身份验证的用户。

当时所有的玩家都会将数据输入到同一个目录中。如果我确保上述以外的规则,用户将无法发布任何输入,因此无法玩游戏。应用程序只允许用户在某些情况下发布数据,他们不能随意更新任何数据。代码并不是全部。但谷歌不断警告不安全的规则。我的问题是身份验证用户可以从我的应用程序以外的其他来源更新数据库吗?谢谢。

【问题讨论】:

  • 您好,坦率地感谢您的留言。对不起,我对stackoverflow很陌生。弗兰克 如果应用程序中的代码不允许他们按照他们的意愿执行任何操作,我仍然对身份验证用户如何更改数据库感到困惑。代码控制他们能做什么和不能做什么。谢谢你的时间。 auth 用户可以从我的应用程序以外的其他来源更新数据库吗?。
  • 任何用户都可以创建自己的代码(例如,一个小网页,甚至在 jsbin 之类的站点中),从您的应用程序中获取配置,然后将该配置与他们自己的代码一起使用。假设您启用了匿名身份验证,他们可以运行这个简单的两行脚本来擦除您的整个数据库:await firebase.auth().signInAnonymously(); firebase.database().ref().set(null);
  • 好的。我得到了它。谢谢你的时间。我没有足够的声望,无法投票。

标签: firebase-realtime-database firebase-security


【解决方案1】:

用户需要能够读取数据库中的所有数据,并不意味着他们需要能够读取数据库的根目录。

用户需要能够写入数据库,并不意味着他们需要能够写入数据库的根目录。

在这两种情况下,您的代码可能都不会读取根目录,而且它肯定不会简单地写入根目录 - 因为这会覆盖来自其他用户的数据。

您的规则应该准确地允许您的代码如何访问数据,仅此而已。这被称为最小特权原则 - 并且是保护系统的常见做法。

另见:

最后,我建议您也检查一下 Firebase App Check,这大大减少了使用您的配置数据而不是您的代码的用户滥用的机会。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 2021-12-25
    • 1970-01-01
    相关资源
    最近更新 更多