将写入限制为当前值的增量(&x2B;1)的Firebase安全规则?

将写入限制为当前值的增量(&x2B;1)的Firebase安全规则?,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我正在构建一个非常简单的基于JavaScript的Firebase应用程序,每当我的网页被加载时,它会将一个键的值增加1。我不希望出现任何身份验证冲突,所以我希望使用开放数据库,或者仅限于匿名身份验证的数据库。因此,举例来说: $(document).ready(function() { // after config and initialize... var fb = firebase.database(); var fbCount = fb.ref("count"); f

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


如果没有,是否还有其他方法需要研究?

您需要使用。您的验证规则将类似于以下内容(在您要保护的字段位置):


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


在运行此安全规则之前,是否有可能已经更改了数据,因为有很多异步操作正在进行?我的意思是,假设数据为5。2个用户希望通过使用事务同时增加数据。当规则检查增量金额时,是否会有不一致的情况,以及是否有不一致的情况允许写入操作?不,所有对实时数据库的写入实际上都是在服务器上串行处理的,无论客户端是否异步启动它们。是否有可能在运行此安全规则之前更改数据,因为有很多异步操作正在进行?我的意思是y数据为5。2用户希望通过使用事务同时对其进行增量。当规则检查增量时是否存在任何不一致性,以及是否可能不允许写入操作?否,所有对实时数据库的写入实际上都是在服务器上串行处理的,而不管客户端是否将其踢出f异步。
".validate": "newData.val() == data.val() + 1"