聊聊簡訊介面攻擊的防範方案

ForestXie發表於2017-08-17

從Web2.0到移動網際網路時代後,越來越多的產品功能開始使用簡訊驗證功能,註冊/登入/密碼找回/支付.. ,可以說簡訊服務(介面)已經成為最重要的技術基礎設施之一。也正是因為重要,越來越多的惡意攻擊事件開始圍繞著簡訊介面進行,很多團隊也因此踩過坑。所以,今天梳理一下常用的簡訊攻擊防範措施,供大家參考。


一,身份驗證


1. 圖形校驗碼和手機驗證碼進行繫結,當使用者輸入手機號碼以後,需要輸入圖形校驗碼或者根據圖形進行某種邏輯運算(比如25 + 壹 = ?)才可以觸發簡訊,這樣能比較有效的防止軟體惡意點選。

2. 觸點驗證:讓使用者選擇某個指定的某些圖示或文字,典型案例有12306火車售票,不過使用者體驗會受到比較大的影響,效率和安全很多時候就是一對矛盾體。特別是要求選擇的物品比較奇葩的時候,在某種程度上“傷害”了最普通的使用者。-_-!
3. 滑動驗證:目前越來越流行的方式,主要是通過滑鼠拖動來實現驗證,

對於普通的圖形驗證碼容易被各種暴力機械破解,而滑動驗證只能監聽滑鼠動作,不能通過資料驗證,達到防止機械破解的作用。

以上三種做法,都有現成的開源類庫作為參考,可以在上面根據自身的情況做二次開發。


二,業務流程限定


通過設定特定的業務流程來阻止攻擊指令碼,比如以下兩個方案:

1. 將流程進行一分為二,先進行業務操作,再進行簡訊驗證。例如,將手機簡訊驗證和使用者名稱註冊分成兩個步驟,使用者在註冊成功使用者名稱密碼後,下一步才進行手機簡訊驗證。簡單來說,拿不到新使用者的身份資訊,簡訊是不會觸發成功的。

2. 必須填寫相關資訊才能觸發簡訊,例如,使用者必須填寫好所有註冊資訊才可進行觸發,註冊資料不完整無法傳送驗證碼。



三,觸發限制


通過挖掘和限定非正常的使用者行為,對簡訊的觸發進行管控,一般有以下三類做法:


1. 傳送間隔設定,設定同一號碼重複傳送的時間間隔,一般設定的間隔為60-120秒;

2. 觸發IP限定,設定每個IP每天的最大傳送量;

3. 傳送量限定,設定每個手機號碼每天的最大傳送量;

除此之外,請在驗證碼內容加上退訂操作,如:回覆TD拒收;退訂回覆TD等相關內容。當非使用者觸發接收的簡訊,使用者回覆TD以後,平臺將會將其列入拒發資料庫,將會停止對該號碼傳送。


除此之外,如果你遇到有棘手的簡訊攻擊問題,可以給我留言,大家一道討論。


掃描二維碼或手動搜尋微信公眾號【架構棧】: ForestNotes

歡迎轉載,帶上以下二維碼即可

聊聊簡訊介面攻擊的防範方案

點選閱讀原文”,所有【架構棧】近期的架構文章彙總


相關文章