Firebase:使用安全规则阻止子功能

时间:2017-01-25 11:05:18

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

我的数据库有以下结构和规则,我的目标是禁止用户通过child()函数获取子项的名称,即使没有注册也是如此。我的意思是每个知道孩子名字的人都可以写,但我的问题是每个人都可以通过孩子的功能看到孩子的名字。

规则:

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

结构:

{
  "collaborate" : {
    "xwkmM76Irf" : {
      "css" : "",
      "html" : "",
      "js" : ""
    }
  }
}

禁止:

firebase.database().ref('collaborate').once(
    'value', 
    function($snapshot){ 
        ...
    }
);

允许:

firebase.database().ref('collaborate/'+$id).once(
    'value', 
    function($snapshot){ 
        ...
    }
);
firebase.database().ref('collaborate/'+$id).set({
 ...
});

由于

1 个答案:

答案 0 :(得分:2)

您可以使用$变量来读取子节点:

{
  "rules": {
    "collaborate": {
      "$collaborateId": {
        ".read": true,
        ".write": true
      }
    }
  }
}

$开头的规则适用于该位置的每个子节点。

因此,使用上述规则,您可以读取任何现有的子节点(但不能通过监听/collaborate获取子节点列表)。您可以编写新的子节点(或一次覆盖现有节点)。