手机验证短信设计与代码实现(转载)

news/2024/11/23 8:59:30/

https://my.oschina.net/wanglihui/blog/321101

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

数据库设计 (CheckCode)

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

具体代码实现(mongoose + nodejs 代码不完全正确,主要see思路吧)
  1. 查询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); } } 
  1. 查询手机号码接收次数,如果太多明显要轰炸别人,让我们背黑锅呀
    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() // } }); 
  1. 查询这个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); } 
  1. 限制跨域提交
 //渲染页面时var oldCrsf = "12345679";req.session._csrf = oldCrsf;//接受提交var _crsf = req.body._crsf; if (_crsf !== req.session._csrf) { res.send(302); } else { // ok } 
  1. 验证码限制 (同跨域提交思路)

转载于:https://www.cnblogs.com/feibazhf/p/7250960.html


http://www.ppmy.cn/news/237830.html

相关文章

以技术原理入手从根本上拦截屏蔽解决响一声电话\呼死你\炸你妹\电话轰炸\短信轰炸,远离电话短信骚扰...

现状: 由于目前呼死你(响一声电话/电话轰炸),炸你妹(短信轰炸)骚扰成本极低,恶意者付少量的费就可以去购买电话轰炸机,短信轰炸机对目标实施不间断的骚扰,受害者往往又求助无门,因为找运营商投诉,报警等手段通常都无效,而使用诸如腾讯手机管家、360手机卫士等工具对骚扰…

用python twilio模块实现发手机短信的功能

前排提示:这个模块不是用于对陌生人进行短信轰炸和电话骚扰的,这个模块也没有这个功能,如果是抱着这个心态来的,可以关闭网页了 语言:python 步骤一:安装twilio模块 pip install twilio 步骤二:进入官网注册 https://www.twilio.com 注册完毕之后,会有一个调查,问你准备做什么项…

短信验证码登录需求的坑点整理

随着手机的普及&#xff0c;手机验证码登录需求已经成为一个很常见的需求&#xff0c;但是这么一个看似简单的需求&#xff0c;其实还是有很多坑的。 昨天使用兄弟团队的登录界面&#xff0c;就发现了一些安全问题&#xff0c;在这边整理了一些我的经验和坑点&#xff0c;写下来…

键盘上的整蛊专家,如何防止短信轰炸机

2019独角兽企业重金招聘Python工程师标准>>> "短信轰炸机",是别人通过爬虫或者其他抓取手段在网路上收集那些公司平台短信业务接口的一个集成程序,可能只需要输入一个手机号,对方一整天都会收到各大平台的注册或提醒短信,就是手机在那里响个不停。…

漫谈国内智能手机市场现状

本文纯属一时兴起&#xff0c;想到哪儿写到哪儿&#xff0c;本人文笔也不咋地&#xff0c;写的也比较随意&#xff0c;如有错误欢迎指正&#xff0c;有啥意见欢迎交流。原创文章&#xff0c;转载注明emouse的技术专栏。 我是一个不折不扣的数码爱好者&#xff0c;对电脑手机这些…

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

本文转自:http://my.oschina.net/wanglihui/blog/321101 总体思路 时效限制: [5-10min]使用次数限制: 1次IP次数限制: 防止恶意刷手机验证码短信手机号限制: 防止短信轰炸跨域请求限制: 进一步限制恶意刷短信验证码验证: 进一步限制恶意刷短信 数据库设计 (CheckCode) ID mobil…

折叠屏手机密集轰炸,有人狂热有人Diss,你站谁?...

5G折叠屏元年&#xff0c;手机大战开启。2019年&#xff0c;MWC成了折叠屏密集发布之地&#xff0c;比如2月20日三星发布Galaxy Fold定价13377元&#xff0c;2月24日华为发布Mate X定价17416元。 价格惊世骇俗。 当朋友圈真正形成刷屏效应之后&#xff0c;我们不禁想了解&…

以技术原理入手从根本上拦截屏蔽解决响一声电话\呼死你\炸你妹\电话轰炸\短信轰炸,远离电话短信骚扰

现状&#xff1a; 由于目前呼死你(响一声电话/电话轰炸),炸你妹(短信轰炸)骚扰成本极低&#xff0c;恶意者付少量的费就可以去购买电话轰炸机&#xff0c;短信轰炸机对目标实施不间断的骚扰&#xff0c;受害者往往又求助无门&#xff0c;因为找运营商投诉&#xff0c;报警等手…