如何防止短信驗證碼被攻擊?

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

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是不一致的,所以會導致之後的請求失敗。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章