臭名昭著的手机验证码功能是如何实现的

点击▲关注 “爪哇笔记”   给公众号标星置顶更多精彩 第一时间直达

前言

现在基本上各种手机APP注册都会用到手机验证码,包括一些PC端网站也会使用手机号作为唯一标识验证!

恰巧,小明的老板,让其开发一个用户注册的功能,并且强制用户注册绑定手机,美其名曰为了提升安全性,呵呵哒,就是为了多撸一点用户信息。

案例

一般来说,发送手机验证码不能过于频繁,前端发送按钮点击后一般会有一个60秒倒计时的功能。也就是说,如果用户点击发送一直没有收到验证码,只能60秒之后才可以进行重发。

那么问题来了,如果用户绕过前端,直接向后台API发送短信请求,然后写个无限循环脚本,相信不久你的短信账户就会发来预警提示短信(一般来说大的短信商都有预警设置功能)。

其实很简单,你只需要F12,查看发送请求就可以查找出后台请求地址,然后你可以在控制台输入相关JS代码,执行个十万遍,是不是很爽?

这里以七牛云为测试案例,打开注册页面,F12进入调试模式,输入手机号,手动点击发送,获取其短信发送后台请求地址。下面是七牛云的一个短信发送请求,撸主测试了一下,显然没有达到撸主的预期,毕竟是大厂,防御措施还是做的很牛逼的。

以下是JS脚本,复制粘贴到控制台回车就可以执行:

var data = {"operation":1,"is_voice":false,"mobile_number":"17762018888","captcha_type":2};
for (var i = 0; i < 10; i++) {$.ajax({type: 'POST',contentType: 'application/json;charset=UTF-8',data:JSON.stringify(data),url: 'https://portal.qiniu.com/api/gaea/verification/sms/send',success: function(data) {console.log(data)}});
}

控制台返回以下信息,前三次请求成功,后面的就出现了验证码校验并进行了限流操作。

{"code":200,"message":""}
{"code":200,"message":""}
{"code":200,"message":""}
{"code":7209,"message":"captcha required"}
{"code":7209,"message":"captcha required"}
{"code":429,"message":"too many requests"}
{"code":429,"message":"too many requests"}
{"code":429,"message":"too many requests"}
{"code":429,"message":"too many requests"}
{"code":7209,"message":"captcha required"}

撸主尝试刷新页面,随便输了一个手机号,再次点击发送,提示用户输入验证码,显然是加强了防备,触发了恶意请求认证拦截机制。

安全机制

对于开发者来说,他们不仅要考虑用户正常获取验证码的体验还要考虑短信接口的安全性,撸主总结了以下几点,希望对大家有所帮助。

  • 验证码尽量保证短小精悍,四到六位即可。

  • 后台请求限流,对单位时间内发送频率做限制。

  • 一定要设置验证码失效时间,比如五分钟,或者更短。

  • 监控日发送短信数量,触发一定的阈值做相应的处理,根据实际业务需求。

  • 如果后台不做限制,切记前台一定要做个倒计时的限制,至少过滤一部分小白用户。

  • 验证码机制,不要一开始就限制验证码,体验及其不友好,触发限流以后开启验证码。

  • 验证码存储一定要保证key为手机号,切记不要以其它标识作为key,比如sessionId

代码案例

给小伙伴分享一个简单的验证码生成、存储、失效代码案例:

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;public class Mobile {/*** 测试方便,这里设置了3秒失效*/private static LoadingCache<String, String> caches = CacheBuilder.newBuilder().maximumSize(1000).expireAfterWrite(3, TimeUnit.SECONDS).build(new CacheLoader<String, String>() {@Overridepublic String load(String mobile) {return "";}});public static void main(String[] args) throws ExecutionException, InterruptedException {Integer code = (int)((Math.random()*9+1)*100000);caches.put("17762018888",code.toString());System.out.println(caches.get("17762018888"));Thread.sleep(4000);System.out.println("是不是没了:"+caches.get("17762018888"));}
}

小结

