版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xly1993/article/details/79481583
在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 在修改之前,再重新登录用户名和密码
感谢群里各位大佬。。。。