我很清楚如何使用firebase-realtime-database中的firebase-security限制哪些用户拥有‘..read/..write’权限。我很难理解如何限制,用户可以向节点写入什么,以及当用户可以写入节点时。
我正在开发一个应用程序,为它的用户提供奖励,我想跟踪一个积分平衡,用户可以交换奖励。当用户完成应用程序上的任务时,它将增加用户的积分平衡。从客户端增加这一点平衡需要firebase-security中的“firebase-security”特权。
我知道客户端代码并不能保护Firebase数据不被操纵。有人有可能在我的应用程序之外操纵他/她自己的点平衡值吗?如果是这样的话,我怎样才能阻止一个人把他/她的积分平衡增加多少呢?我认为唯一的方法是拒绝这个用户的“.write”特权来实现点平衡,并使用firebase-cloud-functions来更新点平衡服务器端,而不是从客户端代码中更新点平衡。你们觉得怎么样?
发布于 2020-11-02 17:11:22
有人有可能在我的应用程序之外操纵他/她自己的点平衡值吗?
是的,任何有互联网连接的人都可以访问数据库。访问不限于应用程序,因为有一个可供公共使用的REST API。
我怎样才能阻止一个人将他/她的积分平衡增加多少点呢?
您可以编写限制最终用户如何直接写入数据库的安全规则。如果直接写访问不够安全(考虑到客户端可以简单地伪造数据),那么您必须实现一些后端代码才能安全地执行此操作。云功能当然是其中一种选择。
看来你已经明白了这里的安全问题。对于大多数应用程序来说,这都是相当标准的东西。
https://stackoverflow.com/questions/64650045
复制相似问题