网站首页 > 技术文章 正文
来源:Java旅途
我们在开发用户登录功能的时候,总是会被要求加一个验证码的功能!那么,为什么要加这个验证码?验证码有什么作用?常见的验证码有哪些?
验证码就是为了增强网站的安全性,防止机器暴力破解。验证码一般都会设置为歪歪扭扭的图片,这样做的目的也是为了增加机器识别的难度。
机器一般会通过枚举法进行匹配验证码,枚举法是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。
为了防止机器暴力破解,验证码一般会有一个过期时间,并且每个验证码只能被使用一次。
设置验证码有效时长:
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();
常见的验证码:
四位数字,随机的数字字符串,最原始的验证码,验证作用几乎为零。
随机数字+字母及干扰像素的图片。
滑动拼图(这种方式完全是由前端完成的)。
- 上一篇: 图形验证码验证行式的笔记
- 下一篇: Noptcha:这个浏览器插件说可以破解谷歌验证码
猜你喜欢
- 2025-03-07 RuoYi若依系统的验证码如何替换为更美观的EasyCaptcha
- 2025-03-07 AI工具助力需求规格说明书编写:5步实操指南
- 2025-03-07 Redis的知识点整理
- 2025-03-07 Springboot之登录模块探索(含Token,验证码,网络安全等知识)
- 2025-03-07 程序君带你畅聊发送短信验证码
- 2025-03-07 爬虫验证码分析
- 2025-03-07 Noptcha:这个浏览器插件说可以破解谷歌验证码
- 2025-03-07 图形验证码验证行式的笔记
- 2025-03-07 Vue3问题:如何实现短信验证码登录?前后端!
- 2025-03-07 分享一款漂亮的 C# .Net 图形验证码
你 发表评论:
欢迎- 612℃几个Oracle空值处理函数 oracle处理null值的函数
- 603℃Oracle分析函数之Lag和Lead()使用
- 592℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 589℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 583℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 576℃【数据统计分析】详解Oracle分组函数之CUBE
- 566℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 558℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- PageHelper - 最方便的 MyBatis 分页插件
- 面试二:pagehelper是怎么实现分页的,
- MyBatis如何实现分页查询?(mybatis-plus分页查询)
- SpringBoot 各种分页查询方式详解(全网最全)
- 如何在Linux上运行exe文件,怎么用linux运行windows软件
- 快速了解hive(快速了解美国50个州)
- Python 中的 pyodbc 库(pydbclib)
- Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 故障分析 | MySQL 派生表优化(mysql pipe)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)