javascript - Firebase 匿名数据安全

标签 javascript firebase firebase-security

来自 JS 应用的 Firebase 实时数据库安全性。

我允许所有密码授权用户读取权限。 然后,对于所有其他类型(仅匿名,根据我的方案),我只想允许读取特定的/bundles/。

这些是规则-

{
    "rules": {
        ".read": "auth != null && auth.provider == 'password'", // working!
        "bundles": {
            "$bundle": {
                ".read": "data.child('anonymous').val() == true", // not working
            }
        },
    }
}

和/bundles-

  "-L-2BbIkAg6J9WPMaJpJ": {
    "anonymous": true,
    "more_data": "data_1"
  },
  "-L-UHBr45eEUHGwsPWqq": {
    "anonymous": false,
    "more_data": "data_2"
  }

我预计,当以匿名身份登录时,只会看到第一个包,但我却从 FB 收到错误消息 - “permission_denied at/bundles”。

最佳答案

.read 失败,因为您正在尝试访问 /bundles 位置。相反,如果您直接查询特定的包,它将通过:

// read denied
ref.child('bundles').once('value')

// read allowed
ref.child(`bundles/-L-2BbIkAg6J9WPMaJpJ`).once('value')

您将无法通过 Firebase 规则过滤数据,如 this section 中所述的 Firebase 文档。我建议您更新模式并为您的匿名包提供一个单独的节点,例如:

{
  "rules": {
    ".read": "auth != null && auth.provider == 'password'",
    "anonymousBundles": {
      ".read": "auth != null" 
    }
  }
}

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

相关文章:

Firebase 规则以及如何测试它们

javascript - 如何根据 JavaScript 条件更改标题颜色

javascript for 循环在输出中产生错误

javascript - Jquery 条形码扫描仪集成

google-maps - 带有 Google Maps API 的云函数

firebase - firestore 事务抛出更新规则错误,该规则只允许有一个特定字段

java - 如何在 FirebaseRecyclerAdapter 中发出 2 个查询

firebase - 使用访问规则中的字段写入 Firestore 时权限缺失或不足

javascript - 如何使用foreach循环在mysql表中插入一个静态值和多个动态值?

swift - 如何在社交媒体应用程序中阻止 Firebase 上的用户?适用于 iOS