背景:一般网站都会涉及注册、登录、发送邮件、验证码之类的功能,为了方便用户使用手机号注册及找回密码,前段时间增加了发送手机验证码的模块;上线运行也没什么问题。一天偶然查看日志发现验证码发不了了,登录第三方短信平台一看,晕死,某一天联系发送验证码把余额全部耗光了。++
开发:搜索发现了Vaptcha,官网:https://www.vaptcha.com;这个可以免费创建三个验证模块,对应一般网站而言已经足够了,当然其也提供比较多的增值服务。对比了一下自己开发验证码(图片、滑块),觉得这个更好一些
注册,或者使用第三方直接登录,创建验证单元拿到Vid、Key
1、前端导入验证js代码
<script src="https://cdn.vaptcha.com/v.js"></script>
2、将验证模块放入页面展示的位置
<!-- 点击式按钮建议宽度不低于200px,高度介于36px与46px --> <!-- 嵌入式仅需设置宽度,高度根据宽度自适应,最小宽度为200px --> <div id="vaptcha_container" style="width:300px;padding:0px;"> <!--vaptcha_container是用来引入Vaptcha的容器,下面代码为预加载动画,仅供参考--> <div class="vaptcha-init-main"> <div class="vaptcha-init-loading"> <a href="/" target="_blank"><img src="https://cdn.vaptcha.com/vaptcha-loading.gif"/></a> <span class="vaptcha-text">Vaptcha启动中...</span> </div> </div> </div>
3、初始化验证模块
var vid, challenge; $.ajax({ dataType : "json", async : false, url:'/xxx/vaptcha.do?method=getvaptcha',//服务器端接口,返回challenge和vid success:function(data){ vid = data.vid; challenge = data.challenge; } }); var config={ vid : vid, challenge : challenge, container : '#vaptcha_container', type : "click", //必填,表示点击式验证模式 https : false,//协议类型,boolean,可选true,false,不填则自适应。 outage : "www.xxx.com", //服务器端配置的宕机模式接口地址 success : function(token, challenge){//验证成功回调函数, 参数token, challenge 为string, 必填 //执行表单验证失败时,需要重新初始化VAPTCHA //todo:执行人机验证成功后的操作 $("#getyzm").removeAttr("disabled").css({"background-color" : "#12C0FA"}); $("#token").val(token); $("#challenge").val(challenge); }, fail : function(){//验证失败回调函数 //todo:执行人机验证失败后的操作 $("#phone_span").html("验证失败,请重试"); } }; //Vaptcha对象 var obj; window.vaptcha(config,function(vaptcha_obj){ obj = vaptcha_obj; obj.init(); });
4、vaptcha action响应输出token
private Vaptcha vaptcha = new Vaptcha(VaptchaConfig.VID, VaptchaConfig.KEY); public ActionForward getvaptcha(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response){ String challenge = vaptcha.getChallenge(null); this.responseWrite(response, challenge); return null; } /** * response 方式输出信息至客户端 * @param response * @param msg * @throws IOException */ protected void responseWrite(HttpServletResponse response,Object msg) { if(msg == null) return; response.setCharacterEncoding("utf-8"); PrintWriter pw; try { pw = response.getWriter(); pw.write(msg.toString()); pw.flush(); pw.close(); System.out.println(msg); } catch (IOException e) { e.printStackTrace(); } }
5、二次验证
boolean vliStatus = vaptcha.validate(request.getParameter("challenge"), request.getParameter("token"), null); ....自己的逻辑代码
这样就有效防止了某些恶意访问了
更多信息请访问官网:https://www.vaptcha.com/document/install
PS:附件为Vaptcha公共类库
相关推荐
短信验证是常见的两步验证方法,增加了账户安全性,防止恶意登录。 在这个压缩包中,我们可以期待以下知识点: 1. **C#编程基础**:了解C#语言的基本语法和面向对象编程概念,这是使用提供的代码实例的前提。 2. ...
短信防刷: 插件整合了VAPTCHA智能人机验证服务,再也不用担心短信库存被恶意刷爆的风险。 售后无忧: 插件免费,服务不打折,遇到任何问题联系客服获取1对1技术支持。 使用方法 Step1. 下载插件 Step2. 到VAPTCHA...
人体关键点、人体属性、动作捕捉、手势识别项目;易于使用,用于交流学习
7. **发布和使用**:编译完成后,将DLL部署到需要使用它的应用程序的bin目录下,并在应用代码中通过`using`语句引用DLL,实例化`ISmsService`并调用其方法。 此外,对于DLL的使用,要注意安全性,比如避免硬编码...
同时,为了防止恶意注册,需配置人机验证,原文档推荐的是luosimao,但若服务不可用,可以选择VAPTCHA、hCaptcha或极验等其他服务,并修改相关源代码。 4. **主站配置** - **注册邀请码**: 注册邀请码的配置允许你...
Vaptcha_TypechoTypecho的一款人机验证插件,适用于各类Typecho中的表单[如评论等]版本号:1.0.0本插件免费开源,持续更新将插件在/usr/plugins解压,并在后台开启即可我的博客:问题反馈社区:交流群:561848356
数据访问层:Mybatis,mybatis generator。 数据库:MySql。 服务器:内置Tomcat。 前端相关:Jquery,Bootstrap,Ajax,Layer等。 前端模板:LayUI_fly社区模板。 文件上传:腾讯云COS对象存储。 短信验证:极光短信...
尼特社区-NiterForum供初学者,学习、交流使用,喜欢的话,恳请给个star(*❦ω❦)。。完美适配了NiterForum,支持app端扫码登录!尼特社区官方交流群:在线体验技术栈SpringBoot框架。Thymeleaf模板引擎。数据访问层...
京东滑块验证码识别源码,源码调用了精易模块。
核心使用 SpringBoot 2.1.4.RELEASE JWT / 基于Redis单点登录Token交互 任意切换 JPA + Mybatis-Plus 任意切换 操作日志记录方式任意切换Mysql或Elasticseach记录 极简代码生成 只需输入类名和字段 自动创建数据库表...
核心使用 SpringBoot 2.1.9.RELEASE JWT / 基于Redis可配置单设备登录Token交互 任意切换 支持点单登录 JPA + Mybatis-Plus 任意切换 操作日志记录方式任意切换Mysql或Elasticseach记录 Java、Vue、SQL代码生成效率...