短信验证码--小功能如何做到完美
2016-02-20 20:35
429 查看
实践:
一.短信验证码一个简单的功能如何做到好用并不被攻击很难那我们来看看各大网站如何做的呐?
1,猎聘网:
请求url:http://www.liepin.com/user/sendverifymessage?__mn__=newtel
post方式:newtel=15555317458
响应消息体:
成功:
{
"flag":1,
"tel":"15555317458",
"code":"SYS_00200"
}
失败:
总结:前台做了发送时间60秒延时处理,但是只要去掉disabled="disabled"可以连续发送绑定click事件并没有去掉,并且显示倒计时杂乱(多次请求倒计时交替显示),后台没做很容易通过postman类似的工具重复发送,还好做了每天请求的最高次数(应该是IP地址的限制)。
2.京东网:
请求url:https://reg.jd.com/notifyuser/mobileCode?state=&mobile=15555317458&r=0.4345317620318383
响应消息体:
成功:
{"rs":1}
失败:
{"remain":"该手机还可获取1次验证码,请尽快完成验证"}
{"info":"120秒内仅能获取一次短信验证码,请稍后重试"}:我擦倒计时后台还做了校验
总结:前台做了120秒延时处理,并且后台也做了120秒校验(这点貌似不错),还有一点不错,页面中将disabled="disabled"去掉,下一秒秒数刷新会重新加上,另外京东的响应消息都是({"info":"\u65f6\u540e\u91cd\u8bd5"})这种ASCII码,不过京东只做了手机号的次数24小时限制,也就是说一台电脑可以换着任意的手机号进行请求。(这些都可以通过redis简单实现)
3.途牛网
请求url:https://passport.tuniu.com/ajax/sendMobileCode
post方式:tel=18120177459&identify_code=7j79&isReg=1
成功:
{
"success":true,
"errno":0,
"errmsg":"动态口令已发送到手机。",
"data":null
}
失败:
{
"success":false,
"errno":-2,
"errmsg":"验证码输入错误",
"data":null
}
总结:途牛的限制非常简单就是每个验证码对应3次手机校验,过后则需要重新发送校验,页面中也很有意思,途牛前端竟然写了三个显示发送按钮,我冒昧加了注释
总之途牛并没有限制很死,这也是替客户着想。有钱任性。
4.苏宁易购
请求url:https://reg.suning.com/ajax/code/sms.do
Post方式:scen=PERSON_MOBILE_REG_VERIFY_MOBILE&phoneNum=15555317458&uid=6de279cf-5d64-4a99-98a1-35d638a04af8&code=abqw
成功:
{
"returnCode":"R0000",
"returnMsg":"成功",
"lessTimes":"1",
"domainLink":"",
"seqNum":"2"
}
失败:
{
"returnCode":"01002",
"returnMsg":"操作过于频繁,请稍候再试!",
"lessTimes":"",
"domainLink":"",
"seqNum":""
}
总结:苏宁限制比较严ip限制3次
5.淘宝:
淘宝的限制堪比互联网学习典范,很好的做到了安全可靠
一.短信验证码一个简单的功能如何做到好用并不被攻击很难那我们来看看各大网站如何做的呐?
1,猎聘网:
请求url:http://www.liepin.com/user/sendverifymessage?__mn__=newtel
post方式:newtel=15555317458
响应消息体:
成功:
{
"flag":1,
"tel":"15555317458",
"code":"SYS_00200"
}
失败:
总结:前台做了发送时间60秒延时处理,但是只要去掉disabled="disabled"可以连续发送绑定click事件并没有去掉,并且显示倒计时杂乱(多次请求倒计时交替显示),后台没做很容易通过postman类似的工具重复发送,还好做了每天请求的最高次数(应该是IP地址的限制)。
2.京东网:
请求url:https://reg.jd.com/notifyuser/mobileCode?state=&mobile=15555317458&r=0.4345317620318383
响应消息体:
成功:
{"rs":1}
失败:
{"remain":"该手机还可获取1次验证码,请尽快完成验证"}
{"info":"120秒内仅能获取一次短信验证码,请稍后重试"}:我擦倒计时后台还做了校验
总结:前台做了120秒延时处理,并且后台也做了120秒校验(这点貌似不错),还有一点不错,页面中将disabled="disabled"去掉,下一秒秒数刷新会重新加上,另外京东的响应消息都是({"info":"\u65f6\u540e\u91cd\u8bd5"})这种ASCII码,不过京东只做了手机号的次数24小时限制,也就是说一台电脑可以换着任意的手机号进行请求。(这些都可以通过redis简单实现)
3.途牛网
请求url:https://passport.tuniu.com/ajax/sendMobileCode
post方式:tel=18120177459&identify_code=7j79&isReg=1
成功:
{
"success":true,
"errno":0,
"errmsg":"动态口令已发送到手机。",
"data":null
}
失败:
{
"success":false,
"errno":-2,
"errmsg":"验证码输入错误",
"data":null
}
总结:途牛的限制非常简单就是每个验证码对应3次手机校验,过后则需要重新发送校验,页面中也很有意思,途牛前端竟然写了三个显示发送按钮,我冒昧加了注释
<div class="phone_code_div"> //额,刚进来应该显示这个 <span style="white-space:pre"> </span><a href="javascript:void(0);" class="sendToPhone get-code">获取动态密码</a> //发送之后显示这个 <span style="white-space:pre"> </span><a href="javascript:void(0);" class="sendToPhone send-code" style="display:none;"><span>60</span>秒后重新发送</a> //重新发送应该显示这个 <span style="white-space:pre"> </span><a href="javascript:void(0);" class="sendToPhone send-code-again" style="display:none;">重新发送</a> </div>
总之途牛并没有限制很死,这也是替客户着想。有钱任性。
4.苏宁易购
请求url:https://reg.suning.com/ajax/code/sms.do
Post方式:scen=PERSON_MOBILE_REG_VERIFY_MOBILE&phoneNum=15555317458&uid=6de279cf-5d64-4a99-98a1-35d638a04af8&code=abqw
成功:
{
"returnCode":"R0000",
"returnMsg":"成功",
"lessTimes":"1",
"domainLink":"",
"seqNum":"2"
}
失败:
{
"returnCode":"01002",
"returnMsg":"操作过于频繁,请稍候再试!",
"lessTimes":"",
"domainLink":"",
"seqNum":""
}
总结:苏宁限制比较严ip限制3次
5.淘宝:
淘宝的限制堪比互联网学习典范,很好的做到了安全可靠
相关文章推荐
- POJ 2406(后缀数组/KMP)
- eclipse不编译
- Android 中SD卡是否存在以及剩余空间的大小查询
- Maven 清晰介绍版
- UI整理-----part4--UIScrollView
- validate命令---rman进行备份和回复的验证
- ngrok
- JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) ) http://www.open-open.com/lib/view/open1432200119489.html
- java.io.FileWriter class doesn’t use UTF-8 by default
- C++ 回调机制
- 委托
- 加密解密
- 使用docker容器时遇到的2个问题
- 78. Subsets
- 七步理解深度学习
- CSS padding margin输入不同值个数的效果详解
- 习题6-3 UVA 536 Tree Recovery 二叉树重建
- time_t类型的定义
- java http://blog.csdn.net/wike163/article/details/6635321
- URAL 1297(后缀数组/Manacher算法)