微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Firestore数据库的安全性-SwiftUI

如何解决Firestore数据库的安全性-SwiftUI

我为自己创建的游戏有一个非常简单的Firestore数据库我有一个用户集合,其中包含文档,每个文档都指定了用户用户名,电子邮件地址和高分。

我希望每个人都能读取数据库中每个人的高分和用户名,因为我有一个列表,列出了每个用户的高分和用户名

但是,我只希望个人能够在登录后写数据库(即提交自己的高分)。

因此,我有以下安全规则:

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

我的问题是,这安全吗?我猜这意味着从技术上来说,具有恶意意图的用户可以阅读每位用户的电子邮件。是否有办法通过某种方式指定只有​​每个人都能够读取每个用户文档的highscore和username属性,来防止这种情况发生?

此外,此设置确实可以防止恶意用户写入数据库,请更正(在此处编辑:我想这不是-我现在通过阅读此处的文档https://firebase.google.com/docs/firestore/security/rules-structure来对此进行研究)>

我对Firebase并不陌生,但是对它的安全规则却并不陌生,因为我以前没有将应用程序推入生产环境,并且想确保我不会留下任何漏洞,因此此处提供了任何反馈/指导表示赞赏。

解决方法

正如我在your previous question上所解释的那样,任何人都可以从您的应用中获取配置数据,并使用该数据调用Firebase API。

这安全吗?

只有您可以确定您的规则对于您的用例是否正确。

这些规则允许任何人阅读/Users集合中的所有文档。此外,它们允许任何经过身份验证的用户读取和写入所有文档。如果这是您要支持的用例,那么这些是适合您的正确规则。

因此,如果您在Firebase身份验证中启用了匿名身份验证提供程序,则任何人都可以获取您的配置数据,编写一个最小的网页并调用firebase.auth().signInAnonymously(),然后使用firebase.firestore().collection("Users").get()读取所有用户数据。 / p>

以这种问答方式很难保护数据库的安全。相反,我建议您:

  1. 阅读security rules上的Firebase指南。
  2. 道格的视频introduction to security rules
  3. 观看电视剧Getting to know Cloud Firestore,并特别注意security rules上的剧集。
  4. 视频Unit testing security rules with the Firebase Emulator Suite及其跟进Intermediate topics in Firebase Security Rules
  5. 连续剧集How to build a secure app in Firebase
  6. 文章Patterns for security with Firebase: combine rules with Cloud Functions for more flexibility

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。