【总结】Java实现短信验证码

宙哈哈
• 阅读 359

背景

Java是一种流行的编程语言,验证码是一种常用的网络安全技术。Java发展至今,网上也出现了各种各样的验证码,本人初学Java,下面是我用Java实现短信验证码的总结。

截图展示

【总结】Java实现短信验证码

实现代码

后台接收前台的kgCaptchaToken进行验证,验证成功执行成功处理,验证失败返回错误代码及信息。

package com.kyger;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

public class demo extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public demo() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    // 编码
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");;
    response.setContentType("text/html; charset=utf-8");

    // 后台处理
    if (request.getMethod().equals("POST")){
        String html, appId, appSecret, Token;

    // 设置 AppId 及 AppSecret,在应用管理中获取
    appId = "appId";
    appSecret = "appSecret";

    // 填写你的 AppId 和 AppSecret,在应用管理中获取
    KgCaptchaSDK KgRequest = new KgCaptchaSDK(appId, appSecret);


    // 前端验证成功后颁发的 token,有效期为两分钟
    KgRequest.token = request.getParameter("kgCaptchaToken");
    // System.out.print(KgRequest.token);

    // 填写应用服务域名,在应用管理中获取
    KgRequest.appCdn = "https://cdn.kgcaptcha.com";

    // 请求超时时间,秒
    KgRequest.connectTimeout = 5;

    // 用户登录或尝试帐号,当安全策略中的防控等级为3时必须填写,一般情况下可以忽略
    // 可以填写用户输入的登录帐号(如:request.getParameter("username"),可拦截同一帐号多次尝试等行为
    KgRequest.userId = "kgCaptchaDemo";

    // request 对象,当安全策略中的防控等级为3时必须填写,一般情况下可以忽略
    KgRequest.request = request;
    // java 环境中无法提供 request 对象,请分别定义:clientIp|clientBrowser|domain 参数,即:
    // KgRequest.clientIp = "127.0.0.1";  // 填写客户端IP
    // KgRequest.clientBrowser = "";  // 客户端浏览器信息
    // KgRequest.domain = "http://localhost";  // 你的授权域名或服务IP        

    // 发送验证请求
    Map<String, String> requestResult = KgRequest.sendRequest();
    if("0".toString().equals(requestResult.get("code"))) {
        // 验签成功逻辑处理 ***

        // 这里做验证通过后的数据处理
        // 如登录/注册场景,这里通常查询数据库、校验密码、进行登录或注册等动作处理
        // 如短信场景,这里可以开始向用户发送短信等动作处理
        // ...

        html = "<script>alert('验证通过');history.back();</script>";
    } else {
        // 验签失败逻辑处理
        html = "<script>alert(\"" + requestResult.get("msg") + " - " + requestResult.get("code") + "\");history.back();</script>";
    }        

    response.getWriter().append(html);
    } else {
        response.sendRedirect("index.html");
    }        
}

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
    }

}

后端检测

后台接收数据,同时对来源及应用进行检测。

# 服务器黑名单检测
if self.auth.client_blacklist():
    return self.r_code(20017)  # 服务器黑名单

# 验签次数限制检测
excess = self.auth.excess(2)
if excess:
        return self.r_code(code=[20020, 20021, 20022][excess - 1])

# 来路域名检测
if not self.kg["HTTP_REFERER"]: return self.r_code(20004)  # 域名不合法,无法获取来路域名
if not self.auth.domain_auth(): return self.r_code(20005)  # 来源域名未授权

# 应用有效时间检测
validity = self.auth.app_validity()
if validity[0] == 1: return self.r_code(20006)  # 授权未开始
if validity[0] == 2: return self.r_code(20007)  # 授权已结束

if self.auth.app_state(): return self.r_code(20008)  # 当前应用/域名被禁用

结尾

SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/

点赞
收藏
评论区
推荐文章
不是海碗 不是海碗
1年前
验证码短信API的应用场景有哪些你知道嘛?
短信验证码已经影响到了我们生活方方面面,成为了不可或缺的一部分。同时,短信验证码也是用户体验中的一个重要指标,如果手机经常出现接收验证码很慢甚至是没有接收到验证码的情况,这就会严重影响到网站或者APP的用户体验,从而导致大量用户的流失。短信验证码如此重要,那个短信验证码API也是必不可少的,这篇文章我就来说说短信验证码API的应用场景
宙哈哈 宙哈哈
1年前
【干货】验证码的常见类型总结
验证码是一种区分用户是计算机和人的公共全自动程序。简单来说,验证码就是验证操作是人还是机器。下面我就总结一下常见的验证码类型都有哪些?
宙哈哈 宙哈哈
1年前
PHP短信验证码防刷方案
短信验证码是通过发送验证码到手机的一种有效的验证码系统。利用短信验证码来注册会员,大大降低了非法注册的数据。
Wesley13 Wesley13
2年前
.Net中验证码图片生成
开发网站或平台系统,登录页面是必不可少的功能,但是现在很多人可以使用工具暴力破解网站密码,为了防止这类非法操作,需要在登录页面添加验证,验证码就是最常用的一种验证方式。我结合了自己的经验和网上的验证码资料,总结一下c验证码开发,直接放代码,文中有注释,可以轻松理解代码意思。功能:实现了打开登陆页面是生成验证码图片以及点击验证码时,刷新验证码功能,验
不是海碗 不是海碗
10个月前
语音验证码短信原理和应用场景分析
引言随着移动互联网的快速发展,短信验证码成为了许多应用和服务中常用的身份验证方式。然而,有时候用户可能由于各种原因无法接收到短信验证码,或者对于文字验证码不够方便或友好。为了解决这些问题,语音验证码短信API应运而生。该API提供了语音验证码服务,通过拨打
曼成 曼成
1星期前
验证码短信API接入 Demo 示例
验证码短信API是一种广泛应用于各类应用中的安全验证服务,它通过发送短信验证码到用户手机,以确保操作的安全性和真实性。本文将为您提供一个简单的验证码短信API接入的示例,帮助您快速理解和实现该功能。
马尚 马尚
5天前
验证码识别与破解:从原理到实战
验证码是网络安全中常用的一种机制,旨在确认用户是人而不是机器,防止恶意程序对网络资源的滥用。然而,随着计算机视觉和机器学习技术的发展,验证码的破解变得越来越普遍。本文将介绍验证码的常见类型、识别原理,并利用Python实现验证码的识别与破解。验证码类型常见
宙哈哈 宙哈哈
1年前
KgCaptcha接入汇总
最近有在用一款好玩的验证码产品,乐于探索的我,决定从不同的语言去探索这款验证码。KgCaptcha支持PHP、Python、Java、C的接入。下面是我接入过程记录中的代码。
不是海碗 不是海碗
11个月前
验证码短信 API 接入指南:Java 语言示例代码
短信验证码是一种通过短信发送的验证码,通常用于验证用户的身份、保障账户安全和防止恶意攻击等。短信验证码已经成为现代社会中不可或缺的一部分,广泛应用于各种场景,包括用户注册和登录、找回密码等等。为了满足企业在账户安全验证和业务发展方面的需求,验证码短信API
贾迎春 贾迎春
11个月前
Java行为验证码
Java是一种流行的编程语言,验证码是一种常用的网络安全技术。Java发展至今,网上也出现了各种各样的验证码,本人初学Java,下面是我用Java实现短信验证码的总结。