首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >消防安全与规则

消防安全与规则
EN

Stack Overflow用户
提问于 2016-03-29 11:54:53
回答 1查看 565关注 0票数 1

很快,我就想了解一下Firebase安全协议,我已经建立了一个名为UsersDB的数据库,它将存储基于auth.uid的详细信息。详细信息是全名,电子邮件,提供商,帐户创建日期,最后登录日期。

我已经设置了如下规则:

代码语言:javascript
复制
{
  "rules": {
    ".read": "auth != null", // only authed users can read/write
    ".write": "auth != null",
    "UsersDB": {
      "$uid": {
        ".read": "auth.uid == $uid", // users can read/write their own data
        ".write": "auth.uid == $uid"
      }
    }
  }

我的理解是,记录只能由user_id与auth.uid匹配的人读写。

我的问题是,我是否正确地做到了这一点,如果不是,我应该如何做到这一点?我只希望创建帐户的人能够读和写到这个,而没有其他的uid来访问信息。

最后,作为firebase帐户的管理员。我会考虑继续创建一个管理控制台类型的软件,这将允许我访问所有存储的数据。我将如何更改或更新规则,以允许管理员登录访问上述数据。我会更改对任何人的读访问权限(尽管在我看来,这会在规则中留下一个漏洞),还是有一种方法来声明一条规则,允许我(管理员)对所有数据进行完全读取访问?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-29 13:18:26

您正在忽略Firebase文档中指定权限级联的一个非常重要的部分

安全和消防规则自上而下地工作。 子规则只能授予父节点已经声明的附加权限。它们不能取消读或写特权。

由于顶级读和写规则已经允许任何经过身份验证的用户读取/写入所有帐户,所以不能在树中较低的位置取消该权限。

幸运的是,在您的场景中不需要授予这些更高级别的权限。

代码语言:javascript
复制
{
  "rules": {
    "UsersDB": {
      "$uid": {
        ".read": "auth.uid == $uid",
        ".write": "auth.uid == $uid"
      }
    }
  }
}

这样,每个用户都只能读写自己的数据。

请记住,Firebase 规则不是过滤器。有了上面的结构,任何用户都不能在/UsersDB上查询,因为没有人在那里读取权限。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36283553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档