如何防止簡訊驗證被盜刷
阿新 • • 發佈:2018-11-12
在php聊天群裡,有位同學說 他們的5000塊錢的簡訊,兩天被刷完了!,問群裡大佬怎麼辦!
就一般的防止簡訊驗證盜刷而言(通過修改手機號修改驗證碼),我們通常的防止簡訊被濫發,就是
(1)限制每個手機號的傳送次數
類似:
//檢查傳送次數 $key = "mobileReg_sms_send_times:" . $mobile . ":" . date("Ymd"); $smsSendTimes = Yii::app()->redis->get($key); if (empty($smsSendTimes)) { $smsSendTimes= 0; } else if ($smsSendTimes >= 10) { $this->_end(1, '每個手機號每天最多能發10條簡訊!'); }
但是如果人家通過修改手機號呢,這時候我們就引入了通過ip,來限制ip
(2)通過ip限制
//檢查IP傳送次數
$keyIp = "mobileIpReg_sms_send_times:" . PublicFunHelper::getIP() . ":" . date("YmdH"); $smsIpSendTimes = Yii::app()->redis->get($keyIp); if (empty($smsIpSendTimes)) { $smsIpSendTimes = 0; } else if ($smsIpSendTimes >= 5) { $this->_end(1, '您獲取簡訊驗證過於頻繁,請稍後再試!'); }
(3)驗證 檢測同一個簡訊傳送驗證時間
//檢查是否相隔60秒後傳送 $limitKey = "mobileReg_sms_send_limit:" . $mobile; $smsSendLimit = Yii::app()->redis->get($limitKey); if ($smsSendLimit) { $this->_end(1,'60秒後才能重新發送簡訊驗證碼!'); }
以上這3個條件篩選對於一般的刷簡訊防護應該是已經夠了!但是群裡那位同學這3個驗證條件都加了,依然還是被刷爆了,接下來又該怎麼處理呢?(攻擊的機制是通過修改手機號)
群裡各位給出的方案
1 提交修改是再加一個驗證碼的 驗證(個人比較看好這種方案);
2 限制同一個賬戶 一天修改手機號的次數
3 在修改之前,再重新登入使用者名稱和密碼
感謝群裡各位大佬。。。。