php短信发送-【精选】用PHP制作邮件验证码救砖,整理出这个解决方案!

2023-08-26 0 7,504 百度已收录

学习与交流:

phpstorm全家桶激活码,支持多台电脑,支持多个IDE工具
链接:http://web.52shizhan.cn/activity/fot8dn 
提取码:KGYU508TG4


大部分产品都会涉及到短信验证码的使用界面,尤其是手机产品,短信验证码几乎已经成为所有手机产品的标准。因此,防止短信被刷成了每个产品经理和开发人员关心的问题。

没有体验过短信被刷问题的产品经理可能不会太注意这个问题。在这篇文章中,我将简要介绍黑色工具的短信轰炸机。短信轰炸机是一个软件,使用书面程序刷短信大量。它可以自动批量提交手机号码,模拟IP等方式刷短信。

因此,在设计需要使用短信验证码的产品时,必须制定限制规则,避免短信被闪现。

在PC时代,大多数平台通过图形验证码的形式降低了被机器刷过的风险。最典型的例子是12306“奇妙的验证码”。然而,在移动互联网时代,用户体验非常重要,有时使用图形验证码会对用户体验产生一定的影响。那么,除了图形验证码的方式外,还有什么方法可以解决短信被刷的问题呢?


提供了几种方案仅供参考:思路都在,代码就容易实现咯
1、时间限制:60秒后才能再次发送
发送验证码开始,前端(客户端)将执行60秒的倒计时。在这一分钟之内,用户无法提交多个发送信息的请求。尽管通常使用此方法,但它不是很有用。技术更好的人可以绕过此限制,直接发送短信验证码。
代码如下:
//检查是否相隔60秒后发送
$limitKey = "mobile_sms_send_limit:" . $mobile;
$smsSendLimit = Yii::app()->redis->get($limitKey);
if ($smsSendLimit) {
    $this->_end(1'60秒后才能重新发送短信验证码!');
}

2.手机号码限制:同一手机号码24小时内不能超过5条

当使用同一手机号码进行注册或其他发送短信验证码的操作时,系统可以对手机号码进行限制。 例如,24小时内只能发送5个电子邮件验证码。 如果超出限制,会报错(例如:忙,请稍后重试)。 此外,这只能防止垃圾邮件。 这种方法对于使用不同手机号码批量发送邮件的电脑来说没有帮助。

代码如下所示:

//检查发送次数
$key = "mobile_sms_send_times:" . $mobile . ":" . date("YmdHis");
$smsSendTimes = Yii::app()->redis->get($key);
if (empty($smsSendTimes)) {
    $smsSendTimes = 0;
else if ($smsSendTimes >= 5) {
    $this->_end(1'每个手机号每天最多能发5条短信!');
}

3.短信验证码限制:30分钟内发送相同的验证码

网上还有一个办法:30分钟内,发送的所有邮件验证码都是同一个验证码。 首次请求短信接口,然后缓存邮件验证码结果。 如果30分钟内再次请求,将直接返回缓存内容。 对于这种方法,尚不清楚mailsocket提供商是否会为发送缓存消息付费。 如果您有兴趣,可以了解一下。

部分代码如下:

<?php
//这里判断是否存在短信缓存
if(Cache::get('codeCache') != null){
    //短信30分钟内存在,则继续发同一条短信给用户
    $code = Cache::get('codeCache');
    //接下来把code发给用户的业务操作
    。。。

}else{
    //接收短信验证码
    $code = $this->smsTplTrait()  //假如这里作为接收到短信"562334"
    //将接收到的code存在Cache里30分钟
    Cache::put('codeCache', $code, 30);    
}
?>


4.前端及前端标定:提交Token参数标定

这些方法很少被提及,我个人认为这样的方法值得一试。 后端(客户端)请求发送邮件时,同时向服务器提交一个Token参数,服务器对Token参数进行校准。 校准通过后,通过请求发送邮件的socket向用户手机发送邮件。

5、唯一性限制:Momo产品限制具有相同Momo ID的用户的请求数量

如果是Momo产品php短信发送,可以通过Momo ID来识别。 之后,同一Momo ID的用户在24小时内最多只能发送10封电子邮件。

6、产品工艺限制:分步

例如,对于使用邮箱验证码进行注册的情况,我们将注册步骤分为两步。 用户输入手机号码并设置密码后,下一步就进入验证码验证步骤。

7、图形验证码控制:图形验证通过后请求socket

图形验证码的前后端交互过程比较简单,主要分为以下三个步骤:

1)客户端请求页面时,向服务器发起请求,服务器生成验证码,并将验证码的字符存储到Session中,用于客户端的校验。 同时服务器将生成的验证码图形发送至后端;

