聊聊短信接口攻擊的防範方案

從Web2.0到移動互聯網時代後,愈來愈多的產品功能開始使用短信驗證功能,註冊/登陸/密碼找回/支付.. ,能夠說短信服務(接口)已經成爲最重要的技術基礎設施之一。也正是由於重要,愈來愈多的惡意攻擊事件開始圍繞着短信接口進行,不少團隊也所以踩過坑。因此,今天梳理一下經常使用的短信攻擊防範措施,供你們參考。數據庫


一,身份驗證安全


1. 圖形校驗碼和手機驗證碼進行綁定,當用戶輸入手機號碼之後,須要輸入圖形校驗碼或者根據圖形進行某種邏輯運算(好比25 + 壹 = ?)才能夠觸發短信,這樣能比較有效的防止軟件惡意點擊。微信

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

對於普通的圖形驗證碼容易被各類暴力機械破解,而滑動驗證只能監聽鼠標動做,不能經過數據驗證,達到防止機械破解的做用。rest

以上三種作法,都有現成的開源類庫做爲參考,能夠在上面根據自身的狀況作二次開發。cdn


二,業務流程限定
接口


經過設定特定的業務流程來阻止攻擊腳本,好比如下兩個方案:事件

1. 將流程進行一分爲二,先進行業務操做,再進行短信驗證。例如,將手機短信驗證和用戶名註冊分紅兩個步驟,用戶在註冊成功用戶名密碼後,下一步才進行手機短信驗證。簡單來講,拿不到新用戶的身份信息,短信是不會觸發成功的。
開發

2. 必須填寫相關信息才能觸發短信,例如,用戶必須填寫好全部註冊信息纔可進行觸發,註冊資料不完整沒法發送驗證碼。
產品



三,觸發限制


經過挖掘和限定非正常的用戶行爲,對短信的觸發進行管控,通常有如下三類作法:


1. 發送間隔設置,設置同一號碼重複發送的時間間隔,通常設置的間隔爲60-120秒;

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

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

除此以外,請在驗證碼內容加上退訂操做,如:回覆TD拒收;退訂回覆TD等相關內容。當非用戶觸發接收的短信,用戶回覆TD之後,平臺將會將其列入拒發數據庫,將會中止對該號碼發送。


除此以外,若是你遇到有棘手的短信攻擊問題,能夠給我留言,你們一道討論。


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

歡迎轉載,帶上如下二維碼便可


點擊閱讀原文」,全部【架構棧】近期的架構文章彙總

相關文章
相關標籤/搜索