【问题标题】:Firestore security rules for digital transactions between users用户之间数字交易的 Firestore 安全规则
【发布时间】:2020-03-09 14:10:15
【问题描述】:

我们的应用允许经过身份验证的用户在应用中相互发送和接收数字硬币。每个用户都有一个coins 字段,用于存储用户当前的硬币余额。为了转移硬币,我们在发送方使用 Firestore 交易从发送方减去硬币的价值,然后将该值添加到接收方的余额中。因此,当发送者登录时,他们必须写入接收者的文档。这种方法是不安全的,因为我们只检查发件人是否登录。这使得任何经过身份验证的用户都可以对另一个用户的文档进行写访问。 是否有更好/更安全的方法来实现用户之间的此类事务?在这种情况下是否可以仅使用 Firestore 安全规则来处理问题?

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    在这种情况下,您不希望向用户授予对其他用户文档甚至他们自己的“钱包”的写入权限。在客户端执行此类事务(例如使用 Firestore iOS/Android/Web SDK)可能会导致安全问题。当然,没有多少用户会意识到这一点,但是精通技术的用户发现只要他们登录就可以对其他用户的 Firestore 文档具有写入权限,就会开始从其他用户的钱包中扣款和取款。

    您可能需要设置服务器或脚本,以使用 Firebase Admin API 来运行您正在谈论的事务,以便根据用户的观点在黑匣子中完成。

    服务器启动并运行后,客户端应用程序将需要调用服务器,最好使用身份验证令牌(例如 Firebase 身份验证用户的令牌),并请求运行事务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-15
      • 2018-10-19
      • 2019-07-05
      • 2018-08-17
      • 1970-01-01
      • 2020-02-13
      • 2020-06-19
      相关资源
      最近更新 更多