如今手機已經成爲了人們必不可少的東西,手機號幾乎成了咱們身份ID,當前在互聯網各大網站、APP等註冊幾乎都是經過手機號驗證短信來完成註冊,短信驗證碼發送通常咱們都調用的第三方接口,固然這個是收費的。通常咱們在調用第三方短信發送接口時,若是防護沒作好,頗有可能就成爲了黑客攻擊的點,可能會在幾分鐘內就能把你幾條短信給耗光,因此作好短信驗證碼防護是十分重要的,下面咱們分享幾個方法,本人也是結合了其它網友的方法再加上本身的實踐作個完善和補充,但願能幫到須要的人。html
(1)單個手機號發送次數限制前端
比喻每一個手機號一天最多隻容許收到5條等,這個通常不須要本身在程序裏設置,由於通常短信接口商那邊能夠設置,只需跟客服說一下就能夠實現。固然通常黑客攻擊實際上是用了成千上萬個手機號的,重複一個手機號去攻擊不多。後端
(2)發送時間間隔限制post
比喻設置60秒或120秒後可再發送,這裏注意一點,這個限制要作兩面,不只前端html上對按鈕進行失效設置,同時後端也須要驗證這個時間限制間隔,只作前端只能防小白。網站
(3)增長其它字段的驗證url
在發送手機驗證碼前,先讓用戶把如用戶名、郵箱、密碼等字段填寫完整並驗證可行性,再容許用戶發送手機驗證碼。spa
(4)增長圖形驗證碼日誌
圖形驗證碼須要保存在Session裏面,而且使用完了一個圖形驗證碼後需當即讓這個圖形驗證碼失效,防止黑客一直用一個圖形驗證碼經過。htm
(5)同一個IP限制發送次數blog
這裏須要開發者先能獲取到客戶端的真實IP地址,在個人博客上一篇文章《JS和C#.NET獲取客戶端IP》中有說到如需獲取客戶端IP的方法。這個限制只能產生必定的限制,做用有限,由於黑客每每都是切換IP的
(6)判斷用戶發送驗證碼的頁面入口是不是你的註冊頁面
這一點很重要,黑客在攻擊的時候都是直接調用你發送驗證的那個中間頁面,可能直接跳過了你的註冊頁面入口,他會按照你的方法拼好要傳輸的參數字段直接去調用方法,這個時候我只要在後臺判斷一下用戶進來的入口是不是註冊頁面的地址就行。迫使黑客經過註冊頁面入口進行入侵,可是這顯然加大了攻擊的成本。
(7)記錄下驗證碼發送的日誌,根據日誌分析制定防範方法
若是上面6點作完仍是發現攻擊存在,那麼就須要根據記錄下的驗證碼發送日誌分析來制定相應的防範措施了,例以下面就是我截取的一段日誌:
這是一段大概3分鐘內攻擊日誌的截圖,你們能夠看一下手機欄和IP欄,基本IP是一直在換,因此很難去限制,可是仔細分析手機號,發現手機號前6位甚至是前7位重複的機率很高,那麼這時候就要對手機號段(前6或前7)來制定防範方案了,根據這些,我這裏是作的兩點供參考:
a.同一個手機號碼段(手機號前6位)120秒內最多發送一次
b.同一個號碼段(手機號前6位)當天最多發送10條
c.同一個號碼段(手機號前6位)當天發送3次以上且尚未註冊的話,再也不發送。
通常狀況下,咱們只須要作到以上幾點基本上能夠有效防止短信驗證碼的攻擊。
綜上,所謂「道高一尺魔高一丈」,咱們很難徹底限制住黑客的入侵攻擊,咱們只能想辦法去增長黑客的攻擊成本,迫使他們放棄攻擊。
以上就是我要分享的內容,你們還有更好的方法歡迎留言補充。