【问题标题】:Firebase security rule that limits writes to an increment (+1) of current value?Firebase安全规则将写入限制为当前值的增量(+1)?
【发布时间】:2018-09-27 23:31:42
【问题描述】:

我正在构建一个非常简单的基于 JavaScript 的 Firebase 应用,每当加载我的网页时,它会将键的值加 1。我不想要任何身份验证摩擦,所以想要使用一个开放的数据库,或者一个仅限于匿名身份验证的数据库。所以,举例来说:

$(document).ready(function() {
  // after config and initialize...
  var fb = firebase.database();
  var fbCount = fb.ref("count");

  fbCount.transaction(function(current) {
    return current + 1;
  });
});

在任何一种情况下,据我了解,没有什么可以阻止任何可以访问该页面的人复制我的代码(包括我的初始化配置)并在他们自己的服务器上使用它——通过调整——不仅增加值(上面的fbCount),但是以他们喜欢的任何其他方式更改代码(例如,让他们将值增加 100、1000,或将其完全更改为其他值)。

我的进一步理解是,处理这种潜力的最佳方法是通过安全规则。所以我想弄清楚是否有办法通过安全规则将任何写入限制为当前值的增量为 1?

如果没有,我应该研究另一种方法吗?

【问题讨论】:

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


    【解决方案1】:

    你会想要使用predefined variables。您的验证规则将如下所示(在您要保护的字段的位置):

    ".validate": "newData.val() == data.val() + 1"
    

    【讨论】:

    • 由于正在进行大量异步操作,是否有可能在此安全规则运行之前已更改数据?我的意思是假设数据是 5。2 个用户希望通过使用事务同时增加它。规则检查增量数量和不允许写操作的可能性时会不会有任何不一致?
    • 不,所有对实时数据库的写入实际上都是在服务器上串行处理的,无论客户端是否异步启动它们。
    猜你喜欢
    • 2016-03-23
    • 2016-07-09
    • 2021-07-31
    • 1970-01-01
    • 2020-09-26
    • 2017-07-07
    • 2015-11-22
    相关资源
    最近更新 更多