前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小小验证码,作用可真不小!

小小验证码,作用可真不小!

作者头像
Java旅途
发布2020-08-04 17:14:30
4420
发布2020-08-04 17:14:30
举报
文章被收录于专栏:Java旅途Java旅途

我们在开发用户登录功能的时候,总是会被要求加一个验证码的功能!那么,为什么要加这个验证码?验证码有什么作用?常见的验证码有哪些?

验证码就是为了增强网站的安全性,防止机器暴力破解。验证码一般都会设置为歪歪扭扭的图片,这样做的目的也是为了增加机器识别的难度。

机器一般会通过枚举法进行匹配验证码,枚举法是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。

为了防止机器暴力破解,验证码一般会有一个过期时间,并且每个验证码只能被使用一次。

设置验证码有效时长:

代码语言:javascript
复制
redisService.setCacheObject(verifyKey, verifyCode, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);

每次使用验证码后删除redis:

代码语言:javascript
复制
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发送请求时,如果两次请求的地址和参数相同,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容。这也就是为什么我们总会看到验证码请求地址上会增加一个随机数的原因。

代码语言:javascript
复制
https://ip:port?getCode?random = new Date().getTime();

常见的验证码:

  • 四位数字,随机的数字字符串,最原始的验证码,验证作用几乎为零。
  • 随机数字+字母及干扰像素的图片。
  • 滑动拼图(这种方式完全是由前端完成的)。

< END >

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java旅途 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档