代码之家  ›  专栏  ›  技术社区  ›  Cod3Flu3nc3

Firebase实时数据库隐私最佳实践

  •  1
  • Cod3Flu3nc3  · 技术社区  · 6 年前

    我正在使用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
            }
         }
      }
    }
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Alex Mamo    6 年前

    您可以使用 Firebase Realtime Database Rules .

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

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

        2
  •  0
  •   andygeers    6 年前

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