【发布时间】:2020-02-25 00:00:30
【问题描述】:
我有一个具有以下结构的 firebase 实时数据库:
users:
user_id:
name: str
friend_ids: [str]
records:
record_id:
text: str
我现在正在尝试保护该数据库,以尽量减少恶意用户删除或覆盖数据库中有价值信息的可能性。如果每个用户只能写入用户表中的记录,我相信我可以使用 Firebase 规则来保护数据,例如:
"users": {
"$uid": {
".write": "$uid === auth.uid"
}
}
但是,每个用户还需要能够写入其他用户的记录,例如用户 A 可以和用户 B 成为朋友,并且可以原子地更新用户 A 和 B 的friend_ids 属性。
我的问题是:我应该如何使用这种设置来保护数据库?每个用户都需要能够写入任何 user_id 和任何 record_id。其他人可以就这个问题提供的任何建议都会非常有帮助!
【问题讨论】:
-
“每个用户都需要能够写入任何 user_id” - 这与您在上一段中关于朋友的内容直接冲突。假设您不是要准确地说出这个,那么您要做的就是使用数据库中表达用户之间关系的内容,并在规则中对其进行查询以确保满足所需的条件给定写操作。见:firebase.google.com/docs/database/security/…
-
似乎所需的方法是将属性存储在用户表的注册用户记录中,然后使用一些基于属性的安全规则:firebase.google.com/docs/rules/…
-
@DougStevenson(很高兴认识另一个 Doug!)感谢您的来信。是的,我想我需要类似 firebase 文档中基于属性的身份验证:firebase.google.com/docs/rules/…
标签: firebase firebase-realtime-database firebase-security