【发布时间】:2018-02-15 15:57:05
【问题描述】:
我正在使用 Firebase 实时数据库,一段时间后我开始想知道是否有最佳实践来构建数据库以保护隐私。
我的意思是,我看到了数据库扇出等性能的最佳实践
Map updatedUser = new HashMap();
newPost.put("name", "Shannon");
newPost.put("username": "shannonrules");
Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com/");
Map fanoutObject = new HashMap();
fanoutObject.put("/users/1", updatedUser);
fanoutObject.put("/usersWhoAreCool/1", updatedUser);
fanoutObject.put("/usersToGiveFreeStuffTo/1", updatedUser);
ref.updateChildren(fanoutObject); // atomic updating goodness
但我没有发现任何关于隐私政策的信息。
我知道有数据库 ACL 可用于,例如,限制对未经过身份验证的用户的访问,或者用户没有特定节点的“所有者”......但对于那些可读的节点,某人可能是,如果他愿意,访问这些节点的所有子节点。
建议?
编辑:数据库规则不是后代,所以如果我让用户读取一个节点,他们总是可以读取下面的所有节点:
{
"rules": {
"foo": {
// allows read to /foo/*
".read": "data.child('baz').val() === true",
"bar": {
/* ignored, since read was allowed already */
".read": false
}
}
}
}
【问题讨论】:
-
栏读错了,但你读的是真的?
-
@PeterHaddad 是的,因为在 foo 下已读取 = true。看看这个:firebase.google.com/docs/database/security/…
-
奇怪的是它对我有用,你是否在安全规则中使用模拟器对其进行了测试?
-
@PeterHaddad 如果文档说它不能工作,它是怎么工作的?
-
没关系,它不起作用,我没有将 bar 添加为嵌套子项
标签: java android firebase firebase-security