針對(duì)短信驗(yàn)證碼接口被惡意攻擊的防范總結(jié)
一. 短信接口被惡意攻擊(短信轟炸)解讀
短信驗(yàn)證碼接口被惡意攻擊一般主要用于短信轟炸。
短信轟炸一般基于 WEB 方式(基于客戶(hù)端方式的原理與之類(lèi)似),由兩個(gè)模塊組成,包括:
一個(gè)前端Web網(wǎng)頁(yè),提供輸入被攻擊者手機(jī)號(hào)碼的表單;
一個(gè)后臺(tái)攻擊頁(yè)面(如html),利用從各個(gè)網(wǎng)站上找到的動(dòng)態(tài)短信URL和前端輸入的被攻擊者手機(jī)號(hào)碼,發(fā)送HTTP請(qǐng)求,每次請(qǐng)求給用戶(hù)發(fā)送一個(gè)動(dòng)態(tài)短信。
被攻擊者大量接收非自身請(qǐng)求的短信,造成無(wú)法正常使用移動(dòng)運(yùn)營(yíng)商業(yè)務(wù)。
短信接口被刷通常指的就網(wǎng)站的動(dòng)態(tài)短信發(fā)送接口被此類(lèi)短信轟炸工具收集,作為其中一個(gè)發(fā)送途徑。
具體工作原理如下:
惡意攻擊者在前端頁(yè)面中輸入被攻擊者的手機(jī)號(hào);
短信轟炸工具的后臺(tái)服務(wù)器,將該手機(jī)號(hào)與互聯(lián)網(wǎng)收集的可不需要經(jīng)過(guò)認(rèn)證即可發(fā)送動(dòng)態(tài)短信的 URL 進(jìn)行組合,形成可發(fā)送動(dòng)態(tài)短信的 URL 請(qǐng)求;
通過(guò)后臺(tái)請(qǐng)求頁(yè)面,偽造用戶(hù)的請(qǐng)求發(fā)給不同的業(yè)務(wù)服務(wù)器;
業(yè)務(wù)服務(wù)器收到該請(qǐng)求后,發(fā)送動(dòng)態(tài)短信到被攻擊用戶(hù)的手機(jī)上。
二. 短信驗(yàn)證碼的攻擊方式
人工頻繁點(diǎn)擊(這種方式幾率非常小)
通過(guò)腳本攻擊,頁(yè)面自動(dòng)化模擬點(diǎn)擊和直接通過(guò)短信接口攻擊
三. 容易被惡意攻擊的場(chǎng)景
注冊(cè)頁(yè)面
忘記密碼頁(yè)面
手機(jī)短信動(dòng)態(tài)驗(yàn)證碼登錄
四. 防止短信驗(yàn)證碼惡意攻擊的手段
增加圖形化驗(yàn)證碼
惡意攻擊者采用自動(dòng)化工具,調(diào)用動(dòng)態(tài)短信獲取接口進(jìn)行動(dòng)態(tài)短信發(fā)送,原因主要是攻擊者可以自動(dòng)對(duì)接口進(jìn)行大量調(diào)用。
采用圖片驗(yàn)證碼可有效防止工具自動(dòng)化調(diào)用,即當(dāng)用戶(hù)進(jìn)行“獲取動(dòng)態(tài)短信” 操作前,彈出圖片驗(yàn)證碼,要求用戶(hù)輸入驗(yàn)證碼后,服務(wù)器端再發(fā)送動(dòng)態(tài)短信到用戶(hù)手機(jī)上,該方法可有效解決短信轟炸問(wèn)題。
安全的圖形驗(yàn)證碼必須滿(mǎn)足如下防護(hù)要求
生成過(guò)程安全:圖片驗(yàn)證碼必須在服務(wù)器端進(jìn)行產(chǎn)生與校驗(yàn);
使用過(guò)程安全:單次有效,且以用戶(hù)的驗(yàn)證請(qǐng)求為準(zhǔn);
驗(yàn)證碼自身安全:不易被識(shí)別工具識(shí)別,能有效防止暴力破解。
單IP請(qǐng)求次數(shù)限制
使用了圖片驗(yàn)證碼后,能防止攻擊者有效進(jìn)行動(dòng)態(tài)短信功能的自動(dòng)化調(diào)用
但若攻擊者忽略圖片驗(yàn)證碼驗(yàn)證錯(cuò)誤的情況,大量執(zhí)行請(qǐng)求會(huì)給服務(wù)器帶來(lái)額外負(fù)擔(dān),影響業(yè)務(wù)使用。建議在服務(wù)器端限制單個(gè)IP在單位時(shí)間內(nèi)的請(qǐng)求次數(shù),一旦用戶(hù)請(qǐng)求次數(shù)(包括失敗請(qǐng)求次數(shù))超出設(shè)定的閾值,則暫停對(duì)該IP一段時(shí)間的請(qǐng)求;若情節(jié)特別嚴(yán)重,可以將IP加入黑名單,禁止該IP的訪問(wèn)請(qǐng)求。該措施能限制一個(gè)IP地址的大量請(qǐng)求,避免攻擊者通過(guò)同一個(gè)IP對(duì)大量用戶(hù)進(jìn)行攻擊,增加了攻擊難度,保障了業(yè)務(wù)的正常開(kāi)展。
手機(jī)號(hào)碼限定
根據(jù)業(yè)務(wù)特點(diǎn),限定每個(gè)手機(jī)號(hào)碼每天多發(fā)送量
限制發(fā)送時(shí)間間隔
此限定已經(jīng)非常普遍,即當(dāng)單個(gè)用戶(hù)請(qǐng)求發(fā)送一次動(dòng)態(tài)短信之后,服務(wù)器端限制只有在一定時(shí)長(zhǎng)之后(此處一般為60秒),才能進(jìn)行第二次動(dòng)態(tài)短信請(qǐng)求。該功能可進(jìn)一步保障用戶(hù)體驗(yàn),并避免包含手工攻擊惡意發(fā)送垃圾驗(yàn)證短信。
流程限定
如果是類(lèi)似忘記密碼功能頁(yè)面,我們可以將手機(jī)短信驗(yàn)證和用戶(hù)密碼設(shè)置分成兩個(gè)步驟,用戶(hù)在設(shè)置完成用戶(hù)密碼后,并需要獲取上一步的成功回執(zhí)后才進(jìn)行手機(jī)驗(yàn)證碼的發(fā)送。
集號(hào)吧企業(yè)短信群發(fā):用于向特定的用戶(hù)發(fā)送通知等場(chǎng)合,比如面試通知、會(huì)議通知、注冊(cè)驗(yàn)證碼、用戶(hù)梯形、訂單通知、手機(jī)驗(yàn)證等需要向某個(gè)用戶(hù)發(fā)送短信的場(chǎng)合,企業(yè)短信采用高效的專(zhuān)用通道發(fā)送,發(fā)送速度更快更穩(wěn)定。
如需短信群發(fā)可電話(huà)微信:13462636136 聯(lián)系
(AM 8:00-12:00 PM 14:00-18:00)