网游防刷指令攻击的设计
网游外挂可以重复发送某些指令,造成服务器CPU占用或带宽占用,这类攻击称为刷指令.
最简单的如聊天广播. 不需要特殊的外挂, 只需在客户端全域或区域喊话,
该聊天信息就会广播到所有客户端, 占用许多带宽.
一般需要通过限制聊天的间隔时间, 或者收费来防止刷屏聊天.
其他指令也需要这种防刷措施.
防刷指令应该做成一个通用机制, 控制所有指令, 而不是仅仅对个别指令处理.
默认情况下, 所有客户端发往服务器的指令都要受到限制.
指令限制功能应该放在网关, 不会影响游戏服务器.
但也要求算法尽量简单, 能够快速处理.
最简单的限制方法是限制间隔时间.
同一类指令之间必须间隔一定时长.
同一类指令就是指令号相同.
例如所有聊天指令必须间隔500ms以上.
对于移动攻击类的指令, 很频繁, 用时间间隔限制不合适.
因为受网络抖动的影响, 可能会有多个指令集中地接收.
应该用平均指令数来限制.
如5s内指令个数不超过1000个.
对于受到限制的指令, 可以直接忽略. 也可以向客户端返回一个指令受限的指示.
对于确认为刷指令攻击的客户端, 就断开连接.
有的指令可以缓存,直到允许的时刻才转发给游戏服务器. 同类指令可以只保留最后一个指令.
(转载请注明来源于金庆的专栏)