【问题标题】:How to secure account balance in firebase?如何确保firebase中的帐户余额?
【发布时间】:2018-12-19 05:47:57
【问题描述】:

我在这里的第一个问题。我想在我的 ionic 应用程序中使用 Stripe 作为支付网关。并在向用户收费后更新 firebase 中的余额。

但是,我不确定我应该如何编写规则以确保余额不被用户重写。规则应该怎么写?

我的用户以这样的方式存储

{
    users 
    {
        'nciwhjd7832hjkscdsd' {
            userName: 'Tom'
            balance: 20
        }
    }
}

【问题讨论】:

  • 谁/什么会写余额?用户应该能够编辑其他字段吗?您正在使用什么 API(用于用户和更新余额)?你有没有尝试过?
  • 我根本不允许这种情况发生在客户端。只需锁定规则,使balance 为只读并使用Stripe webhooks 触发Firebase Function,这将更新服务器端的余额
  • @AndréKool 仍在试图弄清楚我应该做什么,没有为此编写代码。这个过程就像用户A付钱给他的账户充值,然后用户A可以把他账户里的余额给用户B。
  • @CodingIntrigue 好建议!昨天想尝试一下,但意识到余额不是仅通过条带更新的。由于这个过程就像用户A付钱给他的账户充值,那么用户A可以把他账户里的余额给用户B。用户之间的金额通常很小。因此,我不能对每个用户间付款都使用条带。我认为,我必须允许客户端更新余额。

标签: firebase ionic-framework firebase-realtime-database stripe-payments firebase-security


【解决方案1】:

您应该将 firebase [rules][1] 与将数据写入 [transactions][2] 相结合

"users": {
  ".read": "auth != null",
  "$uid": {
      ".validate": "newData.isNumber() && newData.val() >= 0",
      ".write": "auth != null && auth.uid == $uid"
    }
}

【讨论】:

    猜你喜欢
    • 2014-11-29
    • 1970-01-01
    • 2022-11-15
    • 2020-11-07
    • 2012-10-12
    • 1970-01-01
    • 2022-08-03
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多