用于未经身份验证的访问的 Firestore Security

Firestore Security for non-authenticated access

我正在构建一个小型学习项目,我想在其中使用 Firestore 来存储将显示在我网站上的内容。我希望任何用户都能够在无需登录的情况下访问此信息。(我只是在相关集合上使用一个简单的:allow read: if true 规则。)这会触发 'insecure rules' 警告来自 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;
    }
    
  }
}

firebaser 在这里

很多 的Firebase/Firestore 数据库未能保护其数据。然后随着时间的推移,数据量会增加,并且在某些时候它通常包括个人身份信息 (PII)。但到那时,许多开发人员不再考虑(保护)他们的数据,让他们的用户处于危险之中。虽然您可能认为这不会发生在您身上,但其他数据库的大多数开发人员也是如此。

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

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

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

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

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