基于不可能作弊的优化数据包验证
Optimizing packet validation based on unlikelihood of cheaters?
我正在开发一个使用画布的白板应用程序,房间里的每个人都可以看到并在黑板上画画。所以基本上当一个人画一个包被发送到服务器,然后广播给房间里的其他人。
这工作得很好,但我听说过数据包验证检查的重要性。对于画笔更新,我可能需要检查如下内容:
- 循环遍历points数组中的每个点以确保它们是有效的点
- 颜色是有效的十六进制值吗?(昂贵的RegEx测试)
- 线宽是否在有效范围内?
为什么呢?我在想可能发生的最糟糕的事情,我猜是有人发送一个字符串而不是一个数字,导致javascript在房间的其他参与者身上出现故障。
看起来这么多的服务器处理只是为了某件事,99.99%的时间不会做任何事情,因为大多数人不会尝试做包注入。无论如何,这些数据都不会存储在服务器上,因此也不会使服务器处于无效状态。也许在客户端进行验证会更好?
这是相当推测的,但我同意似乎没有必要在服务器上执行这些检查。
最终数据完整性的重要性/人们试图发送错误/无效数据的可能性是我们(但不是你)不可能知道的。如果结果的结果非常重要,并且很有可能有人试图影响该结果,那么是的,您可能应该验证它。
如果你只是想提高自己数据的完整性,那么我同意在发送数据之前对客户端执行一些简单的检查是可行的。
相关文章:
- 在侦听特定端口时接收广播的数据包
- Modx数据包管理器ext-all.js错误
- 从Node.js UDP发送大量小数据包;Don’不要全部寄出去
- WebRTC是否为您处理数据包丢失和数据包接收确认等,或者您是否需要为此编写自己的解决方案
- 如果在节点 JS 中落后于 Socket.IO,则丢弃数据包
- Socket.io 数据包在断开连接和重新连接之间丢失
- 节点.JS Socket.IO 将数据包发送到特定连接 ID
- 将一个q promise数组拆分为多个数据包,并依次运行这些数据包
- 如何通过本地大于1500字节的UDP数据包发送浮点值并对其进行解析
- Javascript CORS被阻止,但仍在数据包捕获中显示数据
- JavaScript:调用已启动类(数据包处理程序)的变量函数
- 如何在EDGE.js(nodeJS.NET数据包)中重用代码
- Windows RT应用程序未接收UDP数据报数据包.微软DatagramSample中我的nor中的以太币
- 您应该在socket.io中手动批处理可扩展应用程序的数据包吗
- 套接字.IO初始数据包
- 发送一个大数据包或许多小数据包为白板应用程序
- 基于不可能作弊的优化数据包验证
- 是否可以只使用ExtJS的数据包?
- 如何通过将视频blob转换为二进制数据包发送到node.js服务器
- 如何在socket io中向单个客户端发送错误数据包?