我正在使用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,例如,限制对未经过身份验证的用户的访问权限,或者没有&#34;所有者&#34;特定节点的...但对于那些可读的节点,如果他愿意,可以访问这些节点的所有子节点。
建议?
编辑:数据库规则不是后代,所以如果我让用户读取节点,他们总是可以读取下面的所有节点:
{
"rules": {
"foo": {
// allows read to /foo/*
".read": "data.child('baz').val() === true",
"bar": {
/* ignored, since read was allowed already */
".read": false
}
}
}
}
答案 0 :(得分:1)
您可以使用Firebase Realtime Database Rules保护数据库。
Firebase实时数据库规则确定谁拥有对数据库的读写权限,数据结构的方式以及存在的索引。这些规则位于Firebase服务器上,并始终自动强制执行。只有在您的规则允许的情况下,才会完成每个读写请求。默认情况下,您的规则设置为仅允许经过身份验证的用户对数据库进行完全读写访问。这是为了保护您的数据库免遭滥用,直到您有时间自定义规则或设置身份验证。
使用安全规则可以满足您的所有要求。
答案 1 :(得分:0)
如果您需要ACL样式安全性,请查看Custom Auth Claims - 使用云功能,您可以将自己的属性添加到用户的JWT身份验证令牌,例如说出他们属于哪些团体或他们购买了哪些产品。然后,您的安全规则可以查看用户的这些属性,并决定他们是否可以访问特定节点。