基于不可能作弊的优化数据包验证

Optimizing packet validation based on unlikelihood of cheaters?

本文关键字:优化 数据包 验证 不可能      更新时间:2023-09-26

我正在开发一个使用画布的白板应用程序,房间里的每个人都可以看到并在黑板上画画。所以基本上当一个人画一个包被发送到服务器,然后广播给房间里的其他人。

这工作得很好,但我听说过数据包验证检查的重要性。对于画笔更新,我可能需要检查如下内容:

  • 循环遍历points数组中的每个点以确保它们是有效的点
  • 颜色是有效的十六进制值吗?(昂贵的RegEx测试)
  • 线宽是否在有效范围内?

为什么呢?我在想可能发生的最糟糕的事情,我猜是有人发送一个字符串而不是一个数字,导致javascript在房间的其他参与者身上出现故障。

看起来这么多的服务器处理只是为了某件事,99.99%的时间不会做任何事情,因为大多数人不会尝试做包注入。无论如何,这些数据都不会存储在服务器上,因此也不会使服务器处于无效状态。也许在客户端进行验证会更好?

这是相当推测的,但我同意似乎没有必要在服务器上执行这些检查。

最终数据完整性的重要性/人们试图发送错误/无效数据的可能性是我们(但不是你)不可能知道的。如果结果的结果非常重要,并且很有可能有人试图影响该结果,那么是的,您可能应该验证它。

如果你只是想提高自己数据的完整性,那么我同意在发送数据之前对客户端执行一些简单的检查是可行的。