【问题标题】:How do I configure Firebase-Security rules to limit 'what & when' users can write to Firebase data?如何配置 Firebase-Security 规则以限制用户可以写入 Firebase 数据的“内容和时间”?
【发布时间】:2021-02-15 09:00:37
【问题描述】:

我非常了解如何使用firebase-security 限制哪些用户对firebase-realtime-database 中的各个节点拥有“.read/.write”权限。 我很难理解如何限制什么用户可以写入节点以及何时用户可以写入节点。

我正在开发一款向其用户提供奖励的应用,并且我想跟踪用户可以兑换奖励的积分余额。当用户在应用程序上完成一项任务时,它将增加用户的积分余额。从客户端增加此积分余额将需要firebase-security 中的“.write”权限。

我知道客户端代码不能保护 Firebase 数据不被操纵。有人可以在我的应用程序之外操纵他/她自己的积分余额值吗?如果是这样,我将如何防止某人将他/她的积分余额增加任意数量的积分? 我认为唯一的方法是拒绝该用户对积分余额的“.write”权限,并使用firebase-cloud-functions 在服务器端更新积分余额,而不是从客户端代码更新积分余额。大家觉得呢?

【问题讨论】:

    标签: firebase-realtime-database google-cloud-functions firebase-security


    【解决方案1】:

    有人可以在我的应用程序之外操纵他/她自己的积分余额值吗?

    是的,任何有互联网连接的人都可以访问数据库。访问不限于应用程序,因为有一个REST API 供公众使用。

    如何防止某人将他/她的积分余额增加任意数量的积分?

    您可以编写安全规则来限制最终用户直接写入数据库的方式。如果直接写访问不够安全(假设客户端可以简单地伪造数据),您将不得不实现一些后端代码来安全地执行此操作。 Cloud Functions 无疑是其中的一种选择。

    您似乎已经了解这里的安全含义。对于大多数应用来说,这是相当标准的东西。

    【讨论】:

    • 谢谢你,Doug,伪造的数据确实是我得到的。我知道这个概念并不特定于 Firebase,但这对我还是有帮助的。
    猜你喜欢
    • 1970-01-01
    • 2021-05-18
    • 2020-08-19
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2019-10-11
    相关资源
    最近更新 更多