【问题标题】:Firebase rules - secure user dataFirebase 规则 - 保护用户数据
【发布时间】:2017-11-14 22:41:26
【问题描述】:

我找不到任何有关使用 Firebase 规则保护用户数据的主题。 我正在使用 ionic-angular 和 firebase (auth + database) 编写应用程序。

我在数据库中的结构是:

Database structure


我想要实现的是,每个经过身份验证的用户只能看到他自己的联系人。


起初我尝试了类似this 的方法。但是权限被拒绝了。

所以我不得不一次又一次地阅读 firebase api。 我的下一个想法是this。它正在工作。我测试过,每个用户只能访问自己的联系人,可以添加新联系人、删除联系人、更新联系人等。这只是关于 Firebase 规则


我现在的问题是,第二个想法是否足够保护我的用户数据?我知道 ".write & .read = true" 让全世界都可以访问数据,但它们首先必须经过身份验证,并且经过身份验证的用户必须具有匹配的 uid。我是对的还是有问题?

【问题讨论】:

  • 您的第一个想法应该可行,尽管规则是多余的(Notmfb 的版本更简洁)。您的第二个想法(读/写为真)允许任何用户读取和写入任何其他用户的联系人
  • 是的,Notmfb 是对的。我再次进行了代码审查并查找了错误的来源,发现我在取消订阅时出错了。取消订阅功能过早触发。谢谢

标签: angular firebase-realtime-database ionic3


【解决方案1】:

我假设这是一个模型?假设您使用 uid 作为键值,这应该可以工作:

 "rules": {
    "profiles": {
      "$uid": {
        ".read": "auth.uid == $uid,
        ".write": "auth.uid == $uid',
      },

我假设在配置文件下您拥有实际的用户 ID,而不是“user1”、“user2”等。如果您只想让他们访问(不更改),请将 write 更改为 false。

【讨论】:

  • 是的,它是一个模型,而我有实际的用户 ID。我在您的规则中收到此错误:错误:permission_denied at /profiles/f9tPralCdWZSJ61BxaZ9DVNffAy1/contacts:客户端无权访问所需数据..使用我的规则(“联系人:”{.write:true,.read : true} 在 $uid 中 - 它工作正常,但我的数据是否受此规则保护?
  • 联系人下还有其他规则吗?如果你只是说真的,那是不安全的。你需要弄清楚这一点。
  • 不,我没有任何其他规则。我已经上传了我的工作规则的截图。我再看看。谢谢
猜你喜欢
  • 2020-01-15
  • 2018-06-06
  • 2017-11-18
  • 2020-08-22
  • 1970-01-01
  • 2015-05-24
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
相关资源
最近更新 更多