CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
安全加密网络通信

【安全加密】防重放攻击与包体签名:协议层的两道锁

2026-09-20 07:58 作者:996 技术组 2 阅读 996引擎Lua教程传奇脚本

重放是什么攻击

重放(Replay Attack)不破解你的加密,它只是把"你合法发出的数据"原样再发一遍。典型场景:客户端领取奖励的请求被截获,攻击者原封不动重发一百次——请求签名、加密全部合法,服务器照单全收。只要"同样的数据可以无限次有效",你的协议就有重放漏洞。

第一道锁:时间戳 + 随机数

防重放的核心是让每条请求"只有效一次"。两个要素组合:

时间戳:请求带客户端时间,服务器拒绝超出窗口(如 ±60 秒)的请求,过期报文直接作废。

随机数 nonce:每条请求带一个一次性随机串,服务器记录最近 N 分钟内出现过的 nonce(内存哈希表 + 定期清理),重复即拒收。时间戳挡"旧包重放",nonce 挡"窗口内的连发重放",缺一不可。

lua
-- 客户端组包
local nonce = randomHex(16)
local sign = hmac(key, seq .. ":" .. ts .. ":" .. nonce .. ":" .. body)
-- 服务器验包
if math.abs(now - ts) > 60 then return reject("过期") end
if seenNonces[nonce] then return reject("重放") end
seenNonces[nonce] = true
if not verifySign(key, seq .. ":" .. ts .. ":" .. nonce .. ":" .. body) then return reject("伪造") end

第二道锁:包体签名校验

签名(HMAC-SHA256)保证两件事:包体未被篡改、发送方持有密钥。覆盖范围务必包含全部关键参数——只签消息类型不签参数,等于没签;只签 body 不签序号,攻击者可以调换包序。会话密钥在登录握手时由服务器下发并定期轮换,不要与加密密钥复用同一把。

游戏协议还要加一层序号校验:客户端每条消息自增 seq,服务器记录已处理的最大 seq,跳回的旧序号直接拒收。序号是天然的重放屏障,实现成本几乎为零。

服务端业务幂等:最后的安全网

网络层的锁都可能被绕过(客户端毕竟是别人的机器),所以关键业务必须在服务端做幂等设计:每条领取类请求携带客户端生成的唯一业务单号,服务器按单号去重——同一单号第二次到达,返回第一次的结果而不是重复发货。把"防重放"下推到业务语义层,才是真正兜底。

三道措施(时间戳+nonce、HMAC 签名+序号、业务单号幂等)加起来不到两百行代码,却能挡掉绝大多数协议层薅羊毛手法,是新服上线前的标准自查项。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

框架设计战斗系统

【框架设计】BOSS 归属:伤害贡献与掉落分配

实战应用:用在哪里 祖玛教主倒下的瞬间,掉落的裁决之杖归谁?BOSS 的归属规则是打宝生态的宪法:单挑的归属清晰、组队的分配…

2026-09-21 19:46 996 技术组 · 0 阅读
框架设计新手引导

【框架设计】新手村动线:前 30 分钟的任务编排

实战应用:用在哪里 新手村的前 30 分钟决定一款游戏的留存:玩家在这半小时里学会移动、战斗、拾取、加行会——学会的速度就是…

2026-09-21 19:46 996 技术组 · 0 阅读
性能调优定时器

【性能调优】定时器合并:同频任务的统一调度

实战应用:用在哪里 每个功能都爱挂定时器:扫邮件的、刷怪的、发奖的、心跳的——一百个定时器各自为政,调度层的开销与定时器的数…

2026-09-21 19:46 996 技术组 · 0 阅读
安全加密交互安全

【安全加密】高危操作确认:不可逆动作的防误设计

实战应用:用在哪里 丢弃裁决之杖、解散行会、删除好友——不可逆的操作一旦执行就没有后悔药。高危操作的确认设计是防误的闸门:让…

2026-09-21 19:46 996 技术组 · 0 阅读
工具链联调测试

【工具链】协议 Mock:前端联调的假服务器

实战应用:用在哪里 前端的功能开发经常被服务器档在门外:后端的接口没写完,前端只能干等或造假数据。协议 Mock 在本地扮演…

2026-09-21 19:46 996 技术组 · 0 阅读
网络通信聊天系统

【网络通信】私聊消息:点对点投递与离线转邮件

实战应用:用在哪里 私聊是玩家社交的私信箱:交易的对口、好友的寒暄、行会的动员暗号全走私聊。私聊协议的要点是点对点的寻址、离…

2026-09-21 19:46 996 技术组 · 0 阅读