安全岗位面试题更新 2026-08-03

在网关层,如何设计机制来防止接口重放攻击?当攻击者截获并重新发送请求包时,你会采用哪些识别与拦截策略?

考察说明

考查对接口重放攻击原理及网关层防护机制的理解与设计能力。

回答思路

  1. 【回答框架 1】重放攻击指攻击者截获合法请求后原样或稍加修改再次发送,使服务端重复处理,造成数据重复或状态异常。核心在于请求具有可重复性,因此防护思路是让请求具备唯一性和时效性。
  2. 【回答框架 2】常见方案是时间戳加随机数(nonce)机制:客户端在请求头携带时间戳和随机数,网关校验时间戳在允许的时间窗口内,并将随机数存入缓存(如Redis)设置过期时间,同一随机数再次出现则拒绝。该方案能拦截时间窗口内的重放,但无法防止窗口内快速重放。
  3. 【回答框架 3】更严格方案是使用递增序列号或一次性令牌:客户端每次请求使用服务端签发的递增序列号,网关校验序列号单调递增且无重复;或使用一次性令牌,服务端签发后仅允许使用一次,使用后立即失效。此方案能彻底防止重放,但需维护状态,增加复杂度。
  4. 【回答框架 4】结合签名机制:客户端对请求参数、时间戳、随机数进行签名,网关验签确保参数未被篡改,同时校验时间戳和随机数。签名可防止攻击者修改请求内容,但重放原始包仍可能通过,因此必须与时效性和唯一性校验配合。
  5. 【回答框架 5】实际部署中,网关可配置防重放策略,如时间窗口大小、随机数缓存容量、是否启用序列号等。需权衡安全性与性能,缓存过大或校验过严会影响吞吐量。同时,对敏感接口(如支付、登录)应强制启用,对普通查询接口可放宽。
  6. 【关键点 1】重放攻击的本质是请求可重复,防护核心是唯一性和时效性校验。
  7. 【关键点 2】时间戳加随机数方案简单有效,但存在时间窗口内重放风险。
  8. 【关键点 3】递增序列号或一次性令牌可彻底防重放,但需维护状态,复杂度高。
  9. 【关键点 4】签名机制防止参数篡改,但不能单独防重放,需与时效性和唯一性结合。
  10. 【关键点 5】分布式网关需共享缓存存储随机数或序列号,并考虑时钟同步和缓存过期策略。
  11. 【易错点 1】仅依赖时间戳校验,忽略随机数或序列号,导致窗口内重放无法拦截。
  12. 【易错点 2】随机数缓存未设置过期时间或容量过大,造成内存泄漏或性能下降。
  13. 【易错点 3】未考虑分布式环境下的时钟不同步,导致时间戳校验误判。