javascript - 新用户的 Firebase 数据库安全

标签 javascript firebase firebase-realtime-database firebase-security

有没有办法使用在用户创建时最初设置的规则来检查值?

我仔细阅读了 firebase 文档,但无济于事。

当调用函数 createUserWithEmailAndPassword 时,我会在数据库中创建一些值,例如:

    "users": {
        "ht35resf435dwe3rfdw": {
            "is_premium": false,
            "display_name" "John",
            "last_login": 15353723826
        }
    }

我面临的问题是:is_premium: false 是前端代码的一部分,我担心用户可能会以某种方式将其更改为is_premium: true

我无法找到一种方法来检查它在创建时是否最初设置为 false。

P.s 我可能会搞错,我是一名大三学生,所以我将不胜感激。

最佳答案

要仅允许将值设置为 false,您可以使用验证规则:

{
  "rules": {
    "users": {
      "$uid": {
        "is_premium": {
          ".validate": "newData.isBoolean() && newData.val() == false"
        }
      }
    }
  }
}

以上内容仅允许任何客户端写入false。然而,当您使用 Admin SDK 进行写入时,这些写入会绕过这些安全规则。因此您可以使用 Admin SDK 来标记高级用户。

关于javascript - 新用户的 Firebase 数据库安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57591625/

相关文章:

php - 多个 iFrame 重定向有效,但担心 PHP 安全

javascript - 根据变量值在javascript中获取图像

java - 将 Firebase UI 数据库与 Firebase Auth/DB/storage 相匹配

java - 为什么 Firebase 中的数据没有显示在我的 TextView 中?

android - 在Firebase-Realtime Database上使用什么规则让用户注册和登录?

javascript - 使用 Date().getTime() 生成日期时,JavaScript 中出现 "invalid date"

android - 在关键火力基地中获取关键

android - 如何从 firebase 实时数据库检索唯一 key

java - Firebase Android 以最佳方式读取数据

javascript - 防止在 jeditable 触发器后换行