背景
前段時間,公司的短信接口被人惡意調(diào)用,給公司的業(yè)務(wù)和成本都帶來了一定的影響。為了盡快止損,想出了以下幾種方案來完善發(fā)短信模塊,防止短信被刷。
防御方法
-
調(diào)用短信接口需
token校驗
通過時間戳生成token,保證token5分鐘之內(nèi)有效。在表單頁面通過后端接口提前生成好token,用戶在5分鐘之內(nèi)無需更新token
優(yōu)點: 短信接口必須攜帶token才能訪問,調(diào)用需要鑒權(quán)
缺點: 為了兼容用戶體驗,token必須有一定的有效期,用戶在短時期內(nèi)無需手動刷新頁面更新token
-
限制
ip和手機號
- 每個手機號必須相隔
60s之后才能發(fā)下一次短信(限制手機號) - 對單個
ip在單位時間內(nèi)的請求次數(shù)設(shè)置閾值,超出閾值,加入黑名單,在一段時間內(nèi)暫停對該ip提供服務(wù);多次進入黑名單的ip,則永久禁止該ip的訪問權(quán)限(限制ip)
優(yōu)點: 結(jié)合方法一的token鑒權(quán),可以大部分過濾掉惡意調(diào)用的行為
缺點: 黑客可通過肉機+隨機手機號的方式繞過限制
-
圖形驗證碼、人機校驗
通過圖形驗證碼、人機校驗,在發(fā)送短信的行為端增高門檻,杜絕自動化調(diào)用??赏ㄟ^方法二的限ip,防止攻擊者忽略人機校驗,大量執(zhí)行請求給服務(wù)器帶來額外負(fù)擔(dān)
優(yōu)點: 杜絕自動化調(diào)用
缺點: 圖形驗證碼被自動化破解的概率較高,人機校驗需要一定的成本