这是我的第一个问题,我希望这能给我的问题带来好运!
我一直在开发一个“免费/付费”应用程序,我的主要规则是这两个客户只允许免费客户从我的firebase实时数据库中查询500个项目。但如果他们想要更多,那就得付钱让我看看所有的东西。但问题是,我只能在前端或客户端实现这一点,这使得我的web应用程序具有可攻击性。
你能帮我一下吗?我怎样才能根据客户状态限制firebase控制台上的查询结果?
如果用户是“认证和付费”然后允许他列出500多个结果。如果他是“匿名或认证,但没有支付”然后限制他500个结果。
在后台!
谢谢你们,

最佳答案

这在很长一段时间内是不可能的。但我认为,由于基于查询的规则,您现在可能能够做到这一点。这允许您的安全规则验证附加的查询是否与您的规则匹配。例如(从文档中):

messages: {
  ".read": "query.orderByKey &&
            query.limitToFirst <= 1000"
}

因此,这些规则只允许查询最多读取1000条消息。
示例查询:
db.ref("messages").on("value", cb)        // Would fail with PermissionDenied

db.ref("messages").limitToFirst(1000)
                  .on("value", cb)        // Would succeed (default order by key)

如果将人的最大项目数存储在custom claim中,则应该能够检查规则中的规则:
messages: {
  ".read": "query.orderByKey &&
            query.limitToFirst <= auth.token.maximumItemCount"
}

您将注意到,在每种情况下,客户机还应该在其查询中指定正确的项目数。安全规则“仅仅”确保允许查询,它们不会自动筛选项目。
我的免责声明“应该”是因为我从来没有测试过这样的东西,所以如果你有问题,一定要发回工作。
有关详细信息,请参见:
Documentation on query-based rules
Blog post introducing Query-based Security Rules
Documentation on custom claims,通过管理sdk设置。

关于database - Firebase实时数据库:在“后端”上检索“有限”数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51623391/

10-11 22:35
查看更多