图形验证码

一、图形验证码是什么?
图形验证码是一些没有规则的图文的组合,参考下图
在这里插入图片描述
二、图形验证码有什么用?
防止恶意攻击者采用恶意工具批量注册账号或是大量频繁调用某些请求,给服务器造成压力,占用大量的系统资源。
三、图形验证码怎么实现?

(一)后台代码

 // 创建一张图片int width = 120;int height = 25;BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 创建一支画笔Graphics2D graphics = image.createGraphics();// 给画笔添加颜色graphics.setColor(Color.white);// 填充矩形graphics.fillRect(0, 0, width, height);String str = this.getString();HttpSession session = arg0.getSession();// 将字符串存入sessionsession.setAttribute("yzm", str);Random random = new Random();// 根据验证码长度随机画干扰线(颜色随机,位置随机,长度随机)for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);Font font = new Font("微软雅黑", Font.BOLD, 22);graphics.setFont(font);Color color = new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255));graphics.setColor(color);graphics.drawString(String.valueOf(c), 20 + i * 15, 20);int x1 = random.nextInt(width);int y1 = random.nextInt(height);int x2 = random.nextInt(width);int y2 = random.nextInt(height);graphics.drawLine(x1, y1, x2, y2);}// 把图像刷到BufferedImage对象中graphics.dispose();// 将图像写入 File,并指定图片格式ImageIO.write(image, "jpg", arg1.getOutputStream());/*** 生成一个长度为4的字符串(随机包含大写字母,小写字母,数字)* * @return*/public String getString() {Random random = new Random();String str = "";for (int i = 0; i < 4; i++) {int num = random.nextInt(3);switch (num) {case 0:// 数字int number = random.nextInt(10);str += number;break;case 1:// 小写字母int lower = random.nextInt(26) + 97;str += (char) lower;break;case 2:// 大写字母int upper = random.nextInt(26) + 65;str += (char) upper;break;default:System.out.println("error");break;}}return str;}

