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