從Web2.0到移動(dòng)互聯(lián)網(wǎng)時(shí)代后,越來(lái)越多的產(chǎn)品功能開(kāi)始使用短信驗(yàn)證功能,注冊(cè)/登錄/密碼找回/支付.. ,可以說(shuō)短信服務(wù)(接口)已經(jīng)成為最重要的技術(shù)基礎(chǔ)設(shè)施之一。也正是因?yàn)橹匾絹?lái)越多的惡意攻擊事件開(kāi)始圍繞著短信接口進(jìn)行,很多團(tuán)隊(duì)也因此踩過(guò)坑。所以,今天梳理一下常用的短信攻擊防范措施,供大家參考。
一,身份驗(yàn)證
1. 圖形校驗(yàn)碼和手機(jī)驗(yàn)證碼進(jìn)行綁定,當(dāng)用戶輸入手機(jī)號(hào)碼以后,需要輸入圖形校驗(yàn)碼或者根據(jù)圖形進(jìn)行某種邏輯運(yùn)算(比如25 + 壹 = ?)才可以觸發(fā)短信,這樣能比較有效的防止軟件惡意點(diǎn)擊。
2. 觸點(diǎn)驗(yàn)證:讓用戶選擇某個(gè)指定的某些圖標(biāo)或文字,典型案例有12306火車售票,不過(guò)用戶體驗(yàn)會(huì)受到比較大的影響,效率和安全很多時(shí)候就是一對(duì)矛盾體。特別是要求選擇的物品比較奇葩的時(shí)候,在某種程度上“傷害”了最普通的用戶。-_-!
3. 滑動(dòng)驗(yàn)證:目前越來(lái)越流行的方式,主要是通過(guò)鼠標(biāo)拖動(dòng)來(lái)實(shí)現(xiàn)驗(yàn)證,
對(duì)于普通的圖形驗(yàn)證碼容易被各種暴力機(jī)械破解,而滑動(dòng)驗(yàn)證只能監(jiān)聽(tīng)鼠標(biāo)動(dòng)作,不能通過(guò)數(shù)據(jù)驗(yàn)證,達(dá)到防止機(jī)械破解的作用。
以上三種做法,都有現(xiàn)成的開(kāi)源類庫(kù)作為參考,可以在上面根據(jù)自身的情況做二次開(kāi)發(fā)。
二,業(yè)務(wù)流程限定
通過(guò)設(shè)定特定的業(yè)務(wù)流程來(lái)阻止攻擊腳本,比如以下兩個(gè)方案:
1. 將流程進(jìn)行一分為二,先進(jìn)行業(yè)務(wù)操作,再進(jìn)行短信驗(yàn)證。例如,將手機(jī)短信驗(yàn)證和用戶名注冊(cè)分成兩個(gè)步驟,用戶在注冊(cè)成功用戶名密碼后,下一步才進(jìn)行手機(jī)短信驗(yàn)證。簡(jiǎn)單來(lái)說(shuō),拿不到新用戶的身份信息,短信是不會(huì)觸發(fā)成功的。
2. 必須填寫相關(guān)信息才能觸發(fā)短信,例如,用戶必須填寫好所有注冊(cè)信息才可進(jìn)行觸發(fā),注冊(cè)資料不完整無(wú)法發(fā)送驗(yàn)證碼。
三,觸發(fā)限制
通過(guò)挖掘和限定非正常的用戶行為,對(duì)短信的觸發(fā)進(jìn)行管控,一般有以下三類做法:
1. 發(fā)送間隔設(shè)置,設(shè)置同一號(hào)碼重復(fù)發(fā)送的時(shí)間間隔,一般設(shè)置的間隔為60-120秒;
2. 觸發(fā)IP限定,設(shè)置每個(gè)IP每天的最大發(fā)送量;
3. 發(fā)送量限定,設(shè)置每個(gè)手機(jī)號(hào)碼每天的最大發(fā)送量;
除此之外,請(qǐng)?jiān)隍?yàn)證碼內(nèi)容加上退訂操作,如:回復(fù)TD拒收;退訂回復(fù)TD等相關(guān)內(nèi)容。當(dāng)非用戶觸發(fā)接收的短信,用戶回復(fù)TD以后,平臺(tái)將會(huì)將其列入拒發(fā)數(shù)據(jù)庫(kù),將會(huì)停止對(duì)該號(hào)碼發(fā)送。