我正在使用firebase构建我的第一个应用程序。到目前为止,数据库非常灵活,易于使用,我喜欢它。
我正在构建一个完整的Web应用程序,这意味着所有代码和逻辑都将在浏览器中执行。对于某些更新,我需要进行交易以确保数据保持一致。
但不是每个人都喜欢订单和一致的数据,我担心有些人可能会尝试创建自己的错误客户端来攻击我的应用程序。
tl; dr:当我们只使用网络客户时,有没有办法为某些更新强制执行交易?
答案 0 :(得分:1)
您不能强制执行事务本身,但您可以强制执行它们对数据的影响。例如,如果您希望特定字段一次仅增加1
,则可以编写以下安全规则:
{
"rules": {
"counter": {
".write": "newData.val() == data.val() + 1"
}
}
}
在您的客户端代码中,您可以使用transaction()
函数来计算增量计数器,但是如果有人尝试在您的安全规则强制执行的范围之外写入数据,那么这将失败。