`
xitong
  • 浏览: 6203153 次
文章分类
社区版块
存档分类
最新评论

验证码的工作原理

 
阅读更多
验证码通常在输入页面,主要是为了防止无聊人士通过循环提交攻击服务器

验证码的工作机制如下

step1)必须有个生成验证码的冬冬
1.1)验证码的显示
<img src="http://my.${constant.mainDomain}/images/validate.do" width="130" height="20">
1.2)验证码的产生
validate.do通常是个servlet,核心实现如下
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);


HttpSession session = request.getSession();

//产生随机验证码
String validationcode = RandomCodeFactory.generate(4);

// 放入session
session.setAttribute("validationcode",validationcode);

//输出流生成图片
byte[] bytes = ImageGenerator.generateJPEGValidateCode(validationcode,100,20);
response.setContentType("images/jpg");
OutputStream output = response.getOutputStream();
output.write(bytes);
output.flush();
}

step2)action的实现

//片断1 检查验证码,错误则返回到错误页面通常还是本页
ActionContext context = ActionContext.getContext();
String sessionvalidationcode = (String) context.getSession().get(
"validationcode");
if ((validationcode == null)
|| (!validationcode.equals(sessionvalidationcode))) {
return "validate";
}

//。。。。。调用业务逻辑

//片断2 清除session,否则后有漏洞
context.getSession().remove("validationcode");

return Action.SUCCESS;

注意:
1)上面的代码在webwork中实现,webwork相关的代码你无需理会,理解过程完全可以用任何方式实现
2)上面的代码一看就有味道,仅仅为了演示而已。片断1和片断2完全可以放在一个拦截器中实现,这样可以将验证与action本身的冬冬解耦。
分享到:
评论

相关推荐

    短信验证码的内部工作原理.docx

    短信验证码的内部工作原理.docx短信验证码的内部工作原理.docx短信验证码的内部工作原理.docx短信验证码的内部工作原理.docx短信验证码的内部工作原理.docx短信验证码的内部工作原理.docx短信验证码的内部工作原理....

    验证码 生成

    详细描述验证码的工作原理以及开发流程,有源代码

    google验证码.rar

    kaptcha是google开源的一个非常实用的验证码生成工具类,可以...kaptcha的工作原理是调用com.google.code.kaptcha.servlet.KaptchaServlet生成一个验证码,相应给客户端,同时将生成的验证码字符串存到HttpSession中

    unity c#手机短信验证码登陆注册

    发送的验证码内容代码,已写好,直接添加按钮调用即可,无需营业执照,个人可用,无需任何资质,轻松实现短信验证码功能,无需理解底层原理,全部封装好,直接调用即可,已写中文注释,使用c#代码编写,可在任何支持...

    python实现带验证码网站的自动登陆实现代码

    Cookie的工作原理: Cookie由服务端生成,然后发送给浏览器,浏览器会将Cookie保存在某个目录下的文本文件中。在下次请求同一网站时,会发送该Cookie给服务器,这样服务器就知道该用户是否合法以及是否需要重新登录...

    验证码工具类

    kaptcha是google开源的一个非常实用的验证码生成工具类,可以...kaptcha的工作原理是调用com.google.code.kaptcha.servlet.KaptchaServlet生成一个验证码,相应给客户端,同时将生成的验证码字符串存到HttpSession中

    Java Web中随机汉字扭曲验证码的实现.pdf

    介绍验证码的工作原理,讨论了目前验证码存在的问题,提出了在java Web中实现随机生成扭曲中文验证码的方法和具体的实验过程。

    浅谈验证码的识别技术

    验证码识别这项工作不适合浮躁的人,它需要足够的技术和耐心。由于此技术的特殊性,任何一个被公开识别技术的验证码都会很快地失效,相关网站都会很快地更换验证码。所以本文只介绍最简单的验证码的识别和识别原理。

    Android获取短信验证码的实现方法

    无论是用户注册时的信息验证还是当用户发出找回密码请求时的短信验证,他们的工作原理大致上是一致的,因为项目的需要研究了一下关于这方面的知识,本篇我将带领大家一起实现这一当下流行的设计方案。 众所周知,...

    一篇不错的关于java工作流方面讲解及代码

    2.3.1 JSP的运行原理 7 2.3.2 JSP的生命周期 8 2.3.3 Servlet和JavaBean技术介绍 8 2.3.4 Java 虚拟机 9 2.3.5 JSP访问SQL Server 2000数据库 9 2.4 数据库后台环境配置 10 2.5 系统开发工具简介 10 2.5.1 ...

    验证码生成

    kaptcha 是一个非常实用的验证码生成工具。有了它,你可以生成各种样式的...kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.KaptchaServlet,生成一个图片。同时将生成的验证码字符串放到 HttpSession中。

    Kaptcha开发简单实例

    kaptcha工作的原理是调用com.google.code.kaptcha.servlet.KaptchaServlet,生成一个图片。同时将生成的验证码字符串放到HttpSession中。 kaptcha可以配置一下信息: 验证码的字体 验证码字体的大小 验证码...

    Android中新引进的Google Authenticator验证系统工作原理浅析

    Robbie在其GitHub页面发布了自己用Go语言实现的版本,并撰写了一篇博文来解释其工作原理。 通常来讲,身份验证系统都实现了基于时间的一次性密码算法,即著名的TOTP(Time-Based One-Time Password)。该算法由三部分...

    Android自定义Chronometer实现短信验证码秒表倒计时功能

    主要原理:先设置一个基准倒计时时间mBaseSeconds,内置handler 每隔1s发送一个空消息,mRemainSeconds–,同时刷新界面视图,回调给外部调用者,只到为零。外部调用者可通过start()/pause()/stop()来控制计时器的...

    java实现工作流

    2.3.1 JSP的运行原理 7 2.3.2 JSP的生命周期 8 2.3.3 Servlet和JavaBean技术介绍 8 2.3.4 Java 虚拟机 9 2.3.5 JSP访问SQL Server 2000数据库 9 2.4 数据库后台环境配置 10 2.5 系统开发工具简介 10 2.5.1 ...

    cutchas:在绕过验证码的同时学习Javascript,Typescript和Python:smiling_face_with_sunglasses:

    对验证码逻辑进行模糊处理,了解其工作原理等。 用Express编写后端 用React编写前端 Python / Jupyter笔记本: 编写脚本以尝试绕过验证码 SQLite: 存储所有难题(不再存在) MongoDB的 现在用来存储一切 :...

    captcha-decoder:用python编写的基本验证码解码器

    该项目的目的是(a)使bboyte的代码更易于访问,并且(b)以可读的方式说明验证码破解的基本原理。 它的主要目标是清晰,不会对效率,准确性或实用性提出任何要求或尝试。 这项工作是@boyter 的原始工作的衍生, ...

    omxbaltic-evk-scraper:使用OCR解决验证码

    多功能刮板机 ...一般工作原理 使用多重模糊+阈值消除验证码噪声 使用清除的图像作为真实验证码的蒙版 使用opencv轮廓分离字符 使用ocr或某些ML算法进行字符识别 去做 抓取更多样本图像 使至少80%的测试通过

    网络爬虫原理.zip

    爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP...

Global site tag (gtag.js) - Google Analytics