Firebase是否有办法限制对安全规则中所有公共数据的访问?

Firebase是否有办法限制对安全规则中所有公共数据的访问?,firebase,google-cloud-firestore,Firebase,Google Cloud Firestore,更新:根据建议编辑问题标题/正文 Firebase store使所有公开可读的内容都可以通过脚本公开访问,因此没有任何东西可以阻止任何用户只说db.get('collection'),并将所有数据保存为他们的数据 在更传统的数据库设置中,应用程序的前端从后端提取数据,用户至少要经历额外的麻烦,调整用户界面,然后刮去前端以提取越来越多的数据(想想推特加载更多按钮) 我的问题是,是否有可能限制用户在单击时访问整个数据库,同时保持数据公开 旧的: 据我所知,任何能够看到来自Firebase数据存储的数

更新:根据建议编辑问题标题/正文

Firebase store使所有公开可读的内容都可以通过脚本公开访问,因此没有任何东西可以阻止任何用户只说
db.get('collection')
,并将所有数据保存为他们的数据

在更传统的数据库设置中,应用程序的前端从后端提取数据,用户至少要经历额外的麻烦,调整用户界面,然后刮去前端以提取越来越多的数据(想想推特
加载更多
按钮)

我的问题是,是否有可能限制用户在单击时访问整个数据库,同时保持数据公开

旧的:

据我所知,任何能够看到来自Firebase数据存储的数据的用户也可以运行查询来提取所有这些数据。当数据本身具有任何价值时,这是不可取的,然而Firebase是一个非常容易使用的工具,它对其他几乎所有东西都很有用

有没有一种方法或最佳实践可以用来构造数据或访问规则s.t.用户可以看到数据,但不能只运行一个脚本来下载全部数据


谢谢

Kato曾经对实时数据库安全规则中的写入执行过一个过于简单的速率限制:。在云Firestore规则中也可能出现类似的情况。但是这种方法不适用于读取,因为不能在执行读取的同时更新时间戳

但是,您可以在数据库上进行修改。例如,限制他们一次读取50个文档:

allow list: if request.query.limit <= 50;

允许列表:if request.query.limit我认为您误解了安全规则的工作原理。您可以对内容进行配置,以便只有经过身份验证的用户才能读取您希望他们读取的内容,这在用户之间可能不同,对于未经身份验证的用户可能不同。在进一步讨论之前,请阅读安全规则,以更好地了解事物的工作原理。我曾将Firebase用作私人应用程序的数据库,在这里,数据可以由用户共享,而且效果非常好。现在我想知道是否有一种方法可以将中断放在适当的位置,如果用户创建公共数据,那么其他用户可以看到它,但不能通过简单的db.get('collection')脚本下载所有数据。安全规则是否支持限制(例如允许每个用户每次会话获取50条记录)?是否要编辑问题以说明您在此处实际提出的问题?因此,攻击者只需在获取整个集合所需的时间内进行多次限制为50的查询?是的。请随意编写另一个答案,这可能取决于身份验证。对,我也刚刚意识到,也许我所寻找的最简单的解决方案是让用户像往常一样通过前端进行写入,然后从服务器执行读取,在那里我可以锁定查询的数量。这是更多的工作,但这样我仍然可以用用户数据填充Firebase,而不用担心他们下载整个集合。如果您的后端通过HTTP端点公开,这也可能被滥用。任何暴露点都可能是一种负担。如果你想施加读取速率限制,那么云函数可能是一个不错的选择。但在这样做之前,我想先简单地将您所暴露的数据限制到您的用户。正如Doug所说:他们可以访问的任何东西都可能被滥用,无论是通过云功能还是直接访问