Security Firebase敏感数据的安全更新

Security Firebase敏感数据的安全更新,security,firebase,firebase-realtime-database,firebase-security,Security,Firebase,Firebase Realtime Database,Firebase Security,我正在建立一个网站,在一个平衡系统的工作,用户将支付我,他们在网站上的余额将被更新。他们可以使用此余额在网站上购买物品。我使用firebase将其余额存储在以下表格中: root ----users --------<uid> ------------balance: 10... 当用户在网站上购买东西时,我希望系统能够自动从他们在firebase中的余额中减去一个值,但根据我目前的规则,了解firebase的恶意用户可以编写自己的应用程序来编辑他们的余额 我的应用程序有没有一种方

我正在建立一个网站,在一个平衡系统的工作,用户将支付我,他们在网站上的余额将被更新。他们可以使用此余额在网站上购买物品。我使用firebase将其余额存储在以下表格中:

root
----users
--------<uid>
------------balance: 10...
当用户在网站上购买东西时,我希望系统能够自动从他们在firebase中的余额中减去一个值,但根据我目前的规则,了解firebase的恶意用户可以编写自己的应用程序来编辑他们的余额

我的应用程序有没有一种方法可以在他们存款或购买东西时自动更新他们的余额,这种方法是安全的,任何人都无法做到


注意:我是firebase的新手。

您可能希望在安全环境中编写一些后端代码。您可以编写一个云函数,该函数在用户具有该访问权限的数据库位置写入时触发。然后,当您的函数触发时,它可以访问一个管理引用,该管理引用对您的用户只能读取的其他数据库位置具有写访问权


通过这种方式,您可以有效地实现一种命令队列,这样您的用户所采取的操作就可以使用只有您控制的逻辑在数据库中的任何位置进行更改。

也许我没有正确地遵循命令队列,但我不会有同样的问题吗?恶意用户不能写入该触发器位置,从而触发my cloud函数吗?您可以验证该触发器是否有效,因为只有您控制函数中的代码。您必须以这种方式隔离决定操作有效性的所有逻辑。通常使用哪些方法来验证它是否为有效触发器?我不确定如何验证它。这完全取决于你的应用程序的要求。每个人都会不同。
{
  "rules": {
    "users": {
      "$uid": {
        ".read": "$uid === auth.uid",
        ".write": "$uid === auth.uid"
      }
    }
  }
}