您现在的位置是:首页 > Javascript
当前栏目
小小验证码,作用可真不小!
2023-03-15 22:35:51 时间
我们在开发用户登录功能的时候,总是会被要求加一个验证码的功能!那么,为什么要加这个验证码?验证码有什么作用?常见的验证码有哪些?
验证码就是为了增强网站的安全性,防止机器暴力破解。验证码一般都会设置为歪歪扭扭的图片,这样做的目的也是为了增加机器识别的难度。
机器一般会通过枚举法进行匹配验证码,枚举法是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。
为了防止机器暴力破解,验证码一般会有一个过期时间,并且每个验证码只能被使用一次。
设置验证码有效时长:
- 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();
常见的验证码:
- 四位数字,随机的数字字符串,最原始的验证码,验证作用几乎为零。
- 随机数字+字母及干扰像素的图片。
- 滑动拼图(这种方式完全是由前端完成的)。
本文转载自微信公众号「Java旅途」,可以通过以下二维码关注。转载本文请联系Java旅途公众号。
相关文章
- TiDB Binlog 组件正式开源
- 使用Visual Studio Code对Node.js进行断点调试
- 推荐!数据可视化的十种优秀JavaScript图表库
- Node.js在复杂集成场景下占据统治地位的五个理由
- 玩转Node.js单元测试
- Node.js中内存泄漏分析
- Angular对React:一场关于Web开发者支持率的史诗对决
- 热点推荐:什么是后端开发?
- 谈谈Spring boot 启动层面的开发
- 使用NodeJS将文件或图像上传到服务器
- 编写React组件的最佳实践
- JavaScript MV*框架最值得关注的七个亮点
- 前端开发指南:如何利用PHP Cake框架构建应用
- 基于React与Vue后,移动开源项目Weex如何定义未来
- NodeJS和C++之间的类型转换
- jQuery中的常用到的三十九个技巧
- 官宣|Google Developers中国网站发布!
- NodeJS和C++之间的类型转换
- .NET Core首例Office开源跨平台组件(NPOI Core)
- 如何写出漂亮的React组件