PS:可将以上代码封装成一个实体类,然后提供一个公开的访问方法,这样更符合Java的封装思想
(二)前台代码(参考)

 <form action="#" method="post"><p>用户名:<input type="text" name="s_Name" /></p><p>密码:<input type="password" name="s_Password" /></p><!-- img标签中src属性值"Code"是生成验证码图形Servlet的名称 --><p>验证码<input type="text" id="yzm" name="yzm" /><img src="Code"onclick="this.src='Code?random='+Math.random()" border="1" id="code" /><a href="javascript:void(0)">看不清?换一张</a></p><p><input type="submit" value="登录" />&nbsp;<input type="reset"value="重置" /></p></form><script type="text/javascript">$(function() {//模拟点击事件,达到切换图形验证码的效果$("p a").click(function() {$("#code").trigger("click");})})</script>

PS:验证码在请求Servlet时应加一个随机参数(如:Math.random()或new Date().getTime()),避免浏览器判断图片请求的地址和参数相同,在不刷新页面的情况下,浏览器默认会缓存第一次请求的内容,导致图片并没有更新
在这里插入图片描述

四、注意事项
一个实际有效的验证码还必须满足:
(1)生成过程安全:图片验证码必须在服务器端进行产生与校验;
(2)使用过程安全:单次有效,且以用户的验证请求为准;
(3)验证码自身安全:不易被识别工具识别,能有效防止暴力破解。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

C语言——数据在内存中的存储(上)

数据在内存中的存储 1. 数据类型的介绍 之前已经介绍过C语言中的基本数据类型了&#xff0c;主要有&#xff1a; char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数 注意&#xff1a;C语言中是是没…

php图形 验证码代码,PHP制作图形验证码代码分享,php图形验证码代码_PHP教程

PHP制作图形验证码代码分享,php图形验证码代码 效果: myvcode.class.php:封装创建验证码的类 /* * file:myvcode.class.php * 验证码类,类名Vcode */ class Vcode {private $width; /*验证码宽度*/ private $height; /*验证码高度*/ private $codeNum; /*验证码字符个数*/ p…

Android图形验证码

1. 前言 图形验证码可以让服务器以图片的形式传给客户端&#xff0c;也可以让客户端自己实现。那客户端要怎么做呢&#xff1f;其实很简单&#xff0c;可以使用Android的Canvas、Paint和Random来实现。用Random来随机生成数字、字母、颜色、画笔原点等等&#xff0c;设置Paint…

java生成图形验证码

随时随地阅读更多技术实战干货&#xff0c;获取项目源码、学习资料&#xff0c;请关注源代码社区公众号(ydmsq666) 首先&#xff0c;需要生成验证码字符串&#xff0c;方式很多&#xff0c;下面提供一种&#xff0c;根据指定源的方式来生成验证码 /*** 使用系统默认字符源生成验…

图形验证码最佳攻略2

下面是注册 如果是手机用户注册,需要发送短信验证码 说明: 发送图形验证码是为了拦截发送短信的.但是不拦截"注册帐号" 但是,用户体验很别扭,因为图形验证码很显然是错误的,但是却可以注册成功. 如果点击注册帐号 ,也要校验图形验证码,那就让用户输入两次图形验证码,…

小程序图形验证码输入校验例子

前言 本教程是基于 “apifm-wxapi” 模块&#xff0c;教你快速实现小程序开发&#xff0c;所以你可能需要先了解以下知识点&#xff1a; 《创建 HelloWorld 项目》《使用 “apifm-wxapi” 快速开发小程序》《免费注册开通后台&#xff0c;获得专属域名》 功能说明 图形验证码的…

Part1:使用 TensorFlow 和 Keras 的 NeRF计算机图形学和深度学习——计算机图形学世界中相机的工作原理

Part1&#xff1a;使用 TensorFlow 和 Keras 的 NeRF计算机图形学和深度学习 1. 效果图2. 原理2.0 前向成像模型2.1 世界坐标系2.2 相机坐标系2.3 坐标变换2.4 投影转换2.5 数据 3. 源码参考 是否有一种方法可以仅从一个场景多张不同视角的照片中捕获整个3D场景&#xff1f; 有…

IDEA+Mysql+Sqlserver安装步骤_kaic

下载Intellij 开发工具&#xff0c;如果有请检查软件是否过期&#xff0c;如果过期卸载电脑上的Intellij软件。卸载步骤&#xff1a; 打开控制面板&#xff0c;选择卸载程序找到Intellij右键卸载 如果没有请保存文档中的Intellij.zip压缩包,进行安装&#xff0c;安装步骤 双…

电脑重置网络

1、键盘WinR键&#xff0c;弹出窗口 2、然后在里面输入cmd输入CMD 3、出现的命令提示框内输入“netsh winsock reset"按”Enter“键 4、重启电脑后生效。

重置电脑

步骤1&#xff1a; 以Win10系统为例 直接在搜索框输入:reset 或者直接选择「设置」-「更新和安全」-「恢复」 步骤2&#xff1a; 步骤3&#xff1a; 根据个人情况选择【保留我的文件】或者【删除所有内容】

如何让Win10 重置此电脑功能无法使用

环境&#xff1a; Win10 专业版 问题描述&#xff1a; 通过设置-更新和安全-恢复-重置此电脑&#xff0c;如何让Win10 重置此电脑功能无法使用 解决方案&#xff1a; 1.PE下删除Win Re 恢复分区&#xff0c;然后重置就无法使用

重置计算机后无法开机,win10重置此电脑失败怎么办_win10重置此电脑失败无法开机修复方法...

当win10系统使用时间长了&#xff0c;难免会有一些电脑故障的出现&#xff0c;这时有些用户就会选择使用重置电脑的方式来解决&#xff0c;但是最近有用户再给自己的win10系统进行重置时总是出现失败的情况&#xff0c;那么win10重置此电脑失败怎么办呢&#xff1f;下面就来告诉…

win10怎么重置计算机,如何重置Win10系统电脑

当系统出现一些难以解决的问题时&#xff0c;我们一般会选择重置电脑来解决问题&#xff0c;比起重装电脑来说简单很多&#xff0c;但是也要注意有可能会失败。下面小编就以win10为例&#xff0c;给大家讲讲怎么重置电脑的操作步骤吧。 操作步骤&#xff1a; 1、打开屏幕侧方的…

DELL 笔记本 - Windows 10 恢复 / 重置此电脑

DELL 笔记本 - Windows 10 恢复 / 重置此电脑 1. Windows 设置 2. 更新和安全 3. 恢复 4. 删除所有内容 5. 所有驱动器 6. 仅删除我的文件 7. 重置 References https://yongqiang.blog.csdn.net/

win10系统如何重置电脑

在win10系统出现系统问题无法修复的时候&#xff0c;我们可以尝试使用win10系统自带的重置功能&#xff0c;相比重装系统在操作上可能要简单不少&#xff0c;不过同样也有失败的风险。下面就让小编带领大家进行一下win10系统重置电脑的操作吧。 win10系统如何重置电脑 1、打…

win10怎样重置电脑

win10怎样重置电脑 windows10提供重置电脑的功能&#xff0c;如果系统遇到问题&#xff0c;运行不正常&#xff0c;或者想刷新系统&#xff0c;可以考虑重置电脑&#xff0c;使电脑有一个全新的干净的系统。下面介绍重置的方法 点击开始菜单&#xff0c;然后选择“设置” 在设…

【教程】Win10重置电脑和重装系统

如果电脑系统出现蓝屏或者卡顿的故障&#xff0c;很多用户会想要通过重装系统来解决。 其实在Windows10系统中会有“重置此电脑”的功能&#xff0c;类似于恢复出厂设置的意思。很多时候只需要重置电脑就足够解决用户的需求了&#xff0c;duck不必繁琐的制作启动U盘来重装系统…

计算机系统如何重置,如何重置电脑系统?看这里1分钟教会你!

原标题&#xff1a;如何重置电脑系统&#xff1f;看这里1分钟教会你&#xff01; 哈喽&#xff0c;大家好我是小黑~最近后台有小伙伴留言咨询#如何重置Windows 10系统&#xff1f;#。 重置系统是Windows系统自带的功能&#xff0c;此功能会将错误的系统文件替换&#xff0c;从而…

Win10笔记本电脑怎么直接重置初始化

很多朋友都知道电子设备一般都会有初始化的功能&#xff0c;自己使用的电脑毛病越来越多&#xff0c;不知道能不能重置初始化&#xff0c;今天我给朋友们讲讲Win10笔记本电脑怎么直接重置初始化让电脑系统焕然一新&#xff0c;大家可以按下面的步骤操作。 Win10笔记本电脑怎么直…

重装也无法修复此计算机,win10系统重置此电脑失败怎么解决

win10系统重置失败怎么办呢?有时候因为电脑各种各样的问题我们需要进行重置系统,可是有些粗心的朋友忘记给笔记本充电了。造成win10系统重置失败的情况。下面,我就给大家介绍一下win10系统重置失败的解决方法 win10系统是微软安全性最高的一款版本,其游戏性能以及易用性也深…