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

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

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

[[335800]]

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

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

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

设置验证码有效时长:

  1. redisService.setCacheObject(verifyKey, verifyCode, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); 

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

  1. private void checkCode(String code, String uuid) throws ValidateCodeException { 
  2.     if (StringUtils.isEmpty(code)) { 
  3.         throw new ValidateCodeException("图片验证码不能为空"); 
  4.     } 
  5.     if (StringUtils.isEmpty(uuid)) { 
  6.         throw new ValidateCodeException("图片验证码已失效"); 
  7.     } 
  8.     String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; 
  9.     String captcha = redisService.getCacheObject(verifyKey); 
  10.     redisService.deleteObject(verifyKey); 

IE浏览器下使用GET发送请求时,如果两次请求的地址和参数相同,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容。这也就是为什么我们总会看到验证码请求地址上会增加一个随机数的原因。

  1. https://ip:port?getCode?random = new Date().getTime(); 

常见的验证码:

 

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

本文转载自微信公众号「Java旅途」,可以通过以下二维码关注。转载本文请联系Java旅途公众号。

 

责任编辑:武晓燕 来源: Java旅途
相关推荐

2013-06-19 10:19:59

2015-03-23 17:58:04

验证码倒计时并行

2021-01-19 10:29:34

短信验证码密码

2017-12-21 07:38:19

2015-09-21 15:31:05

php实现验证码

2022-02-11 07:10:15

验证码

2020-11-16 07:28:53

验证码

2009-08-11 14:05:28

JSP验证码

2009-02-09 14:17:36

2019-06-18 07:12:25

验证码漏洞加密

2011-11-02 16:46:41

2015-03-17 09:28:04

2011-11-02 12:43:33

2022-01-20 10:54:23

移动手机短信验证码隐患

2009-12-11 15:17:52

PHP验证码调用

2009-12-16 15:46:41

Ruby on rai

2016-11-08 19:19:06

2016-11-03 13:33:31

2020-12-29 05:33:03

Serverless验证码架构
点赞
收藏

51CTO技术栈公众号