如何限制从 Firebase 读取数据的速率?

Posted

技术标签:

【中文标题】如何限制从 Firebase 读取数据的速率?【英文标题】:How to limit rate of data reads from Firebase? 【发布时间】:2019-06-27 17:26:46 【问题描述】:

我想限制每个用户从实时数据库读取数据的速率。有很好的方法来限制写入,如here 所述,但我找不到任何关于如何限制数据读取的解决方案。

这可以通过安全规则、云函数来完成,还是可以在 Firebase 帐户中的某个位置进行限制?我检查了文档,但找不到答案。

【问题讨论】:

【参考方案1】:

这适用于实时数据库和 Firestore,但术语不同。 (位置 == 文档)

每次执行读取时,如果不在数据库中的某个位置写入一些值,您将无法执行此操作。您不能在安全规则中写入位置,也不能强制客户端在读取的同时写入。

即使您能够在规则中写入一个位置以在速率限制中使用,您也必须为每次必须限制的读取读取该位置,这违背了速率限制的目的(因为他们可以继续尝试以一种只会导致更多读取的方式读取受限位置)。

【讨论】:

感谢您的信息。有没有办法像谷歌云平台那样通过配额限制每个用户每秒的读取操作? 不,你不能。不过,您可以提交功能请求。 firebase.google.com/support/contact/bugs-features @DougStevenson 所以使用 Firebase(RTDB 或 Firestore)意味着任何人都可以破解您的应用程序以爆炸您的读取并可能让您破产?那一定是错的。 不支持速率限制真是太疯狂了。我刚刚在这里提交了一个功能请求:firebase.google.com/support/troubleshooter/report/features。我建议你也这样做,这样可以解决这个问题。

以上是关于如何限制从 Firebase 读取数据的速率?的主要内容,如果未能解决你的问题,请参考以下文章

如何从firebase读取子数据[重复]

从登录用户创建的 Firebase 读取数据 - Flutter [关闭]

安全规则中的 Firebase 速率限制?

安全规则中的 Firebase 速率限制?

如何使用 java/android 从 Firebase ONCE 读取数据?

如何从 Firebase Realtime DB 读取孩子的值?