验证码常见安全问题与测试方法汇总

系统使用验证码主要是意图一般有两个个目的,即辅助身份验证(短信或邮箱验证码)和防止攻击者利用自动化脚本恶意攻击网站(数字,图片,视频,行为式等验证码)。

验证码的生命周期

验证码的目的为辅助验证和防止脚本攻击,其生成和销毁的时机以及其是否容易被攻击者猜测和破解是其能否达成设计目的的根本
Step 1:后端识别验证码生成时机,并生成验证码,并设置其失效时机,将验证码返回给用户
Step 2:用户使用验证码进行对应验证操作
Step 3:验证完成后(无论对应验证请求是成功还是失败),验证码销毁,再次使用此验证码进行验证时将作为无效验证码处理
Step 4:到达验证码失效时间后,验证码销毁,再次使用此验证码进行验证时将作为无效验证码处理
以下为验证码设计中常见安全缺陷,在没有特殊标识的情况下,“验证码”指所有验证码

常见问题汇总

验证码由前端生成

验证码由客户端生成是指前端的JS生成验证码并在前端验证,或者将前端生成的样子内容发送给后端工段进行验证,这样的方式并不安全,因为前端的安全性无法保证,攻击者可以篡改JS代码或绕过客户端验证,或固定验证码内容来进行验证码的绕过。

严重程度

测试方法

1、观察在获取验证码过程是否给后端发送请求,并由后端返回验证码信息,如没有给后端发送请求则存在安全问题

修复建议

验证码的生成也验证都应在后端进行
出现阶段:Step 1:后端识别验证码生成时机,并生成验证码,并设置其失效时间,将验证码返回给用户

重复的获取短信验证码

在设计短信验证码时没有对短信验证码的请求频次进行限制,导致攻击者可以利用次特性进行短信轰炸,或耗尽服务资源

严重程度

测试方法

短时间内多次重发获取短信验证码请求,观察响应信息以及短信是否被发送多次,如短信发送多次则存在安全问题

修复建议

1、限制单个IP的验证码获取次数。
2、在获取验证码时增加其他类型验证码,提升重复获取成本
出现阶段:Step 1:后端识别验证码生成时机,并生成验证码,并设置其失效时间,将验证码返回给用户

已被识别的验证码

这个属于最简单的验证码,过于简单、清晰、可识别性高,可以编写程序进行识别,导致验证码防御体系失效

严重程度

测试方法

1、观察验证码有无干扰元素,或干扰元素过少,如下;此类已被识别
![[Pasted image 20231031103512.png]]
在这里插入图片描述
在这里插入图片描述

修复建议

1、增加验证码的复杂性:可以增加验证码的图片干扰元素,例如线条、文字、背景等,以增加OCR识别的难度。
2、限制请求频率:可以限制用户请求验证码的频率,例如每分钟只能请求一次验证码,以防止暴力破解。
3、较为重要的系统建议使用交互行验证码
出现阶段:Step 1:后端识别验证码生成时机,并生成验证码,并设置其失效时间,将验证码返回给用户

验证码明文出现在Response中

获取验证码的请求中,验证码信息明文出现在Response中,攻击者可以直接读取Response中的验证码字段进行下一步的攻击。

严重程度

测试方法

查看获取验证码请求的响应信息,如存在明文验证码信息则存在安全问题

修复建议

验证码不可明文出现在Response中
出现阶段:Step 1:后端识别验证码生成时机,并生成验证码,并设置其失效时间,将验证码返回给用户

验证码可以爆破

由于验证码设置比较简单,可能只有数字或字母组成,也可能是其设定范围有限,导致验证码的数量一共就那么几个,内容可以被猜测。此时服务端未对验证时间、次数作出限制,故存在爆破的可能性。

  • 例:对于4位纯数字验证码:从0000~9999的10000种可能用多线程在5分钟内跑完并不是很难。
    如果验证码组成相对复杂,如6位验证码,或字母与数字组合则爆破难度则很高,导致攻击成本也提升很多,例如6位的纯数字验证码的验证时间为4位纯数字验证码的100倍
严重程度

测试方法

多次尝试获取验证码观察验证码组成,如验证码组成相对简单,如4位纯数字验证码则进行爆破操作,观察后端是否有爆破限制

修复建议

1、根据系统重要程度合理设计验证码负责程度
2、对于验证码构成简单,建议设计防爆破机制
出现阶段:Step 2:用户使用验证码进行对应验证操作

验证码绕过

验证码绕过是指对应验证请求中存在某个控制字段,通过控制该字段的值可以控制是否打开验证码验证功能,攻击者控制了该字段也就验证码的绕过。

严重程度

