【问题标题】:Does Firebase Firestore have measures to stop malicious requests?Firebase Firestore 是否有阻止恶意请求的措施?
【发布时间】:2020-06-29 09:19:28
【问题描述】:

由于 Firebase Firestore 是按操作(读取、写入、删除)定价的,我最担心的是有人可能会使用有效的端点来读取、写入或删除文档,然后多次执行此操作超出预期的使用范围。

是否有防止恶意请求的措施?就像每分钟发生 10,000 次操作一样,用户是否会遇到某种锁定,或者这些请求是否合法?

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

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

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

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

【问题讨论】:

  • 签出this
  • 这能回答你的问题吗? Firestore billing & USage API
  • 什么是阻止恶意用户...这就是数据库规则。作为开发人员,您可以完全控制用户可以或不可以读/写的内容。例如,如果您是恶意用户并经过身份验证,则规则将阻止您读取/写入我的数据,只允许您访问自己的数据。也许如果您能澄清您的要求并提供一个用例,我们或许可以提供更具体的答案。
  • @AlexMamo 该链接如何回答我的问题?
  • @Jay,想象一下允许用户访问文档的情况,也就是说用户不会恶意并通过以意想不到的方式访问服务器来滥用此权限?这不是request.auth.uid == userId 的问题,而是用户满足这些要求但不必要地访问服务器的问题。

标签: firebase google-cloud-firestore


【解决方案1】:

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

话虽如此。恕我直言,您只有 2 个可行的选择:

选项 1:云函数

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

选项 2:Firestore 规则

(我能发现的)解决恶意用户行为的唯一方法是记录用户的操作。

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

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

【讨论】:

    猜你喜欢
    • 2020-05-10
    • 2020-01-03
    • 2016-11-18
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多