当不需要站点登录时,是否可以让数据库 (Cloud Firestore) 不安全?

2023-12-10

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

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

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

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

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

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

Cheers


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

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

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

  • 只允许读取和写入您的记分板集合
  • 验证分数是一个有效值(例如整数并且在一定范围内)
  • 验证名称是否为有效值(有助于防止可能的 XSS 攻击)
  • 验证除以下之外的其他字段score and name被写入文档(因此人们无法隐藏其他有效负载)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当不需要站点登录时,是否可以让数据库 (Cloud Firestore) 不安全? 的相关文章

随机推荐

  • mysqli_begin_transaction()和mysqli_autocommit有什么区别

    Does mysqli begin transaction 实现相同的功能mysqli autocommit mysqli autocommit 永久设置自动提交模式 这意味着如果你将其设置为0 然后提交事务 模式将保持为0 mysqli
  • 如何在android中读取特定联系人的收件箱短信?

    我正在尝试读取来自内容提供商的短信 我有以下代码 Uri uri Uri parse SMS URI INBOX String whereClause address String whereArgs address String proj
  • JavaFX EXCEPTION_ACCESS_VIOLATION

    我对 JavaFX 桌面应用程序有疑问 特别是 3D 渲染功能 每次我尝试构建和启动 JavaFX 应用程序时 JVM 都会崩溃 并且会收到类似于以下错误的错误 A fatal error has been detected by the
  • 找不到要加载的 DSO:libhermes-executor-release.so

    log Time Tag Message 15 56 52 131 SoLoader couldn t find DSO to load libjscexecutor so 15 56 54 275 SoLoader couldn t fi
  • 如何在powershell中向异步作业添加回调函数并获取返回数据

    我一直在互联网上搜索并组合了许多不同的代码片段 但我只是没有成功地为我的异步作业创建回调 我的想法是 我想运行多个作业 并且使用回调方法 我将能够解析不同作业的输出 以更改主脚本中的某些状态和输出 目前我有这个 虽然事件被调用 但我无法获得
  • 找不到 JSP 文件可能是 spring 中的一个错误吗

    我在我的应用程序中遵循了 Spring Boot 的官方文件和包结构 但我仍然收到白标签页面错误 大多数答案和建议都不能解决这个问题 这可能是 Spring Boot 中的一个错误吗 下面是我放置代码的方式以及文件和文件夹的排列结构 应用程
  • 自定义视图,不需要 xml 中的layout_width

    Android SDK有TableLayout容器
  • 仅在使用 iTextSharp 进行生产时出现“文档未打开”错误

    我在 iTextSharp 中收到 文档未打开 错误 但仅限于生产环境 该代码在我的开发机器和暂存中运行良好 我在阶段服务器上的 Temp 文件夹中设置了相同的权限 public static byte ConvertHtmlToPdf s
  • 使用 Java 在多个文本文件中查找并替换一个单词?

    如何使用 Java 在多个文本文件中查找并替换单词 这是我为单个人做的方法String public class ReplaceAll public static void main String args String str We wa
  • Android 导航架构组件 - 获取当前可见片段

    在尝试导航组件之前 我曾经手动执行片段事务并使用片段标签来获取当前片段 val fragment MyFragment supportFragmentManager findFragmentByTag tag MyFragment 现在在我
  • 使用 NHibernate 测试连接参数

    我们有一个程序 用户可以在其中指定他们的数据库连接参数 通常的嫌疑人包括主机 端口 用户名 密码和表名 我们使用 NHibernate 连接到数据库 我们想要做的是能够使用 NHibernate 构建配置 然后在继续其他操作之前测试连接参数
  • Dagger2 和依赖组件中的限定符

    我有一个应用程序组件和一个依赖组件 应用程序组件声明显式依赖项 依赖组件可以注入这些依赖项 但是 当我有一个必须使用 Qualifier 消除歧义的依赖项时 依赖组件无法注入该依赖项 这是应用程序组件 Component modules A
  • java 在子类构造函数中初始化基类字段

    这是一个关于java子类的非常基本的问题 我还是不明白 假设我有一个包含三个字段且仅包含默认构造函数的超类 public class Superclass public int a public int b public int c 我想添
  • get_map 发生了什么?

    我今天开始使用 get map 向 googlemaps 发出大约 230 个地图请求 然后出现错误 丢失了原始错误 我的第一个假设是我使用它超出了 api 的限制 但我尝试使用开放街道地图 api 作为源 我收到的错误消息仍然看起来像 g
  • 使用 Vbscript 将记录批量插入到 Access 中

    我真的对这个感到抓狂 我有一个 vbscript 我正在尝试将几十万条记录插入到 Access 数据库中 显然 如果我一次只执行一个操作 速度会很慢 所以我想我可以通过某种事务批量插入它们 所以我尝试写这个 set rs CreateObj
  • 使用 jOOQ 查找即将到来的生日

    我正在尝试将查找即将到来的生日的现有查询转换为使用 jOOQ 我原来的查询 使用 MySQL 并且有点简化 是 SELECT COUNT FROM people WHERE DATE ADD people dob INTERVAL YEAR
  • 如何在python中编写没有任何分隔符的文本文件?

    我希望在 Python 2 7 中编写一个包含 6 行的简单文本文件 我正在使用这段代码 import csv export open images2 test tfw wb writer csv writer export delimit
  • Django 1 到 Django 2 on_delete 错误

    我相信这个工作流程是为以前的 Django 版本创建的 现在 当我尝试升级它时 添加 on delete 时出现错误 这是我所做的 但它仍然不起作用 我想知道我做错了什么 ORIGINAL class Task AbstractEntity
  • 不要在成员签名中嵌套泛型类型

    我已经获得了一个扩展类 它实现了以下具有违反 CA1006 DoNotNestGenericTypesInMemberSignatures 规则的签名的成员 警告所指的代码包含在下面 我应该如何重构代码来解决 CA1006 警告 请记住 我
  • 当不需要站点登录时,是否可以让数据库 (Cloud Firestore) 不安全?

    我正在构建一个游戏Angular并且 有史以来第一次 我尝试添加一个高分表 我已经设置了一个Firebase帐户并获得了Firestore Beta 数据库正在工作并已连接 我想要一个非常简单的高分系统 用户不需要登录或创建帐户 您只需打开