Firebase Firestore 是否有阻止恶意请求的措施?

Mat*_*ner 6 firebase google-cloud-firestore

由于 Firebase Firestore 是按操作(读取、写入、删除)定价的,我最担心的是有人可能会得到一个有效的端点,读取、写入或删除文档,并且只是在预期之外多次执行此操作其使用范围。

是否有防止恶意请求的措施?例如,如果操作每分钟发生 10,000 次,那么用户是否会遇到某种锁定,或者这些请求是否被认为是合法的?

我知道有数据库安全规则,但它们似乎不够。当然,我可以检查用户是否已通过身份验证等,但是如何阻止恶意用户进行身份验证,找出有效和允许的端点读取、写入或删除文档的位置,然后创建一个脚本来执行此操作重复?

我也了解我可以设置每日支出限额。但这只会限制我花费的金额,而不是可能用完这些限制并导致数据库停止工作的恶意用户。

编辑:我的问题不仅仅与计费有关。它关注恶意用户,他们可能有权读取/写入文档并通过编写脚本来滥用此权限,该脚本会增加具有滥用意图的操作数量。Firebase 是否有任何措施来阻止这种情况?

如果响应是“存在安全规则”,那么请告诉我如何编写这些安全规则,以不允许同一用户每分钟发出超过 100 个请求或类似的内容。

Lis*_*dro 4

首先,我觉得有必要澄清一下我喜欢 Firebase。但是......这可能是它最烦人的方面之一。我觉得这个问题应该以每个用户可配置阈值的形式解决。

照这样说。恕我直言,你只有 2 个可行的选择:

选项一:云功能

这是一个简单的答案,它违背了 Firestore 的主要优点。所以我不会在这里深入挖掘。只需知道创建云函数端点并根据后端逻辑验证或阻止请求将是一个有效的选项。

选项 2:Firestore 规则

(我发现)解决恶意用户行为的唯一方法是保留用户操作的计数器。

  • 首先,您需要设置一个云函数来侦听要保护的集合上的写入操作。
  • 然后为用户创建一个私有文档,计算对集合执行的写入操作。
  • 例如,编写一条规则来阻止在过去一小时内进行大量写入的用户。

这显然会给云功能带来额外的成本,用于保留计数器的额外写入以及用于在安全规则验证中使用计数器获取私有文档的额外读取。