【问题标题】:How safely show publicly UID of firestore sub-collection如何安全地公开显示 Firestore 子集合的 UID
【发布时间】:2021-11-15 21:49:21
【问题描述】:

我有以下 Firestore 数据库结构(图 1)。我希望我的网络应用程序的(未经身份验证的)用户能够看到每个管道工的公开资料,其中包含他们从赢得的工作中获得的评论(图 2)。我的问题是我如何安全地公开每个进行过这些评论的用户的 UID。希望我的问题有意义。

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

the ui i want to archive

【问题讨论】:

  • 安全曝光是什么意思?只要您的安全规则不允许任何人写入或读取未经授权的内容,UID 就没有任何风险。结帐this answer
  • 您好 Dharmaraj,感谢您分享链接!由于我的评论子集合位于私有的用户集合中,我无法想出解决方案来安全地公开显示子集合。以下评论子集合包含与 Jobs 集合关联的“Job ID”,它有多个 ID。希望这是有道理的:D
  • 在这种情况下,您想从审查文档中隐藏什么?它是私有的,但您仍想向所有用户展示它有点令人困惑。你是说用户只能读不能写?
  • 不想隐藏任何东西,我只是想防止可能的数据泄漏或其他人的数据操作。 Firestore 是否允许公开显示位于私人收藏中的子收藏?再次感谢您:D
  • 在这种情况下,您应该说明谁可以访问这些集合并提供更多详细信息,以便我们知道哪些规则适合您的用例。

标签: javascript google-cloud-firestore firebase-security


【解决方案1】:

如果您想允许用户读/写他们自己的用户文档并允许任何人阅读他们的评论,请尝试以下规则:

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, update: if request.auth.uid == userId;
      
      match /reviews/{reviewId} {
        allow read: if true;
        allow write: if request.auth.uid == resource.data.userId
      }
    }
  }
}

这里只有评论和编写(更新/删除)它的海报,任何未经身份验证的用户都可以阅读它们。但是他们无法访问用户文档。

您可以在documentation 中阅读有关安全规则的更多信息。

【讨论】:

  • Dharmaraj 我非常感谢您的快速响应和合作!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-01
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
  • 2021-07-01
相关资源
最近更新 更多