如何在客户端中验证远程数据

How to validate remote data in a client?

本文关键字:程数据 数据 验证 客户端      更新时间:2023-09-26

我正在设计一个客户端-服务器系统,我需要了解如何在客户端发送操作和请求时检查它们的数据是否正确。在这种特殊情况下,我有一个浏览器和一个javascript客户端,它从longpolling获取数据并更新一系列对象,这些对象绑定到html元素,几乎是MVVM。

步骤如下所示:

  • 开始轮询
  • 获取完整数据
  • 将 JSON 转换为 JavaScript 对象
  • 更新与数据关联的每个 HTML 对象

用户可以随时触发事件,并使用最新更新的本地模型。

  • 用户触发事件
  • 发送事件 + 完整数据(所有对象转换为 JSON)

问题是:它非常粗糙,可能很慢,对客户端和服务器来说很重。

我的目标是将数据传输减少到最低限度,并避免客户端损坏/攻击。我应该怎么做?

我的目标是将数据传输减少到最低限度

仅发送已更改的数据,但 AJAX 中最高的成本是请求,因此除非您发送大量数据,否则可能不会产生任何明显的差异。

并避免客户端损坏/攻击

不可能的。您的代码在浏览器中运行,用户可以做任何他们想做的事情。

我的目标是将数据传输减少到最低限度

可以尝试的一些方法:

  • 减少发送更新的客户端事件的数量或频率
  • 仅发送已更改的数据
  • 压缩您发送的数据
  • 将多个事件捆绑到单个请求中

并避免客户端损坏/攻击。

  • 为避免攻击,您需要验证服务器上的所有输入。你应该在不知道客户端的情况下编写验证器。你不能假设你可以得到什么数据组合 - 相反,你应该假设有人正在使用文本编辑器手工制作请求并使用CURL发送它们。
  • 为避免损坏(实际上是"丢失的更新"),请将条件 PAT 或 POST 与 if-none-matchif-unmodified-since 标头一起使用。