[转载]网游通信协议如何防止封包篡改?
- 第一层:协议非对称加密交换密钥,对称加密传输内容,保护好服务端私钥,防止中间人攻击。流式加密,同样包发两次内容不一样。
- 第二层:不用标准序列化工具如protocolbuf,用修改版或者自己实现的。
- 第三层:客户端加密加壳防止调试和注入,程序签名防止篡改二进制。
- 第四层:重要代码放虚拟机或者脚本里运行(脚本字节码需需改),一般黑客主要分析反汇编,你复杂逻辑多套几层他就晕了。
- 第五层:关键数据不落内存,一律使用getxx,setxx之类的接口,后面将真实数据经过变换以后才落内存。
- 第六层:守护进程动态跟踪监控情况。
- 第七层:决定性逻辑永远放在服务端。
- 第八层:服务端定期校验消息合理性,比如十秒内最大的移动步长是多少,实际发上来的合理不合理,不合理就踢掉,比如按键点击频率是否超过正常人。
- 第九层:不定期弹出反外挂答题,答正确奖励经验,错误就掉线。
- 第十层:必须要放在客户端计算的内容将输入和结果hash同步给其他客户端验算,不对就踢掉。
- 第十一层:当检测到客户端触碰到某规则不要急着踢掉它,而是有概率被踢掉,还要随机几秒踢掉,这样黑客发现一会这里断一会那里断,就蒙圈了。
- 第十二层:发现某黑客/外挂工具利用某漏洞破解了游戏,先看影响大不大,再看他挣不挣钱,影响一般又不挣钱的话可以先养着他,等他挣钱了用户多了,大型活动之前,一条指令就把它封了,用户退款都可以弄得他爬不起来
转自: https://www.zhihu.com/question/501941459/answer/2354778803