重要的功能必须进行前后端校验,必要的时候一定要做好限流、黑名单等骚操作!!!

牛逼哄哄的前后端分离如何安全的鉴权

SpringBoot 2.x的前后端分离商城系统

SpringBoot 2.x+Shiro开发的权限管理脚手架

SpringBoot 2.x炫酷吊前后端分离的后台管理

Spring Cloud 的企业级前后端分离微服务框架

Spring Cloud 前后端分离架构的权限管理系统

▲一个有温度的公众号,期待与你一起进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/71629.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安全机制之手机移动端验证码炸弹处理策略

验证码炸弹处理策略 依据现有软件运行情况分析:用户登陆时忘记密码&#xff0c;需要通过短信验证码的方法登录。由于恶意用户或异常伙伴服务的存在&#xff0c;当系统发生各种故障和错误或受到攻击和侵害(被验证码炸弹袭击)时&#xff0c;系统往往无法正常工作&#xff0c;进而…

技术人员需要了解的手机验证码登录风险

手机验证码登录是一种常见的应用登录方式&#xff0c;简单方便&#xff0c;不用记忆密码&#xff0c;市面上能见到的APP基本都支持这种登录方式&#xff0c;很多应用还把登录和注册集成到了一起&#xff0c;注册登录一气呵成&#xff0c;给用户省去了很多麻烦&#xff0c;颇有一…

某浪新闻APP之登录验证码下发短信另类分析

前言 我又来了。今天的主角是某浪新闻APP 工具 fiddler&#xff08;抓包工具&#xff09;Drony&#xff08;习惯用了&#xff0c;不用去手机设置里面填写代{过}{滤}理地址和端口。。&#xff09;jadx-gui&#xff08;反编译app&#xff09;root环境&#xff08;我这是另类的…

【大数据AI人工智能】图文详解 ChatGPT、文心一言等大模型背后的 Transformer 算法原理

论文 Attention is All You Need 中推荐了 Transformer 。 The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and …

最强AI导师指令:一个Prompt让ChatGPT秒变金牌辅导,从小学生到博士后,让你1天学会1个月的知识!

原文&#xff1a;最强AI导师指令&#xff1a;一个Prompt让ChatGPT秒变金牌辅导&#xff0c;从小学生到博士后&#xff0c;让你1天学会1个月 视频&#xff1a;https://www.douyin.com/video/7236548869855792440 你可能看过无数个自媒体人讲解该如何写好一个ChatGPT指令&#…

AIGC消息天天不断,到底什么是AIGC?

最近&#xff0c;AIGC领域的新消息可以说是日新月异&#xff0c;今天国外某IT大佬推出一个新模型&#xff0c;明天国内某大厂推出一个新平台。 说来说去&#xff0c;到底什么是AIGC呢&#xff1f; AIGC的全称是AI Generated Content&#xff0c;也就是利用人工智能技术自动生成…

验证码库 Captcha的使用以及遇到的问题解决

https://blog.csdn.net/u012896330/article/details/75669828 在使用验证码进行验证时, 三处需要注意(setting中的配置,url中的路由,models文件中的字段要有capture)

青瓷引擎问答集锦(一)

青瓷引擎自15年12月中旬正式发布以来&#xff0c;获得了很多开发者小伙伴的支持和认可&#xff0c;大家在使用过程中&#xff0c;也遇到了一些问题&#xff0c;我们将这些问题收集整理出一些比较典型的与大家分享&#xff0c;希望能和大家一起进步。 一. 问&#xff1a;青瓷引擎…

C语言/C++常见习题问答集锦(二十四)

C语言/C常见习题问答集锦(二十四) 程序之美 1、编写一个函数判断一个整数是否左右对称数&#xff0c; 要求函数为&#xff1a;fun&#xff08;long n&#xff09; 要求在主程序中输入一个整数&#xff0c;如果该数对称&#xff0c;输出“YES”否则输出“NO” int fun(long n)…

C语言/C++常见习题问答集锦(四)

