Firebase 安全更新敏感数据

Firebase secure updating of sensitive data

我正在构建一个在余额系统上运行的网站,用户将在该系统上付款并更新他们在网站上的余额。他们可以使用此余额在网站上购买商品。我正在使用 firebase 以这种形式存储他们的余额:

root
----users
--------<uid>
------------balance: 10...

使用这些规则:

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}

当用户在网站上购买东西时,我希望系统能够自动从他们在 firebase 中的余额中减去一个值,但根据我目前的规则,了解 firebase 的恶意用户将能够编写他们的自己的应用程序来编辑他们的余额。

有没有一种方法可以让我的应用程序在他们以安全且任何人都无法完成的方式存入或购买东西时自动更新他们的余额?

注意:我是 firebase 新手。

您可能想研究 Cloud Functions for Firebase 以在安全环境中编写一些后端代码。您可以编写一个 Cloud Function,在用户具有该访问权限的数据库位置写入时触发。然后,当您的函数触发时,它可以访问一个 "admin" 引用,该引用可以写入您的用户只能读取的其他数据库位置。

通过这种方式,您可以有效地实现某种 "command queue",以便您的用户执行的操作可以在数据库中的任何位置进行更改,使用只有您可以控制的逻辑。