坑產品設計出來的註冊/登入是可以擷取手機驗證碼的,但是卻沒有加形驗證碼。然後現在我們的這個擷取驗證碼的介面被人刷了好多下。最近一個小時足足有數千次請求,而且居然還是不同的IP和不同的手機號碼....
求支招,除了加圖形驗證碼外,怎麼樣防刷?
回複內容:
坑產品設計出來的註冊/登入是可以擷取手機驗證碼的,但是卻沒有加形驗證碼。然後現在我們的這個擷取驗證碼的介面被人刷了好多下。最近一個小時足足有數千次請求,而且居然還是不同的IP和不同的手機號碼....
求支招,除了加圖形驗證碼外,怎麼樣防刷?
我能想到的,除了圖形驗證碼:
基於手機號碼,限制每天每個手機最多發N條驗證碼。這個貌似LZ已經加了。
基於IP,限制每天每個IP最多發N條驗證碼... -- 缺點:容易誤殺正常使用者,慎用
【究極手段】基於使用者行為大資料分析
如何基於使用者行為分析呢?想到一個簡單的方法:
首先,正常使用者除了發送驗證碼這個請求外,應該還會訪問頁面的其他資源,比如CSS/JS/HTML/圖片等。
然而,如果是刷子,他可能並不會專門去訪問這些個資源。
所以可以在使用者訪問頁面的時候就記錄一個human參數存在session中,每當其請求頁面中的一個資源則human += 1。等到發送驗證碼的介面的時候,取出來這個human參數看看其值是多少,正常的一個使用者這個human值應該是大於某個值的(比如5),小於的則應該就是刷子。(為0的肯定是刷子無疑)
我說的比較簡單啦,更複雜點的可以順便把幾次請求之間的間隔記錄下來,點擊登入或註冊按鈕前滑鼠的移動軌跡,滑鼠按下收合的時間等等記錄下來綜合分析。
要是能引用或抄一個像google做的reCAPTCHA -- 點一下就自動識別人還是機器刷子 -- 就好了。
像新狼微波那樣~ 只有使用者名稱和密碼存在,才發送驗證馬。
問題是通過手機驗證碼登入這個功能肯定不能再加密碼。註冊的密碼可以隨便填,意義不大呀
@locatejoe
不是顯示密碼之類的方式,而是把 使用者名稱 和 密碼 都取MD5值,拼接起來,再作雜湊,映射到類似bloomFilter的過濾器中。
bloomFilter返回不存在則不發送驗證馬。
bloomFilter占空間不大,速度也很快。
之前已經遇到過這個問題
2天時間 2萬多條資訊刷完了
解決辦法:
1.增加圖形驗證碼
2.判斷同一ip 同一手機 在一個時間段內只能發送3條資訊 (雖然不友好 )
3.判斷簡訊發送時間 如果30分鐘內 還是同一個手機和ip 就不發送
反正有很多種方法 你試一下吧
如果是不同的ip和手機號,那麼你就加形驗證碼把。。。