2)后端获取验证码图形,渲染并显示在页面上。 用户识别图形验证码后,将验证码的字符提交给服务器;

3)服务器接收到验证码校准请求,将接收到的字符与会话中存储的验证码字符进行比对,并将比对结果返回给后端。

部分后端代码

<p class="form-group col-lg-6"
   <label for="id" class="col-sm-4 control-label"> 验证码: </label> 
   <p class="col-sm-8"
    <input type="text" id="code" name="code" class="form-control" style="width:250px;" /> 
    <img id="imgObj" alt="验证码" src="/article/getValidateCode" οnclick="changeImg()" /> 
    <a href="#" οnclick="changeImg()">换一张</a> 
</p>


后端部分代码

<?php
/**
* 这里是判断获取的code与存在session的code是否一致,一致则进入下一步,发短信验证码
* 1 首先要处理的是前端要获取从后端响应过去的code,所以php后端要有生成验证码的代码,生成session,并且响应给前端用
* 2 前端获取到code后与session做比较
*/


public function checkCode(Request $request)
{
    $code = $request->input('code');
    if($code == SESSION['getCode']){
        //这里就是通过验证码后,接下来发送短信的业务逻辑,根据自己的业务需要把
        $consignee_content = $this->smsTplTrait('consignee_order'1);  //查找短信模板
        $consignee_content = sprintf($consignee_content);
        $this->sendSmsTrait($consignee_content, ''1);  //发送短信
    }else{
        response(['status'=>'0' ,'message' => '验证码有误,无法发送短信']);
    }
}


?>


8. IP和Cookie限制:限制相同IP/Cookie信息的最大数量

使用cookie或IP,您可以轻松识别同一用户,然后限制同一用户(例如,您最多只能在24小时内发送20封电子邮件)。 并且,cookie可以被清除,IP可以被模拟,而且IP也可以在局域网内有相同的IP。 因此,在使用该方法时,应考虑具体情况。

代码如下所示:

//检查IP发送次数
$keyIp = "mobileIp_sms_send_times:" . PublicFunHelper::getIP() . ":" . date("YmdHis");
$smsIpSendTimes = Yii::app()->redis->get($keyIp);
if (empty($smsIpSendTimes)) {
    $smsIpSendTimes = 0;
else if ($smsIpSendTimes >= 20) {
    $this->_end(1'您获取短信验证过于频繁,请稍后再试!');
}


9.短信预警机制,出现问题后做好保护

上述方法可能很难完全避免邮件被盗刷。 为此,我们还应该对电子邮件实施良好的预警机制,即当电子邮件剂量达到一定量时php短信发送,会向管理员发送预警消息,管理员可以立即对电子邮件接口进行监控和保护。



原文链接:

以上就是本文的全部内容,希望各位程序员努力提高个人技能。 最后,小编温馨提醒:每晚读书5分钟,每晚学习一点,每晚进步一点。

点个赞

我们走吧

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php短信发送-【精选】用PHP制作邮件验证码救砖,整理出这个解决方案! https://www.wkzy.net/game/157495.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务