Database 当不需要站点登录时,让数据库(Cloud Firestore)不受保护是否可以接受?

Database 当不需要站点登录时,让数据库(Cloud Firestore)不受保护是否可以接受?,database,security,firebase,google-cloud-firestore,database-security,Database,Security,Firebase,Google Cloud Firestore,Database Security,我正在用Angular构建一个游戏,并且(有史以来第一次)尝试添加一个高分表。我已经建立了一个Firebase帐户,并获得了一个Firestore(Beta版)数据库 我想要一个非常简单的高分系统。用户无需登录或创建帐户,您只需打开、播放,然后,如果您获得高分,请输入您的姓名,并将其记录和显示在表中 因此,我的问题是——在不需要登录且只保存基本名称/分数/时间戳数据的情况下,是否可以将我的安全规则保留如下,或者是否有更好的方法来构建它们 service cloud.firestore { m

我正在用
Angular
构建一个游戏,并且(有史以来第一次)尝试添加一个高分表。我已经建立了一个
Firebase
帐户,并获得了一个
Firestore(Beta版)
数据库

我想要一个非常简单的高分系统。用户无需登录或创建帐户,您只需打开、播放,然后,如果您获得高分,请输入您的姓名,并将其记录和显示在表中

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

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}
事实上,我得到一个警告,我的数据库对任何有参考资料的人开放,但在我的特殊情况下,这真的很糟糕吗?是否存在我不认为是数据库新手的问题

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


干杯

一般来说,这些设置用于
测试目的
。只有当您决定这些信息可以公开时,才允许用户从数据库中读取。如果您有敏感信息(即用户信息),则必须确保数据库的安全,并且只允许您决定的用户读取这些信息。因此,如果您以后决定添加自动验证,则必须确保数据库的安全。这与写作目的是一样的


希望有帮助。

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

任何玩你的游戏的人都会看到你的数据库。使用您拥有的规则集,任何人都可以在数据库中读写任何内容(不仅仅是记分板)。您将允许任何人使用您的数据库运行自己的系统,费用由您的帐户承担

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

  • 仅允许对记分板集合进行读写操作
  • 验证分数是否为有效值(例如整数且在一定范围内
  • 验证名称是否为有效值(帮助防止可能的XSS攻击)
  • 验证除了
    score
    name
    之外,没有其他字段写入文档(因此人们不能隐藏其他有效负载)

这是有道理的。在我的例子中,数据只是分数值和用户输入的任何字符串作为他们的名字。要求登录似乎有些过分,但我不想让它打开,然后开枪打死我自己。因此,如果这不是敏感信息,你可以将其用作公共信息。这正是那种类型那些我知道我没有想到的东西!我怀疑我太天真了,答案会是粗体的-我也有点期待大写字母锁:)你的观点都很有道理,现在你把它们摆出来了,看起来很明显。他们会完成的。谢谢你的建议没问题!通常你只需要一个发声板,它就会变得清晰。