防止惡意攻擊短信驗證碼接口方法
1、手機號碼限制:限制單個手機號碼每天的最大發送次數。超過次數不能發送短信,可以考慮將手機號碼加入黑名單,禁止1天。
2、短信發送時間間隔限制:限制同一個手機號碼重復發送的時間間隔。通常設置為60-120秒,前端做倒計時限制,時間未到不能點擊發送短信按鈕,后台也做時間間隔限制,時間未到不能發送短信。
3、IP地址限制:限制每個IP地址每天的最大發送次數。防止通過同一個IP地址不同手機號碼進行惡意攻擊。超過次數不能發送短信,可以考慮將IP地址加入黑名單,禁止1天。可以考慮限制同一個IP地址每分鍾的接口請求頻率。
4、發送流程限制:將流程分成兩個步驟。如:注冊用戶,將發送短信驗證碼和設置用戶名密碼分成兩個步驟,第一步一個頁面用來設置用戶名和密碼,用戶設置用戶名和密碼發送到后台,獲取到后台返回的第一步成功回執之后,進入第二步另一個頁面發送手機短信驗證碼。
忘記密碼,找回密碼,第一步輸入用戶名,第二步發送短信驗證碼。
5、增加圖片驗證碼:發送短信驗證碼時,要求輸入圖片驗證碼,每個圖片驗證碼僅能使用1次,使用1次后,不管輸入的圖片驗證碼是否正確自動失效。如果輸入錯誤更新圖片驗證碼。圖片驗證碼失效可以防止圖片驗證碼識別軟件嘗試多次識別,可以考慮復雜的圖片驗證碼或點觸驗證、滑動驗證。
6、對發送者進行唯一性識別:防止修改參數偽造多個IP地址和手機號碼進行惡意攻擊,用Token作為唯一性識別標識,后台將Token注入到前端,前端可以獲取到Token,請求發送短信驗證碼接口時帶上Token,后台接收到Token進行驗證,驗證未通過不能發送短信。
7、發送短信驗證碼,短信驗證碼有效期內,發送相同的短信驗證碼。比如設置30分鍾有效,短信發送時間間隔限制為60秒,第一次發送之后,60秒倒計時結束,點擊按鈕第二次發送,第二次發送的驗證碼和第一次相同。
8、短信驗證碼可以考慮數字和字母組合。
9、短信驗證碼輸入錯誤次數限制,比如設置短信驗證碼輸入錯誤3次后,這個短信驗證碼就不能使用了。防止猜測短信驗證碼惡意注冊。
10、上行短信驗證碼:對於可疑用戶要求其主動發短信。
短信運營商調研選型