【问题标题】:Firestore Security for non-authenticated access用于非身份验证访问的 Firestore 安全性
【发布时间】:2021-01-30 14:46:56
【问题描述】:

我正在构建一个小型学习项目,我想在其中使用 Firestore 来存储将显示在我的网站上的内容。我希望任何用户都能够在无需登录的情况下访问此信息。(我只是在相关集合上使用一个简单的:allow read: if true 规则。)这会触发 Firebase 的“不安全规则”警告。所以,我的问题是,这种设置是否会带来安全风险?如果是这样,我该怎么办....不同的规则设置,或者我应该看一个完全不同的数据库解决方案?

一些附加信息:

基本上,我的项目有点像博客,我想将数据存储在数据库中,然后任何用户无需登录即可查看(但不能编辑)该数据库。

我存储的数据量很小。我使用 Firestore 是因为我想创建一个系统,管理员可以在其中进入并编辑要显示到站点的内容,而无需重新部署整个内容。

编辑,这是我的 Firestore 规则:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      
      allow write: if request.auth.uid=='unique id'
      allow read: if false;
    }
    match /quizPreview/{preview} {
        allow read: if true;
    }
    match /review/{review} {
        allow read: if true;
    }
    
    match /review/{review}/quizData/{quiz} {
        allow read: if true;
    }
    
  }
}

【问题讨论】:

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


    【解决方案1】:

    firebaser 在这里

    很多 Firebase/Firestore 数据库无法保护其数据。然后随着时间的推移,数据量会增长,并且通常在某些时候包含个人身份信息 (PII)。但是到那时,许多开发人员不再考虑(保护)他们的数据,从而使他们的用户面临风险。虽然您可能认为这不会发生在您身上,但大多数其他数据库的开发人员也是如此。

    我的建议始终如一:您的安全规则应该只允许您的代码绝对需要的访问权限

    因此,如果您在代码需要读取的数据库中有一个集合 blogs,那么第一步就是只允许对 blogs 的读取权限,而不是对整个数据库的读取权限。

    下一步是考虑代码是否真的会读取所有博客文章文档,或者只是其中的一部分。如果它只读取文档的子集,请考虑您是否也可以在安全规则中捕获该逻辑。

    然后对每个文档中的数据做同样的事情:应用程序是否显示每个字段?如果没有,它真的应该可以访问所有这些领域吗?考虑是否可以将某些字段移动到另一个集合,应用程序无法(轻松)读取它们。

    即使只是第一步也将阻止来自 Firebase 的警报发出,但更重要的是:这些步骤中的每一个步骤都会使您的数据更加安全,免受入侵者的侵害。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 2012-11-22
    • 2021-07-23
    相关资源
    最近更新 更多