手机验证短信设计与代码实现

# 手机验证短信设计与代码实现 >1. 时效限制: [5-10min] >2. 使用次数限制: 1次 >3. IP次数限制: 防止恶意刷手机验证码短信 >4. 手机号限制: 防止短信轰炸 >5. 跨域请求限制: 进一步限制恶意刷短信 >6. 验证码验证: 进一步限制恶意刷短信

操作方法

  • 01

    总体思路 时效限制: [5-10min] 使用次数限制: 1次 IP次数限制: 防止恶意刷手机验证码短信 手机号限制: 防止短信轰炸 跨域请求限制: 进一步限制恶意刷短信 验证码验证: 进一步限制恶意刷短信

  • 02

    数据库设计 (CheckCode) ID mobile(手机号) checkCode(验证码) ip(IP地址) createAt(创建时间) expireAt(时效时间) isUse(是否使用) usingAt(使用时间)

  • 03

    具体代码实现(mongoose + nodejs 代码不完全正确,主要see思路吧) 查询90s内是否发送过,如果存在,需要等待 90-(已发送时间)s var mobile = '155*****111', ip = '127.0.0.1', now = Date.now(); CheckCode.findOne({mobile: mobile, expireAt:{$gt: now}}, function(err, checkCode) { if (err) { //错误了 } else if(checkCode) { var now = Date.now(), diffSeconds = parseInt((now - checkCode.createAt.getTime())/1000, 10); if (diffSeconds < 90) { //时间间隔太小,老弟你刷短信纳是吧,果断拒绝你 } else { checkCode.setIsUsed();  //设置为已经使用过 newCheckCodeByMobile(mobile, {ip:ip}, done); } } else { newCheckCodeByMobile(mobile, {ip:ip}, done); } } 查询手机号码接收次数,如果太多明显要轰炸别人,让我们背黑锅呀 var end = now, begin = now - 24 * 60 * 60 * 1000; CheckCode.count({mobile: mobile, createAt: {$gt: begin, $lt: end}}, function(err, count){ if (err) { //错误 } else if(count >3) { //老大,都给你手机号发3次了还收不到,你是要用短信轰炸别人呢还是真收不到,果断舍弃你这用户把 } else { newCheckCodeByMobile()  // } }); 查询这个Ip发送了多少次了, 如果太多明显是来浪费我们财产来了,短信是要钱的呀老大 CheckCode.count({ip:ip, createAt: {$gt: begin, $lt: end}}, function(err, count){ if (err) { //err } else if (count >6) { //老大,你这个Ip都浪费了我5毛钱了,你还不甘心呀,算了,放弃你了 }  else { newCheckCodeByMobile() // } }); //生成手机验证码 function newCheckCodeByMobile(mobile, options, callback) { if (arguments.length === 2 ) { callback = options; options = {}; } var ip = options.ip; var now = Date.now(), expireAt = now + 60 * 1000 * 5; //5分钟后时效 CheckCode.save({mobile: mobile, ip:ip, checkCode:"123456", isUse:false}, callback); } 限制跨域提交 //渲染页面时 var oldCrsf = "12345679"; req.session._csrf = oldCrsf; //接受提交 var _crsf = req.body._crsf; if (_crsf !== req.session._csrf) { res.send(302); } else { // ok

(0)

相关推荐

  • 手机停机收不到验证短信怎么网上交话费

    这里以农行网上银行为例。将银行k宝插入电脑,弹出农行登录界面,点击“个人网上银行登录”。 点击“k宝登录”。 输入k宝密码。点击“确定”。 进入个人网银,点击左下角的“充话费”。 输入手机号,充值金额 ...

  • 移动手机游戏短信付费通用破解教程

    今天看到高手分享了这样一篇教程,可以破解一些收费移动游戏的短信付费,想学习的可以认真看看哦! 移动手机游戏短信付费通用破解教程 以亡灵杀手为例: 我是在手机上完成破解的,但我在电脑上也分析过。我们用到 ...

  • 如何利用电脑给手机发短信

    根据网上的调查,发现还有很多电脑的新手朋友,还不知道原来电脑是可以给手机发短信的,下面小编将针对“如何用电脑给手机发短信”这一主题给大家详细讲解下怎么利用电脑给手机发短信的方法,感谢兴趣的朋友,可以查 ...

  • 如何使用邮箱给手机发短信?

    如何通过邮箱给手机发送短信呢?坐标来分享. 操作方法 01 一.申请邮箱 首先得有一个邮箱,这里我用的是126的邮箱. 02 二.登录邮箱 申请好后登录进来,找到邮箱中心. 03 三.找到手机邮箱 不 ...

  • 为什么有时手机收不到验证短信,怎么办?

    为什么有时手机收不到验证短信,怎么办?下面就这个话题跟大家一起来说一下. 操作方法 01 首先我想说的是,如果你的手机停机了的话,然后你再续费,虽然是可以打电话了,但是短信你是收不到的,所以你要做的就 ...

  • AcFun一直没有收到验证短信怎么办?

    请确认手机号码填写正确,且信号正常. 若1分钟后依然没有收到验证短信,可以点击重新发送按钮. 若以上两种措施均无效.请发邮件到report@acfun.tv,告知我们,我们来帮您解决.

  • 在京东消费没有收到银行的消费金额只有京东的验证短信怎么回事?

    第一条是验证码,你输入了验证码就说明你同意了这次支付,而且既然你收到验证码后还能完成付款,就说明是你本人付款的或者你本人授权付款的,没有收到银行消费短信可能是银行方面延迟. 还有可能如果你没有在京东消 ...

  • 怎么使用苹果恢复大师恢复iPhone手机的短信附件?

      怎么使用苹果恢复大师恢复iPhone手机的短信附件? 第一步:打开苹果恢复大师,首页界面如下图,点击[开始]. 苹果恢复大师 第二步:点击[短信附件]. 苹果恢复大师 第三步:等待苹果恢复大师扫描 ...

  • 华为手机群发短信方法

    有时候我们会遇到同一条短信要发给很多人的情况,但一条条发又会很麻烦,群发就会方便很多,下面小编就以华为手机为例,为大家介绍具体方法.具体如下:1. 首先打开手机中的"短信".2. ...