如何防止被人刷驗證碼?

來源:互聯網
上載者:User
坑產品設計出來的註冊/登入是可以擷取手機驗證碼的,但是卻沒有加形驗證碼。然後現在我們的這個擷取驗證碼的介面被人刷了好多下。最近一個小時足足有數千次請求,而且居然還是不同的IP和不同的手機號碼....

求支招,除了加圖形驗證碼外,怎麼樣防刷?

回複內容:

坑產品設計出來的註冊/登入是可以擷取手機驗證碼的,但是卻沒有加形驗證碼。然後現在我們的這個擷取驗證碼的介面被人刷了好多下。最近一個小時足足有數千次請求,而且居然還是不同的IP和不同的手機號碼....

求支招,除了加圖形驗證碼外,怎麼樣防刷?

我能想到的,除了圖形驗證碼:

  1. 基於手機號碼,限制每天每個手機最多發N條驗證碼。這個貌似LZ已經加了。

  2. 基於IP,限制每天每個IP最多發N條驗證碼... -- 缺點:容易誤殺正常使用者,慎用

  3. 【究極手段】基於使用者行為大資料分析

如何基於使用者行為分析呢?想到一個簡單的方法:

首先,正常使用者除了發送驗證碼這個請求外,應該還會訪問頁面的其他資源,比如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和手機號,那麼你就加形驗證碼把。。。

  • 增加圖形驗證碼,字型顏色什麼的別太單一。

  • 在一次簡訊發送完成之後需要有間隔時間,前端cookie判斷,php那邊單獨進行儲存

  • 介面需要判斷請求的ip地址和手機號,距離上次時間間隔太短不允許發送

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.