当前位置: 首页 > 知识库问答 >
问题:

如何在Firebase Firestore中限制集合中的文档

龙星渊
2023-03-14

我的用户可以在子集合中创建文档(比如任务),并使用一系列安全规则检查身份验证、权限和数据有效性。他们甚至可以选择多个任务并将其复制到同一集合中。现在,一个普通用户可能一次最多创建100个任务,但如果有人恶意获取我的数据库凭据,进行身份验证,并尝试以编程方式创建大量有效文档,该怎么办?这将使Firestore的扩展不会出现问题,也会给我的Firebase账单带来意想不到的惊喜。这是我首先关心的问题,但我也在考虑出于其他原因限制集合大小的可能性,这同时也是所描述问题的解决方案。

我阅读了Firestore文档中描述的一个集合中的文档计数技术,但我没有找到解决方案。在我的情况下,在云功能中使用事务更新文档字段上的计数器将效率低下。分布式计数器稍微增加了我的数据模型的复杂性,而且我不知道如何在每个任务创建的安全规则中正确读取这些计数器,即使这是一个有效的解决方案。

有人有什么建议吗?

共有1个答案

米裕
2023-03-14

我相信,一个人获得对你数据库的读/写访问权的方法是要么入侵谷歌服务器,在这种情况下,没有人是安全的,你做什么并不重要,要么猜测你的收藏和文档的确切名称。

  1. 对于后一种情况,我在我的项目中所做的是,对于每个集合和文档,我都使用了我想要的名称加上随机的10个字符字符串(包括所有类型的字符和数字。例如,Users-x5NfaS1jCb),这是一种在每一步都作为独立、独立的密码。这至少使人们很难猜测藏品和文件的名称

如果“获取我的数据库凭据”,你的意思是找到你的Firebase帐户的用户名和密码,那么你再次做什么并不重要。如果他们知道自己在做什么,他们可以利用这么多的优势,这个特定的问题将是你的问题中最小的。

总之,如果你问我,你的数据库是安全的,除非有人猜到你的收藏和文档名称,或者有人访问你的Firebase帐户。

这些是我现在唯一能想到的事情。稍后我将尝试更新我的答案。

 类似资料:
  • 我在云firestore中有用户和配置文件集合,如下图所示。我将用户详细信息存储在用户集合中,文档ID作为用户的firebase UID,这样只有特定的用户可以更新和读取自己的数据,而不是其他用户。我有用户集合的安全规则,类似于在这个答案中禁用Firebase Cloud Firestore中的查询集合。现在我的配置文件集合应该是一个公共文档集合,这样可以引用这些ID来读取配置文件的详细信息,但是

  • 我是第一次使用MongoDB,我对NoSQL数据库有一些经验。 我想在文档中创建一个集合。我无法使用MongoDB复制这种行为,因为我在文档中找不到代码。请问这种行为可能吗? 提前谢谢。

  • 我在Firebase Firestore中收集了一些文档,比如:

  • 我所处的情况是,当用户付款时,存储在Firestore集合(CartProducts)中的购物车产品应移动到名为SuccessFullOrders的新集合。 因此,我的基本问题是如何在Flutter中将所有文档从一个集合移动到Firestore的另一个集合 我不知道如何在flutter中编写代码。谢谢你的回答 这是我的代码

  • 问题内容: 没有关于如何在Firestore中的文档中添加子集合,如何使用Web应用程序添加子集合的文档? 甚至像这样尝试过,但没有奏效。如何使用代码在应用程序中添加子集合?有什么办法可以做到,还是使用Firebase实时数据库会更好?如果是这样,请让我知道如何在Firebase中执行此操作,我也想这样添加, 但我却收到这样的错误,错误说明了这一点 问题答案: 如果更改为,您的代码应该可以工作。然

  • 问题内容: 对于我的应用程序而言,至关重要的是能够从Firebase的集合中随机选择多个文档。 由于Firebase(我知道)没有内置本机函数来实现执行此操作的查询,因此我的第一个想法是使用查询游标选择随机的起始索引和终止索引,前提是我拥有​​其中的文档数集合。 这种方法行之有效,但只能以有限的方式进行,因为每次每次文档都会与其相邻文档一起依次送达。但是,如果我能够通过其父集合中的索引选择一个文档