HMAC验签通过,能防重放吗?
HMAC验签通过,并不自动阻止同一请求被再次提交。它验证消息与密钥之间的认证关系,若原文、密钥及算法不变,合法认证码仍然可以匹配。防重放需要协议提供时间窗口、唯一标识等条件,并由服务端实际校验和记录,不能只在参数中放一个nonce就算完成。
2026年11月8日,www.kkce.com 实拍。相同教学消息重复计算得到相同HMAC;未向业务接口发起重复请求。
与主图第二次计算的原文、密钥及选项一致,结果相同。
同一公开消息连续计算两次
在KKCE HMAC生成器输入公开教学密钥和含action、timestamp、nonce的固定消息,连续两次点击计算,输出一致。主图及补图保留两次结果。本轮没有向任何业务接口提交请求,也没有实施重放测试,演示只说明认证码计算本身不记忆调用次数。
时间戳不会自己检查是否过期
时间字段只有被纳入认证并按约定检查,才能形成有效限制。服务端应统一单位、可信时钟与允许偏差,并拒绝超出窗口的请求。若只验证认证码、不读取时间,哪怕消息里有一个很早的时间值,也不会由HMAC函数自动拒绝。
唯一标识要有原子性的使用记录
nonce需要绑定相应身份及请求范围,并在有效窗口内识别重复。并发请求可能同时到达,简单先查再写的流程会留下竞争条件,应按系统设计采用可靠的一次性处理方式。业务幂等与认证防重放也有关联,但承担的目标不完全相同。
把协议判断与密码学核对分别验收
用受控接口覆盖首次提交、重复提交、过期和并发等情况,记录拒绝原因。快快测便于核对公开原文的计算结果,服务端状态逻辑仍需独立验证。本文密钥及参数均为教学值,不对应真实账户,也没有验证任何线上接口的防重放能力。
上一篇:
实体还原会保留不换行空格吗?
下一篇:
全局正则为何漏掉重叠结果?