如何防止短信验证被盗刷

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 在修改之前,再重新登录用户名和密码

感谢群里各位大佬。。。。


 

猜你喜欢

转载自blog.csdn.net/xly1993/article/details/79481583
今日推荐