網游防刷指令攻擊的設計
網游外掛可以重復發送某些指令,造成服務器CPU占用或帶寬占用,這類攻擊稱為刷指令.
最簡單的如聊天廣播. 不需要特殊的外掛, 只需在客戶端全域或區域喊話,
該聊天信息就會廣播到所有客戶端, 占用許多帶寬.
一般需要通過限制聊天的間隔時間, 或者收費來防止刷屏聊天.
其他指令也需要這種防刷措施.
防刷指令應該做成一個通用機制, 控制所有指令, 而不是僅僅對個別指令處理.
默認情況下, 所有客戶端發往服務器的指令都要受到限制.
指令限制功能應該放在網關, 不會影響游戲服務器.
但也要求算法盡量簡單, 能夠快速處理.
最簡單的限制方法是限制間隔時間.
同一類指令之間必須間隔一定時長.
同一類指令就是指令號相同.
例如所有聊天指令必須間隔500ms以上.
對于移動攻擊類的指令, 很頻繁, 用時間間隔限制不合適.
因為受網絡抖動的影響, 可能會有多個指令集中地接收.
應該用平均指令數來限制.
如5s內指令個數不超過1000個.
對于受到限制的指令, 可以直接忽略. 也可以向客戶端返回一個指令受限的指示.
對于確認為刷指令攻擊的客戶端, 就斷開連接.
(轉載請注明來源于金慶的專欄)
網游外掛可以重復發送某些指令,造成服務器CPU占用或帶寬占用,這類攻擊稱為刷指令.
最簡單的如聊天廣播. 不需要特殊的外掛, 只需在客戶端全域或區域喊話,
該聊天信息就會廣播到所有客戶端, 占用許多帶寬.
一般需要通過限制聊天的間隔時間, 或者收費來防止刷屏聊天.
其他指令也需要這種防刷措施.
防刷指令應該做成一個通用機制, 控制所有指令, 而不是僅僅對個別指令處理.
默認情況下, 所有客戶端發往服務器的指令都要受到限制.
指令限制功能應該放在網關, 不會影響游戲服務器.
但也要求算法盡量簡單, 能夠快速處理.
最簡單的限制方法是限制間隔時間.
同一類指令之間必須間隔一定時長.
同一類指令就是指令號相同.
例如所有聊天指令必須間隔500ms以上.
對于移動攻擊類的指令, 很頻繁, 用時間間隔限制不合適.
因為受網絡抖動的影響, 可能會有多個指令集中地接收.
應該用平均指令數來限制.
如5s內指令個數不超過1000個.
對于受到限制的指令, 可以直接忽略. 也可以向客戶端返回一個指令受限的指示.
對于確認為刷指令攻擊的客戶端, 就斷開連接.
有的指令可以緩存,直到允許的時刻才轉發給游戲服務器. 同類指令可以只保留最后一個指令.
(轉載請注明來源于金慶的專欄)