database - 在不需要站点登录时让数据库 (Cloud Firestore) 处于不安全状态是否可以接受?

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

我正在使用 Angular 构建游戏并且(有史以来第一次)我正在尝试添加高分表。我已经设置了一个 Firebase 帐户,并让一个 Firestore(测试版) 数据库正常工作并连接。

我想要一个非常简单的高分系统。用户不需要登录或创建帐户,您只需出现、玩游戏,然后,如果您获得高分,输入您的名字,它就会被记录并显示在表格中。

所以我的问题是 - 在不需要登录且仅保存基本姓名/分数/时间戳 数据的情况下,是否可以只保留我的安全规则如下,或者是否有构建它们的更好方法?

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}

事实上,我收到一条警告,我的数据库对任何有引用资料的人开放,但这在我的特定情况下真的有那么糟糕吗?是否存在我没​​有将其视为数据库新手的问题?

任何建议都很好,因为这对我来说是新的(且复杂的)领域。

干杯

最佳答案

我希望我可以在这里使用红色闪烁的下划线文本,但是您绝对不应该让您的数据库保留此规则集。

任何玩你游戏的人都会看到你的数据库。使用您拥有的规则集,任何人都可以在数据库中读取和写入任何内容(而不仅仅是您的计分板)。您将允许任何人使用您的数据库运行他们自己的系统,费用将从您的帐户中扣除。

至少,根据您提供的描述,您应该:

  • 只允许读写你的记分板集合
  • 验证分数是否为有效值(例如整数且在一定范围内
  • 验证名称是否为有效值(帮助防止可能的 XSS 攻击)
  • 验证除了 scorename 之外没有额外的字段被写入文档(这样人们就无法隐藏其他有效负载)。

关于database - 在不需要站点登录时让数据库 (Cloud Firestore) 处于不安全状态是否可以接受?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46811142/

相关文章:

web-services - Web 服务的安全性(REST 和 SOAP)

java - 通过URL透明登录

android - 是否可以通过在 "app_remove"事件上使用 Google Analytics for Firebase 触发器自动向 Android 应用程序发送推送通知

database - 如何选择数据库管理系统?

sql - 如何在 informix 中创建触发器?

database - SQLite 数据库分区

mysql - 如何获得具有特定关系的行的平均值

java - 为什么RC4无法处理大量加密数据?

firebase - FireStore collection.addSnapshotListener 是否由嵌套文档的更改触发?

android - Firebase 意外需要更新版本的 Google Play 服务