测试方法

1、检查从请求体是否有除必要验证字段外的可疑字段,尝试分析修改可疑字段观察响应结果,如可以通过控制字段绕过验证码的校验即存在安全问题。
2、检查直接删除验证码字段,请求是否可以成功处理
此处较为有效的方式为使用白盒或灰盒方式审计接口的设计中有无验证码控制字段,通过拦截请求一般较为容易遗漏

修复建议

出现阶段:Step 2:用户使用验证码进行对应验证操作

验证码重用

验证码重用是指,验证码在使用后没进行销毁,导致攻击者可以反复利用验证码进行爆破,从而失去了验证码的真正作用,验证码未失效分为两种情况。

  • 对应验证操作成功后,验证码未失效
  • 对应验证操作失败后,验证码未失效
严重程度

测试方法

1、使用正确的用户密码,输入验证码进行验证,拦截请求进行回放,如两次验证请求均成功则说明验证码存在重用问题。
2、使用错误的用户密码,输入验证码进行验证,拦截请求进行回放,如两次验证请求均成功则说明验证码存在重用问题。

修复建议

验证码在使用后必须进行失效处理
出现阶段:Step 3:验证完成后(无论对应验证请求是成功还是失败),验证码销毁,再次使用此验证码进行验证时将作为无效验证码处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/170617.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《向量数据库指南》——Range Search 使用方法和参数检查

Range Search 使用方法 如需使用 Range Search,只需要修改搜索请求中的搜索参数。接下来我会讲一下的详细使用指南,在指南的最后还提供了 Python 示例代码。 开始前 请确保已安装并运行 Milvus Cloud。请确保已创建 1 个 Collection,并为该 Collection 创建索引。 Ra…

