【问题标题】:Firebase UID and setting custom Admin Rules and PrivilegesFirebase UID 和设置自定义管理规则和权限
【发布时间】:2021-01-21 00:57:06
【问题描述】:

我当前的 Firebase 项目规则设置如下:

{
  "rules": {
    ".read": false,
    ".write": false
  }
}

但是,将false 值更改为true 并继续使用默认函数而不是此类规则,并不认为这是安全的。因此,我决定将读写规则更改为只有我自己才能访问。在搜索 Stack Overflow 之后,我发现规则如下:

{
  "rules": {
    "events": {
      ".read": true,
      ".write": "auth.uid === 'dJrGShfgfd2'"
    }
  }
}

然而,通过仅指定用户的 UID(在本例中是我),它将自动仅由该用户访问,但是,我的问题是我们如何在 Firebase 上获取我们的 UID?

【问题讨论】:

  • 如果您使用 Firebase 身份验证登录,您只有一个 UID。你这样做吗?如果没有,您能否指出您用于访问 Firebase 数据库的库/SDK?
  • 亲爱的弗兰克,是的。我目前正在通过 Firebase 登录。你可以在这里找到我的代码的样子link
  • 我想知道您使用的是什么库或 SDK,通常最好是指向您从中获取它的链接。请在您的问题中以文本形式提供此信息(不需要文本屏幕截图)。这也让您有机会展示您当前如何登录 Firebase。
  • 我目前使用的是官方 Python SDK,它是从 Firebase 文档中获得的。
  • 更准确地说,我正在寻找这样的东西Image

标签: python firebase-realtime-database


【解决方案1】:

Firebase Python SDK 是一个管理 SDK,这意味着:

  1. 它提供对您的 Firebase 项目的管理访问权限。
  2. 您无法使用 Admin SDK 登录 Firebase,而是提供服务帐号凭据来对其进行初始化。
  3. 它不遵守数据库的安全规则,除非你明确地authenticate with limited privileges。因为您可以在 databaseAuthVariableOverride 中指定您想要的任何 UID,因为不会检查它的存在。

【讨论】:

  • 所以,我最初的理解是,实际上每个 Firebase 用户都会获得一个 Firebase 唯一的 UID,它可以用来邀请 Firebase 上的任何人加入您的项目并授予对读/写规则的自定义权限.话虽如此,但如果我也可以访问那个我也可以找到我的 GUI,我会很容易地将它作为写访问添加到我的规则中,其余部分保持不变。那么,这是一种错误的做法吗?
  • Admin SDK 不会以 Firebase 身份验证用户的身份访问项目,而是以管理/服务帐户的身份访问项目。这就是为什么他们的访问不受安全规则控制的原因。 #3 是一种解决方法,它允许 Admin SDK 模拟 任何 Firebase Auth 用户。
  • 好的,弗兰克。非常感谢您的回答和您的时间,非常感谢。祝您有美好的一天!
猜你喜欢
  • 2019-09-20
  • 2018-11-14
  • 2017-06-08
  • 1970-01-01
  • 2017-02-16
  • 2019-06-03
  • 2020-06-10
  • 2017-01-28
  • 1970-01-01
相关资源
最近更新 更多