1. 程式人生 > >如何防止簡訊驗證碼被攻擊?

如何防止簡訊驗證碼被攻擊?

    如何防止驗證碼被攻擊?驗證碼可以用來攻擊單個使用者,也就是簡訊轟炸,也可以刷量增加網站成本,雖然一條几分錢,但是量多了也是一種成本。以下幾種驗證碼被攻擊的解決方案。

1.傳送間隔限制,每過60秒或120秒之後才可以再次傳送

    這個可以在前端限制點選之後60秒內無法再次觸發事件。當然了後臺也需要限制,

每次傳送成功後,可以在redis裡儲存一個字串,key為手機號,value帶有時間戳。同一個手機號再次傳送時先從redis裡獲取字串對比時間。

另外,這個字串的過時時間也可用作驗證碼的有效時間,例如驗證碼5分鐘之內有效,那麼字串的有效時間就可以設定為5分鐘。

2.傳送次數限制,每天只可以傳送多少次

    可以在redis內維護一條記錄,記錄的過期時間為24小時,value為此號碼傳送簡訊的次數,每次傳送前先獲取此號碼今天傳送了多少次了,超過次數不傳送。

3.同一個ip傳送次數限制

    這個做法和方法2類似,只不過把(號碼, 次數)換成了(ip,次數)。

4.增加圖片(或其他形式)的驗證碼 

    每次初始化時隨機生成一個圖片驗證碼存在session,在最後點擊發送之前需要驗證輸入的驗證碼是否正確,驗證碼使用一次後失效。

5.增加token

    使用者提交請求時會攜帶token到後臺,將快取中的token和使用者請求帶過來的token進行比較,如果相同,會將快取中的token進行更新。若使用者重複提交,則使用者之後發過來的請求的token和快取中的token是不一致的,所以會導致之後的請求失敗。