TensorFlow实战教程(二十六)-什么是生成对抗网络GAN?基础原理和代码普及

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章分享了Keras实现经典的深度学习文本分类算法,包括LSTM、BiLSTM、BiLSTM+Attention和CNN、TextCNN。这篇文章将详细介绍生成对抗网络GAN的基础知识,包括什么是GAN、常用算法(CGAN、DCGAN、…

vue2.0中使用v-if/v-show切换后echarts不显示和宽高问题

vue2.0中使用v-if/v-show切换后echarts不显示和宽高问题 需求描述问题描述问题解析 解决方案使用v-show替代(不推荐)v-if使用$nextTick(推荐) 需求描述 使用ehcarts时,请求数据时加loading,请求结束后取消loading并显示…

XmlElement注解在Java的数组属性上,以产生多个相同的XML元素

例如&#xff0c;下面这段XML数据&#xff0c;有多个data元素&#xff0c;并且它们级别相同: <?xml version"1.0" encoding"UTF-8"?><request><reqtype>05</reqtype><secret>test</secret><body><userid&…

【数据结构】【版本2.0】【树形深渊】——二叉树入侵

目录 引言 一、树的概念与结构 1.1 树的概念 1.2 树的相关概念 1.3 树的表示 1.4 树在实际中的运用 二、二叉树的概念与结构 2.1 二叉树的概念 2.2 特殊二叉树 满二叉树 完全二叉树 2.3 现实中的二叉树 2.4 二叉树的性质 2.5 二叉树的存储结构 顺序存储 链式…

掌握源码,轻松搭建:一站式建站系统源码 附完整搭建步骤与教程

随着互联网的快速发展&#xff0c;网站已成为人们生活中不可或缺的一部分。然而&#xff0c;对于许多初学者或中小企业来说&#xff0c;搭建一个完整的网站系统并非易事。这涉及到前端和后端的开发、数据库管理等多个环节。为了解决这一痛点&#xff0c;我们推出了一站式建站系…

Redis变慢怎么办?

一、Redis为什么变慢了 1.Redis 真的变慢了吗&#xff1f; 对 Redis 进行基准性能测试 例如&#xff0c;我的机器配置比较低&#xff0c;当延迟为 2ms 时&#xff0c;我就认为 Redis 变慢了&#xff0c;但是如果你的硬件配置比较高&#xff0c;那么在你的运行环境下&#xf…

synchronized锁膨胀过程

轻量级锁&#xff1a; 使用场景&#xff1a;如果一个对象虽然有多线程要加锁&#xff0c;但加锁的时间是错开的&#xff08;也就是没有竞争&#xff09;&#xff0c;那么可以 使用轻量级锁来优化。 轻量级锁原理 1.创建锁记录&#xff08;Lock Record&#xff09;对象&#…

【前端学java】java中的字符串操作(10)

往期回顾&#xff1a; 【前端学java】JAVA开发的依赖安装与环境配置 &#xff08;0&#xff09;【前端学 java】java的基础语法&#xff08;1&#xff09;【前端学java】JAVA中的packge与import&#xff08;2&#xff09;【前端学java】面向对象编程基础-类的使用 &#xff08…

抖音电商双11官方数据最全汇总!

11月13日&#xff0c;抖音电商数据发布“抖音商城双11好物节”数据报告&#xff0c;展现双11期间平台全域经营情况及大众消费趋势。 报告显示&#xff0c;10月20日至11月11日&#xff0c;抖音电商里的直播间累计直播时长达到5827万小时&#xff0c;挂购物车的短视频播放了1697亿…

PEFT LoraConfig参数详解

参数高效微调 (PEFT) 可以使预训练模型高效适应下游应用&#xff0c;而无需微调所有模型参数。 PEFT 支持广泛使用的大型语言模型低秩适应 (LoRA)。 为了从预训练的 Transformer 模型创建 LoRA 模型&#xff0c;我们导入并设置 LoraConfig。 例如&#xff0c; from peft impo…

数据预处理pandas pd.json_normalize占用内存过大优化

问题描述 从ES下载数据&#xff0c;数据格式为json&#xff0c;然后由pandas进行解析&#xff0c;json中的嵌套字段会进行展开作为列名(由于维度初期无法预测&#xff0c;所以根据数据有啥列就使用啥列&#xff0c;这是最方便的点)&#xff0c;变成表格&#xff0c;方面了后续…

Proxmox download

Proxmox VE proxmox Virtual Environment是一个基于 QEMU/KVM 和 LXC 的开源服务器虚拟化管理解决方案。您可以使用集成的、易于使用的 Web 界面或通过 CLI 管理虚拟机、容器、高可用性集群、存储和网络。Proxmox VE 代码根据 GNU Affero 通用公共许可证第 3 版获得许可 Prox…

Vue typescript项目配置eslint+prettier

1.安装依赖 安装 eslint yarn add eslint --dev安装 eslint-plugin-vue yarn add eslint-plugin-vue --dev主要用于检查 Vue 文件语法 安装 prettier 及相关插件 yarn add prettier eslint-config-prettier eslint-plugin-prettier --dev安装 typescript 解析器、规则补充 …

Redis篇---第十一篇

系列文章目录 文章目录 系列文章目录前言一、说说Redis持久化机制二、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题三、热点数据和冷数据是什么前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章…

gzip 压缩优化大 XML 响应的处理方法

当处理大型XML响应时&#xff0c;我们经常会面临内存限制和性能问题。 在处理这个问题时&#xff0c;我们可以使用Python的requests库和lxml库来解决。下面是解决方案的步骤&#xff1a; 1. 使用requests库发送HTTP请求获取XML响应。 2. 检查响应的Content-Encoding标头&…

这篇文章带你了解:如何一次性将Centos中Mysql的数据快速导出!!!

目录 一.数据库导出 1.首先创建文件以.sql结尾的文件 2.打开名mysq的解压目录&#xff0c;导出数据 3.然后在查看即可 4 需要的软件 MobaXterm 一.数据库导出 1.首先创建文件以.sql结尾的文件 通过 touch ssm.sql &#xff08;小编&#xff09; 实际上&#xff1a…

提升办公效率,畅享多功能办公笔记软件Notion for Mac

在现代办公环境中&#xff0c;高效的笔记软件对于提高工作效率至关重要。而Notion for Mac作为一款全能的办公笔记软件&#xff0c;将成为你事业成功的得力助手。 Notion for Mac以其多功能和灵活性而脱颖而出。无论你是需要记录会议笔记、管理项目任务、制定流程指南&#xf…

以makefile的方式在linux上编译代码(小白级别)

作者&#xff1a;爱塔居 作者简介&#xff1a;大四学生&#xff0c;分享自己的学习片段~ 目录 前言 一、创建主要文件 二、makefile 前言 多有不足&#xff0c;以供参考&#xff0c;欢迎大佬们指点。我是在虚拟机上执行的&#xff0c;应该都一样。我用的VirtualBox&#xff0c;…

第十篇 基于JSP 技术的网上购书系统——管理员后台管理主界面、订单管理、产品管理功能实现(网上商城、仿淘宝、当当、亚马逊)

目录 1.管理员后台管理——主界面 1.1功能说明 1.2界面设计 1.3处理流程 2.订单管理 2.1功能说明 2.2界面设计 2.3处理流程 2.4数据来源和算法 2.4.1数据来源 2.4.2查询条件 2.4.3表间关系 2.4.4相关sql实例 3.产品管理 3.1功能说明 3.2界面设计 3.3处理流程…