Firebase安全规则限制写入当前值的增量(+1)?

时间:2018-04-17 21:14:05

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

我正在构建一个非常简单的基于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当前值?

如果没有,我应该调查另一种方法吗?

1 个答案:

答案 0 :(得分:5)

您需要使用predefined variables。您的验证规则将类似于此(在您要保护的字段的位置):

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