【问题标题】:Firebase Realtime Database Privacy best practiceFirebase 实时数据库隐私最佳实践
【发布时间】: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


【解决方案1】:

您可以使用Firebase Realtime Database Rules 保护您的数据库。

Firebase 实时数据库规则确定谁对您的数据库具有读写权限、您的数据的结构方式以及存在哪些索引。这些规则存在于 Firebase 服务器上,并且始终自动执行。只有在您的规则允许的情况下,才会完成每个读写请求。默认情况下,您的规则设置为仅允许经过身份验证的用户对您的数据库进行完全读写访问。这是为了保护您的数据库免遭滥用,直到您有时间自定义规则或设置身份验证。

使用安全规则可以满足您的所有要求。

【讨论】:

  • 是的,我已经阅读了,但因为这些规则不是后代:firebase.google.com/docs/database/security/… 拥有一个好的 ACL 策略并不容易。
  • 不是那么容易,但也不是不可能。您可以使用特定的规则来实现您想要的一切。我也可以看看Bolt
  • 是真的,没那么容易。无论如何,我会给你正确的答案,我们会看看将来是否有人会给我们一些新的热门歌曲。希望你也会喜欢我的问题;)
  • 好问题。干杯!
【解决方案2】:

如果您需要 ACL 样式的安全性,请查看 Custom Auth Claims - 使用 Cloud Functions,您可以将自己的属性添加到用户的 JWT 身份验证令牌中,例如说出他们属于哪些群体或购买了哪些产品。然后,您的安全规则可以查看用户的这些属性并决定他们是否可以访问特定节点。

【讨论】:

    猜你喜欢
    • 2018-07-18
    • 1970-01-01
    • 2016-09-21
    • 2012-09-16
    • 1970-01-01
    • 2010-11-06
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多