ret*_*eax 1 network-programming
出于安全考虑,我感觉应该在服务器端进行测试.尽管如此,这对服务器来说是相当沉重的,对吧?鉴于玩家正在佩戴的装备和buff,他们将具有更高的移动速度,因此每次移动时我都需要计算新的常数并查看他们的移动是否合法(使用TCP所以不必担心丢失,无序数据包).我意识到我可以只保存最后的移动速度,只有当他们改变了影响他们速度的东西时才重新计算它,但即便如此,那也是另一个检查.
我的另一个想法是服务器随机选择客户端发送它的数据并验证它并给每个客户端一个信任评级.足够低的信任评级意味着将检查来自客户端的每条消息,并且将以更详细的方式记录它们的所有操作.然后我会通过检查日志知道他们是黑客,并且可以禁止/暂停它们以及撤消它们可能通过黑客传播的任何好处.
任何建议表示赞赏,谢谢.
编辑:我刚刚意识到,黑客可以在非常高的连续性中发送微小的动作(在常规速度范围内).每个单独的运动本身就是精英,但累积的影响将是速度黑客.有什么方法可以解决这个问题?
处理此问题的标准方法是让服务器计算所有移动.客户端应该发送给服务器的唯一事情是命令,例如"向左移动",然后服务器应该计算玩家移动的速度等,然后最终将更新的位置发送回客户端.
如果你在客户端留下任何计算,很可能迟早会有人找到欺骗的方法.