C语言/C常见习题问答集锦(四) 程序之美 1、c语言分别用 while 语句、do-while 语句编写程序&#xff0c;计算 e≈11/1&#xff01; 1/2&#xff01; …1/n&#xff01;精度为10-5&#xff0c;输出e和总项数 #include <stdio.h>int main() {int i,t;double sum;for(i0,t…

Edge集锦没有同步按钮 - 待解决

问题 日期&#xff1a;2023年4月6日 2023年2月份左右&#xff0c;更新Edge后&#xff0c;集锦的同步选项消失了&#xff0c;右键标签页也没有添加到集锦的选项&#xff0c;如下图。 详细说明此问题&#xff0c;Edge一旦登录个人账号&#xff0c;集锦同步选项就会消失&#…

ANSYS使用中错误集锦问答

问题&#xff1a;ANSYS 2020 R1安装后&#xff0c;fluent打开报错 按照网上的教程装好ANSYS 2020R1。打开Fluent还是报错。报错内容如下&#xff1a; ANSYS LICENSE MANAGER ERROR:Could not connect to any license server. The server is down or is not responsive. ANSY…

C语言/C++常见习题问答集锦(十一)

C语言/C常见习题问答集锦(十一) 程序之美 一、 【问题描述】 给定两个字符串s和t&#xff0c;请判断s是否是t的子序列。即从t中删除一些字符&#xff0c;将剩余的字符连接起来&#xff0c;即可获得s。 【输入形式】 包括若干个测试数据。每个测试数据由两个ASCII码的数字和…

JVM知识问答集锦

JVM知识问答集锦 JVM结构与机制 JVM类加载

QMT的获取行情函数get_market_data与get_market_data_ex区别

#encoding:gbkimport pandas as pd import numpy as np import talibdef init(ContextInfo):stock_code_list[] #股票代码列表stock_code_listContextInfo.get_stock_list_in_sector(沪深A股) #获取沪深所有A股#遍历A股所有股票&#xff0c;打印输出for i in stock_code_list:l…

算力网络价值场景和市场机遇探讨

本文首发《中兴通讯技术&#xff08;简讯&#xff09;》&#xff0c;2022年第9期&#xff0c;作者&#xff1a;中兴通讯高端交流团队部长 左罗&#xff0c;中兴通讯高端交流团队综合方案总工 袁越。边缘计算社区经过授权发布&#xff0c;以下为正文&#xff1a; 从经济角度看&a…

抖音直播带货数据复盘怎么做?如何复盘提高直播间转化率?

日销百万的直播间&#xff0c;每天都会做直播复盘。 现在虽然有很多人都在做直播&#xff0c;但是大部分直播运营都不会做直播复盘&#xff0c;还有很多的主播不会看直播数据。 如果你不会看数据&#xff0c;也不懂怎么做直播复盘&#xff0c;你就不知道你直播间哪里做的好&a…

两市高开低走

两市高开低走 2021-11-29 股市理性投资 价值投资看人性 两市高开低走&#xff0c;对于在周末的消息&#xff0c;很多都是延续到周一才会释放&#xff0c;A股市场就是这样&#xff0c;最近有些投资者都会担心市场会下跌到3500的大关或下探到3400&#xff0c;作为我不太喜欢这样…

基于ChatGLM-Med与HuaTuo的微调部署

文章目录 ChatGLM-Med推理过程微调过程 HuaTuo配置环境模型下载推理过程微调过程 如何基于领域知识对类ChatGPT模型进行微调&#xff0c;以提升类ChatGPT模型在领域的问答效果&#xff1f; 有下面两个模型&#xff0c;一起来看看微调后的效果如何。 ChatGLM-Med: 基于中文医学知…

IM——直播互动场景

上面的存在一个问题是&#xff0c;在普通的聊天场景中&#xff0c;为了进行精准投递避免资源浪费&#xff0c;一般会维护一个中央的在线状态&#xff0c;在逻辑层在确定好投递的接收人后&#xff0c;通过这个在线状态查询对应接收人所在的网关机&#xff0c;然后只需要把消息投…