如何限制用户可以在Firebase中获取的服务器端数据的大小?

时间:2013-11-07 09:57:48

标签: firebase firebase-security

我在当地的聚会上讨论了Firebase的基础知识(http://szimek.github.io/presentation-firebase-intro),并从观众那里得到了两个有趣的问题。

想象一下,你有一个类似Twitter的应用程序,有数十亿条推文,每个人都有读取权限。

  1. 有没有办法限制用户可以获取的数据大小(在服务器端)?即使我有tweetsRef.limit(10)电话,用户也可以轻松将其更改为tweetsRef.limit(10e9)并尝试获取所有推文。

  2. 如何防止用户更新现有记录(即使它是由该用户创建的),但允许他们删除现有记录(仅当该记录是由该用户创建的)?

1 个答案:

答案 0 :(得分:1)

如果您担心限制操作,您可以在服务器而不是客户端(如您所建议的那样)获取推文,这样用户就无法操纵限制。

对于第二个问题,这取决于您希望如何处理删除。通常,您实际上并不希望删除该对象,因此您可以在deleted属性上为创建用户提供写访问权限。或者,如果您希望他们实际删除该对象,请检查该用户是否为创建者,并且newData的值为null

以下是来自@ Kato评论的示例安全规则(允许写入/删除,禁止更新):

".write": "!data.exits() || !newData.exists()"