Can';时间戳';Firebase的值在客户端代码中容易被篡改?

Can';时间戳';Firebase的值在客户端代码中容易被篡改?,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我想知道,如果服务器字段(从服务器放入)的指令如下: result.put("timestamp", ServerValue.TIMESTAMP); 可以轻易被篡改,我的意思是,我只是不认为恶意用户可以捕获TPC/IP流量,并将ServerValue.TIMESTAMP更改为他想要的任何值 我猜Firebase有一些内置的机制,如果数据包以某种方式被更改,它会拒绝数据包,我猜像证书之类的东西,或者类似于这种情况的东西 但我想确定,我想知道是否有某种机制可以避免这种情况,这使得

我想知道,如果服务器字段(从服务器放入)的指令如下:

         result.put("timestamp", ServerValue.TIMESTAMP);
可以轻易被篡改,我的意思是,我只是不认为恶意用户可以捕获TPC/IP流量,并将ServerValue.TIMESTAMP更改为他想要的任何值

我猜Firebase有一些内置的机制,如果数据包以某种方式被更改,它会拒绝数据包,我猜像证书之类的东西,或者类似于这种情况的东西


但我想确定,我想知道是否有某种机制可以避免这种情况,这使得伪造上述值比动态捕获tcp/ip流量并更改它更难。

服务器值。
ServerValue.TIMESTAMP
是作为特殊映射发送到Firebase服务器的哨兵值。服务器识别此哨兵,并将其扩展到正确的日期/时间。由于这种扩展发生在谷歌的服务器上,恶意用户无法更改它

恶意用户可能会拦截请求并设置硬编码的日期/时间,而不是sentinel值。如果要防止这种情况发生,可以通过检查属性/字段是否设置为当前服务器时间,在数据库的安全规则中执行此操作

如何做到这一点取决于您使用的数据库

对于实时数据库:

".validate": "data.val() === now"
对于云Firestore:

allow create: if request.resource.data.timestamp == request.time;