Firebase匿名数据安全

时间:2017-12-04 05:14:16

标签: javascript firebase firebase-security

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

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

这些是规则 -

{
    "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"。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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