我正在使用 Angular
构建游戏并且(有史以来第一次)我正在尝试添加高分表。我已经设置了一个 Firebase
帐户,并让一个 Firestore(测试版)
数据库正常工作并连接。
我想要一个非常简单的高分系统。用户不需要登录或创建帐户,您只需出现、玩游戏,然后,如果您获得高分,输入您的名字,它就会被记录并显示在表格中。
所以我的问题是 - 在不需要登录且仅保存基本姓名/分数/时间戳 数据的情况下,是否可以只保留我的安全规则如下,或者是否有构建它们的更好方法?
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
事实上,我收到一条警告,我的数据库对任何有引用资料的人开放,但这在我的特定情况下真的有那么糟糕吗?是否存在我没有将其视为数据库新手的问题?
任何建议都很好,因为这对我来说是新的(且复杂的)领域。
干杯
最佳答案
我希望我可以在这里使用红色闪烁的下划线文本,但是您绝对不应该让您的数据库保留此规则集。
任何玩你游戏的人都会看到你的数据库。使用您拥有的规则集,任何人都可以在数据库中读取和写入任何内容(而不仅仅是您的计分板)。您将允许任何人使用您的数据库运行他们自己的系统,费用将从您的帐户中扣除。
至少,根据您提供的描述,您应该:
- 只允许读写你的记分板集合
- 验证分数是否为有效值(例如整数且在一定范围内
- 验证名称是否为有效值(帮助防止可能的 XSS 攻击)
- 验证除了
score
和name
之外没有额外的字段被写入文档(这样人们就无法隐藏其他有效负载)。
关于database - 在不需要站点登录时让数据库 (Cloud Firestore) 处于不安全状态是否可以接受?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46811142/