文章目录

  之前游戏上线测试没有开协议加密,受到了大量的封包攻击,导致游戏出现了很多问题,当然归根结底还是因为我们的服务器存在bug,才让这些封包攻击有机可乘。并且换个角度想想能让这些攻击者帮我们多测出一些bug也是好事。除了游戏逻辑写出了bug外,服务器对协议的过滤也没有做好,竟然让服务器与服务器之间的内部协议从客户端发过来了,这实在是很大的失误。
  我们一般采用的游戏加密算法是xxtea,这也是游戏开发中比较常用的一种算法,不过这次我想用一种更简单高效的方法来解决加密问题,所以没有采用xxtea,而是使用了一种验证序号的方案,严格来说不能算是加密,只能算是校验算法。其实封包攻击者最常采用的手段就是利用wpe来抓包分析,所以我觉得如果是针对一般攻击的话,只要做个协议校验就够用了,要是还不行再开xxtea也可以,反正是技术测试嘛。
  校验协议的方法很简单,主要是服务器和客户端要知道一个种子,客户端通过约定的算法计算出一个校验码,并在协议中携带给服务端,然后服务器也通过约定的算法对校验码进行校验,校验失败的话就不处理这个协议,更狠的话直接把这个玩家踢下线也行。其中比较核心的内容就是约定的算法,这个可以由自己选择,只要能够不断变化就行,不能用那种算到最后值就恒定了的算法。复杂点的如crc算法,简单点的甚至可以用位运算和逻辑运算就行了。我觉得crc需要不断循环运算,计算量还是大了点,所以选择了一种位运算结合逻辑运算的简单方案,这样只要一次简单的运算就可以了,我的要求就是够用就行。
  最终通过增加校验,攻击我们的人还是放弃了给我们继续制造麻烦,我的目的也就达到了。当然校验协议的方案虽然简单可行,但肯定没有加密协议的方式更安全,所以如果你十分担心的话还是应该采用加密的方式。

文章目录