【问题标题】:Enforce transactions in firebase在 Firebase 中强制执行交易
【发布时间】:2014-02-04 09:14:29
【问题描述】:

我目前正在使用 firebase 构建我的第一个应用程序。到目前为止一切顺利,数据库灵活易用,我喜欢它。

我正在构建一个完整的网络应用程序,这意味着所有代码和逻辑都将在浏览器中执行。对于某些更新,我需要事务以确保数据保持一致。

但并不是每个人都喜欢有序和一致的数据,我担心有些人可能会尝试创建自己的错误客户端来攻击我的应用程序。

tl;dr:当我们只使用网络客户端时,有没有办法强制执行某些更新的事务?

【问题讨论】:

  • 如何设置数据并不重要,重要的是设置了什么数据。换句话说,恶意攻击将损害您的数据完整性,而不是设置正确和有效数据的异常方法。因此,您应该专注于应用安全规则来强制执行完整性,而不是实现细节。

标签: transactions firebase


【解决方案1】:

您无法强制执行交易本身,但您可以强制执行它们对数据的影响。例如,如果您希望特定字段一次只增加1,您可以编写如下安全规则:

{
  "rules": {
    "counter": {
      ".write": "newData.val() == data.val() + 1"
    }
  }
}

在您的客户端代码中,您可以使用transaction() 函数来适当地递增计数器,但如果有人试图在您的安全规则强制执行的范围之外写入数据,则会失败。

【讨论】:

  • 让我想起了我非常喜欢的那种优秀的厚数据库开发!我可能需要一些时间来再次转换心态,但我会喜欢的!谢谢你这么好的回复!
猜你喜欢
  • 2018-05-29
  • 2013-03-23
  • 1970-01-01
  • 1970-01-01
  • 2016-12-01
  • 2021-09-11
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多