【问题标题】:Firebase secure updating of sensitive dataFirebase 安全更新敏感数据
【发布时间】:2023-03-18 15:42:01
【问题描述】:

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

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

使用这些规则:

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

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

有没有办法让我的应用能够在他们以安全且任何人都无法完成的方式存款或购买东西时自动更新他们的余额?

注意:我是 firebase 新手。

【问题讨论】:

    标签: security firebase firebase-realtime-database firebase-security


    【解决方案1】:

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

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

    【讨论】:

    • 也许我没有正确跟随,但我不会有同样的问题吗?恶意用户不能写入触发位置,进而触发我的云功能吗?
    • 您可以验证该触发器是否有效,因为只有您控制函数中的代码。您必须以这种方式隔离所有决定操作有效性的逻辑。
    • 常用什么方式来验证它是否是一个有效的触发器?我不确定如何验证它。
    • 这完全取决于您的应用程序的要求。每个人都会不同。
    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 2013-09-24
    • 2014-08-03
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 2020-10-27
    • 2012-03-28
    相关资源
    最近更新 更多