小小验证码,作用可真不小!
时间:2022-07-22
本文章向大家介绍小小验证码,作用可真不小!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我们在开发用户登录功能的时候,总是会被要求加一个验证码的功能!那么,为什么要加这个验证码?验证码有什么作用?常见的验证码有哪些?
验证码就是为了增强网站的安全性,防止机器暴力破解。验证码一般都会设置为歪歪扭扭的图片,这样做的目的也是为了增加机器识别的难度。
机器一般会通过枚举法进行匹配验证码,枚举法是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。
为了防止机器暴力破解,验证码一般会有一个过期时间,并且每个验证码只能被使用一次。
设置验证码有效时长:
redisService.setCacheObject(verifyKey, verifyCode, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
每次使用验证码后删除redis:
private void checkCode(String code, String uuid) throws ValidateCodeException {
if (StringUtils.isEmpty(code)) {
throw new ValidateCodeException("图片验证码不能为空");
}
if (StringUtils.isEmpty(uuid)) {
throw new ValidateCodeException("图片验证码已失效");
}
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
String captcha = redisService.getCacheObject(verifyKey);
redisService.deleteObject(verifyKey);
}
IE浏览器下使用GET发送请求时,如果两次请求的地址和参数相同,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容。这也就是为什么我们总会看到验证码请求地址上会增加一个随机数的原因。
https://ip:port?getCode?random = new Date().getTime();
常见的验证码:
- 四位数字,随机的数字字符串,最原始的验证码,验证作用几乎为零。
- 随机数字+字母及干扰像素的图片。
- 滑动拼图(这种方式完全是由前端完成的)。
< END >
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 并发编程之Atomic&Unsafe魔法类详解
- 重温Retrofit源码,笑看协程实现
- 【java设计模式系列】3. 抽象工厂模式(Abstract Factory)
- 解决jar包冲突的简单办法
- 【Java8新特性】01 函数式接口和Lambda表达式你真的会了吗
- 只出现一次的元素
- 【排序】堆排序
- redis灵魂拷问:怎样搭建一个哨兵主从集群
- 是时候给你的鼠标指针更换样式换下风格体验了!如何卸载与安装鼠标指针?
- Linux设置虚拟内存
- SSM 单体框架 - 教育平台后台管理系统:接口文档
- java学习应用篇|使用环境变量做一些工具
- 【Java8新特性】06 新的日期和时间:LocalDate LocalTime LocalDateTime
- UNSAFE和Java 内存布局
- 【玩转Redis面试第1讲】Redis数据结构和常用命令速记