验证码及登录中的漏洞分析

进行这个整理,是因为在XXX项目的时候,发现登录模块的忘记密码功能,在验证用户身份的时候是通过手机验证码验证的。通过修改响应包的返回参数值,可以绕过验证,进入第三步的密码重置。还有最近测试的一个sso登录,也存在验证码问题。

之前的测试中也遇到过类似的验证码绕过的漏洞,所以对验证码绕过方法进行一个总结,以及关于登录模块可能会存在的逻辑漏洞进行一个小整理。

其实,会出现验证码的地方,也就是校验用户身份处,比如,登录、忘记密码、注册、绑定、活动领取、反馈处等。而登录模块中可能存在的逻辑漏洞,无非就是用户枚举、任意用户密码重置,当然认证绕过也是逻辑漏洞,这个我们暂且放在验证码里面。


绕过短信验证码的方法以及例子

通过修改响应包的返回值绕过

这种是用户端根据返回的值,来确定是否进行下一步。比如发送成功返回state的值是success,失败是false,然后客户端根据state的值,来确定下一步的动作。这样,我们可以通过修改响应包,绕过验证。

例1

比如忘记密码处:第二步中,对用户的身份进行短信验证,可通过修改响应包,将error换为ok即可绕过身份验证,到设置密码处。

例2

注册处,验证手机验证码处,通过修改响应包,或替换为自己的手机号,绕过验证码的限制,造成使用他人手机号进行注册。

例3

有些登录也存在类似的问题,随便输入账号密码,拦截返回的响应包,将包替换为A账号正确的登录返回的响应包(前提是,A账号的cookie是有效的),即可登录到A账号。这种也是客户端,根据响应包的值,来决定下一步动作。

服务端未对身份做校验

这种比较少,因为算是功能问题,在验证身份时,未对答案进行校验。就是随便输入,就能进入下一步。

例4

忘记密码处,第二步中,选择其他方式找回,通过密保找回,未对密保答案进行验证,随便输入答案,即可跳转到设置密码处。

验证码置空绕过验证

短信验证码处,随便输入其他,验证码错误,而置空却不校验,则可以通过置空绕过

例5

我的==>登陆==>短信验证码登陆登陆时抓包把code(验证码字段)值置为空,即可登陆任意账户

发送短信时,将手机号替换为自己的手机号获取验证码

当修改别人的信息时,需要短信认证时,在发送短信时,我们可以尝试,将手机号替换为自己的,来获取短信验证码。如果服务端只是检查验证码是否正确,而不是进行手机号和验证码匹配的话,或者只是匹配发送短信手机号和验证码,我们就可以绕过认证。

例6

忘记验证码,验证身份时,在发送短信时,拦截,将手机号替换为我们自己的,发送。然后再输入得到验证码,验证,如果此时只是验证码验证码是否正确,即可绕过。

但是,若验证发送手机号和验证码是否匹配时,我们可以在填好验证码,提交时,拦截,将手机号再次改为我们自己的,即可绕过。

允许一次给多个手机号发送短信,获取验证码

在给手机发送短信验证码时,比如phone=13211111111,我们同时向多个手机号发送短信,用逗号隔开,即phone=13211111111,13233333333,可发送成功。所有手机收到相同的验证码,后面在验证验证码时,如果可以匹配成功的话,即可绕过验证码。另外,这样可以向大量手机号发送,造成费用增加。

例7

注册处,在获取短信验证码时,抓包将mobilePhone的值改为多个手机号,并用逗号分隔,可成功多个手机号发送短信验证码。

短信验证码太短,爆破绕过

有的短信验证码位数太短,采用4为纯数字的短信验证码作为登录认证的凭证,这样若是没有对次数限制或存在图形验证码的话,就很容易采用工具进行爆破验证码登录。

例8

重置密码处根据短信验证码,是否正确来确定是否能修改成功,而且验证码是四位纯数字的,可以进行爆破。code=4935&mobile=18556530793&pwd=123456a

利用接口标记绕过短信限制

注册、忘记密码、修改密码处,均存在发送短信验证,可能会设置参数值的不同,来判断是执行什么样的功能。比如type=1是注册,type=2是忘记密码,type=3是修改密码等。我们可以通过修改参数值,来绕过一分钟内只发送一次限制,达到短信轰炸的目的。

例9

注册页面处,URL/public/getPhoneVerifyCodeWithCheckPicVerCode正常逻辑是验证图片验证码,正确后,再发送手机验证码。将请求修改为/public/getPhoneVerifyCode,从而绕过图片验证码的验证机制。

例10

注册页面处,发送短信验证码处,可以结合上例中的绕过图形验证码的机制,发现smsType的值,不同时,可以绕过180秒限制。可以遍历修改smsType的值,从而造成短信炸弹。

例11

注册,在发送手机验证码或邮箱验证码处,r=2时,连续发送验证码,会提醒“重新输入验证码”,说明验证了图形验证码。但是r=5时,可以发送成功,连续发送时,提醒“一分钟内不允许多次发送”。

仅有一分钟内不允许多次发送验证码限制,但是并未对图形验证码进行校验,可以通过甚至频率,使其,两分钟发送一次,同样可以造成短信/邮箱轰炸。

例12

绑定手机号处,正常的发送短信的URL是sendSMS4Mobile,尝试修改URL,是否存在其他发送接口。经过不断尝试,sendSMS接口同样可以发送短信。

利用空格绕过短信条数限制

通过在参数值的前面加上空格,进行绕过一天内发送次数的限制。比如,mobile=13211111111,一天可以发送10次,超过10次今天将不再发送,第二天才可以继续发送。但是,可以通过在手机号前面或后面加上空格又可以发送10次。比如,mobile= 13211111111,前面加个空格,就可以再次发送成功。

通过修改cookie值绕过短信次数

有些发送短信的次数是根据cookie值进行判断,(此cookie值并不是登录状态下的cookie而不是普通状态下的),利用当前cookie值来验证发送次数的话,很容易被绕过。

例子https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=27614

之前有个登录账号密码错误三次,就会出现图形验证码。但是当关闭浏览器,重新打开,再登录,又会有三次机会,当时,芦浩分析得出是根据cookie判断的,然后通过,不断获取新的cookie,来绕过三次限制,进而进行账户密码枚举。

http://wiki.iflytek.com/pages/viewpage.action?pageId=128550855

修改IP绕过短信/邮箱轰炸

有些是验证当前IP,如果当前IP短时间内获取短信或邮件频繁或达到一定的次数,会锁定当前IP,这时可以尝试通过修改IP或代理IP来进行绕过限制

利用大小写绕过邮箱轰炸限制

有时候验证码是发送到邮箱的,可以通过修改邮箱后面字母的大小写绕过限制。比如:email=@qq.com,当次数达到限制时,将字母修改为大写:email=@Qq.com,即可绕过。

修复建议:

1、服务端对验证码进行校验,短信验证码应该根据用户存在数据库中的手机号收到的验证码进行匹配验证。

2、增加复杂的图形验证码,且一次性有效

3、限制一天内发送的上限


用户枚举

在验证用户身份的时候,或判断用户是否已注册时,若验证码处理不当、或错误提醒明确,都可能存在用户枚举。

缺乏/未验证的图形验证码,造成用户枚举

例1

忘记密码处,首先验证用户身份,虽然此处有图形验证码,但是,图形验证码不刷新,即不是一次有效,通过拦截请求,发现,并未对验证码进行验证。可以进行用户枚举

 

例2

手机验证码登录处,在校验手机号是否是已注册的手机号时,绑定的手机号和未绑定的手机号,返回的响应包不同,而且未增加图形验证码校验,可对已绑定的手机号枚举。

例3

忘记密码处,图形验证码参数为imageValidCode,重复放包时,发现,验证码是一次有效的,经过尝试,发现删除imageValidCode参数,可以绕过验证码的验证机制,从而进行用户枚举。爆破已注册的账号。

提醒明确,造成的用户枚举

一些错误,提醒明确,比如登录时,输入账号、密码,均错误的情况下,提醒账号错误;账号正确、密码错误时,提醒密码错误,从而可以进行枚举。

例4

登录处,输入错误的账号,会提醒用户不存在;错误的密码,会提醒密码不正确。可根据提示,进行用户、密码枚举。

例5

关联账户绑定==>切换账户处,根据loginname的值,返回对应账号的绑定的手机、邮箱等个人信息。当loginname为不存在的账号时,响应包为“操作失败”,而且请求包中,仅有loginname这一个参数,可以对其进行用户枚举。

 

例6

在密码修改功能,会验证原始密码和账号的正确性,账号、密码都正确时resCode=00100000,账号错误resCode=00100001,msg为空。账号正确,密码错误时,msg提醒原始密码错误。可以进行枚举其他账号、密码。比如,可以枚举密码为1111的账号。

修复建议:

1、 模糊提醒

2、 增加复杂的图形验证码,对于登录后可能存在的枚举,增加token,且一次性有效

3、 限制请求频率,错误一定次数,锁定账号一段时间


任意用户密码重置

造成任意用户密码重置,主要发生在修改密码、忘记密码处,在逻辑上处理不严谨造成的。比如,忘记密码处,先验证身份,验证通过才允许密码重置,前面验证很严谨,不能绕过,但是第三步不严谨,比如仅根据账号来进行密码重置,那就很可能存在任意用户密码重置。

例1

忘记密码处,最后一步更新新密码处,通过抓包,发现仅是根据账号进行密码修改,那么修改account为任意存在的账号,就可以修改任意账号的密码。

修复建议:

逻辑上要严谨,不能说前面校验现在要重置密码的人是A后,就认为后面的操作都是A的。还是要进行校验确认的。


附录

https://www.anquanke.com/post/id/93878

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
* 添加复制时版权提示 * 禁止站内相互pingback * 修复置顶文章后显示错误 * 修复因PHP7+ 而导致class.tgm.php的标题错误 * 修复默认小工具CSS显示问题 * 添加 手机端底部友情链接**v1.20_local_shenyun** * 以下版本为神韵博客(https://51shenyun.cn) 基础于Alatelee(http://agatelee.cn)的修改* 添加评论算数验证码 * 添加侧边栏缓存 使其静态 减少数据库查询 /更新周期1小时 可在sidebar.php修改 * 优化SEO修改在首页时logo为h1标签 文章时标题为h1标签 logo为h2标签 * 优化SEO为head添加canonical标签 利于收录 * 移除预获取DNS 加快加载速度 * 移除更多无用head头 更加简洁**v1.11_local** 修改了显示bug, * 自定义表情支持 * 修改了all.js * 手机上点击评论表情dropdown无法弹出 * ipadmini2纵向放置出现了mobile-menu无法触发 * 桌面浏览器缩小窗口出现了mobile-menu无法出发 * 关于页面IOS移动设备可以触发hover事件 * 显示微信二维码 * 使用https方式获取gavatar头像,避免被墙 **v1.10_local** 更正了logo分辨率、将代码的tab替换为4个空格**v1.09_local** 自定义表情支持,评论表情选择**v1.08_local** Alatelee(http://agatelee.cn)修改版* 关于页面功能增加 * 404页面功能增加 * 增加了分页面 * 本地化 * 替换了首页logo * 替换了默认图片 * 备案号 * 对于置顶的文章显示全文 * 重新设计了404页面 ![](public/images/404.png) * 增加了表格样式 * 增加了代码样式 * 增加了友情链接页面 * 增加了关于页面**v1.06** 牧风原版
记事狗微博系统是一套创新的互动社区系统,其以微博为核心,兼有轻博、SNS和BBS特点,既可用来独立建站也可通过Ucenter和oauth接口与已有网站无缝整合,通过微博评论模块、关注转发机制打通全站的信息流、关系流,可大幅度提高网站用户活跃度和参与度,是新时代网站运营不可或缺的系统。记事狗微博系统采用php mysql开发并开源发布,可承载千万级用户,其支持Wap、3G、Android客户端、iphone客户端、短信、微信等多种方式发布内容,并可选择同步到主流的微博平台(也支持微博帐户登录),内置的插件和API体系,让功能扩展更容易、让应用开发更简单。 记事狗微博系统 4.7.4 Build 20140922 GBK 新版主要变化: 新增开源API接口代码 新新增两栏模板(后台》界面》模板风格 进行切换) 新新增皮肤一套t22 新增找回密码时加上最大10次错误尝后就终止的功能,防止暴力破解修改密码,加强安全性 新增设置Cookie时加上httponly参数,加强安全性 新增后台设置登录状态的Cookie时加上IP参数,加强安全性 新增IOS客户端消息推送的功能 新增对附件外部存储空间的直接物理删除 新增前台频道页显示该频道的管理员名单 新增一级频道管理员可管理下属二级频道的功能 新增在3g和wap的介绍页面自动显示网站自身的二维码地址(不需要再生成然后通过FTP替换了) 新增iPhone和Android手机客户端下载地址可通过扫描二维码实现下载(更加方便的实现下载到手机了) 新增后台可设置附件型 修复网站安全问题(感谢 秒杀@360 、 合肥滨湖虎子@360 的反馈) 修复发布某些字符的微博时提示内容为空的BUG 修复某些网站会出现sid is invalid提示的问题 修复运行环境下模板编译出错提示信息暴露网站物理路径的问题 修复邮件发送机制 修复系统关闭了注册功能后,弹窗页面仍然显示注册的问题 修复快速登陆与注册页验证码显示的问题 修复积分兑换推送信息,不受重要动态是否开启限制(但只显示于积分兑换页) 修复有奖转发与活动里的内容过滤问题 修复自定义添加顶部导航时左侧导航没有显示的问题 修复有奖转发后台不能编辑的问题 修复有奖转发页面右侧推荐的描述和链接错误问题 修复未登录状态下,快捷登录弹框后,页面框架冲突的问题 修复是否开启验证码的判断 修复评赞文字的描述 修复后台用户V认证分上传图标时修改了后辍名的问题 修复本周常赞我的人描述 修复快速注册不进入引导步骤的问题 修复取消转发时添加表情仍然保留“转发”字样的问题 修复本站链接解析时图片地址出错的问题 修复个人资料页面自我介绍的问题 修复有奖转发添加时有可能SQL注入的问题 修复微群头像修改问题 修复广场首页后台自定义缓存时间 修复删除用户后粉丝关系仍然存在的问题 修复上传图片后,点击确定或保存按钮时没有反馈信息提示的问题 修复频道管理员给予前台相应的操作权限(编辑、删除、推荐微博等) 修复评论与转发微博时,上传附件不显示的问题 修复未认证的用户显示认证图标的BUG 修复V认证为空时显示空[]号的问题 修复登录后的默认首页跳转问题 修复后台话题管理时推荐话题后出现的乱码和配置错误问题 修复后台配置导航时只能在窗口打开的BUG 修复微信BUG(无发微博命令时,执行发布空内容微博指令。微博是否发布成功,判断方法错误) 修复升级时用户名重复时出现的登录注册失败的BUG问题 修复验证码刷新时有时候会出现空白的问题 修复注册页面有时会出现“正在验证 undefined 的。。。”提示信息问题 修复username即网站个性域名/空间地址不能登录的问题 修复某些环境下上传附件提示大小或格式不对的问题 修复某些环境下admin的个人主页无法访问的问题 修复某些环境下UC用户无法登录的问题 修复ie7左侧导航栏左边距问题 修复某些情况下点击左侧赤羽千夫膳“我的首页”出现循环跳转的BUG 修复某些网站升级上来时样式错乱的BUG 修复皮肤样式的显示问题 调整侧边滚动部分 调整侧边栏重要动态部分 调整投票详情页面的显示 调整有奖转发页面JS加载提示数据 调整有奖转发前台无法编辑和转发用户列表分页链接错误 调整访谈顶部自定义图片 调整侧边重要动态滚动部分的显示 调整我关注人的图片微博的样式由原来的3列到4列 调整快捷登陆与注册代码,统一网站的登录为快捷登录,统一网站的注册为快捷注册 调整动态提醒后台的设置说明文字 调整瀑布流页面的样式 调整频道页面的样式 调整快捷登录标题背景 调整导航左侧的样式宽度 调整有奖转发活动在不同状态下的提示信息 调整手机版,IE7部分BUG 调整赞我的和我赞的页面 调整评论我的和我评论的页面 调整图片墙页面的样式 调整皮肤样式使其统一 调整部分模板文件样式 调整部分广告位尺寸和显示 调整我关注人分组的显示 调整侧边模块的显示样式 调整附件,发布框图片的显示样式 其他的多项优化,包括修复安全漏洞、完善模板和风格结构等
PHP云人才系统(PHPYun)是专为文用户设计和开发,程序源代码100%完全开放的一个采用PHP和MySQL数据库构建的高效的人才与企业求职招、聘解决方案,在尊重版权的前提下能极大的满足站长对于网站程序进行二次开发。 PHPYUN人才招聘系统 5.0.1 Beta 更新日志:2020-07-03新增:好友助力;新增:网络招聘会;新增:身份切换控制开关;新增:PC端城市、职位搜索目录式伪静态;新增:职位描述样本;新增:聊天套餐;新增:店铺招聘按天收费;新增:手机端注册增加隐私政策等内容(针对最新政策文件);优化:CRM整体业务流程;优化:简历创建、职位创建相关选项;优化:城市、职位分关键字自动匹配;优化:增值服务、赠送优惠券引导提醒;优化:手机端简历创建后下一步引导;优化:PC端会员心职位管理;优化:前台简历搜索展示;优化:企业基本信息地图设置;优化:招聘会展示;优化:老版本手机端职位做301跳转;优化:OSS开启本地不再预存图片文件;优化:百聘职位默认60天结束期;优化:公告增加到期时间;优化:微信模板消息点击自动登录会员心;优化:后台数据统计按当月时间统计(原始默认30天);修复:后台目录修改导致后台图片无法上传;修复:后台分配站点偶尔无法展示;修复:友情链接添加后不显示;修复:数据调用简历排序规则;修复:首页赏金职位链接错误;修复:企业环境展示排序;修复:后台营销邮件推广发送问题;修复:取消GIF图片强制压缩;修复:激活企业身份,套餐查询错误;修复:分站域名信息配置不当导致无法进入后台;修复:企业导出下载简历姓名显示问题;修复:手机端快速投递简历 验证码提示问题;修复:简历创建教育完善度判断;修复:手机端附近职位大小写错误;修复:手机端急聘标志错位;修复:后台简历导入工作性质、到岗时间问题;修复:后台招聘会搜索企业错误;修复:快速投递简历未按照后台设置默认为未审核状态;修复:招聘会预留场地问题;修复:手机端分站SEO显示问题;修复:后台举报简历列表分页错误;修复:手机端置顶简历排序问题;修复:公众号内点击菜单浏览我的企业名称不显示;修复:IE11兼容性问题;修复:微信登录绑定失败;修复:专题报名问题;修复:广告添加优化;修复:邮箱认证失败;修复:海报小程序生成问题;修复:统计代码标签替换;修复:职位发布型错误导致错误提示;修复:调整*号过滤符;修复:手机端资讯更多展示问题;修复:部分服务器环境导致图像裁剪失效;修复:积分转换的问题;修复:补充职位付费自动刷新;修复:后台数据统计相关问题;修复:PC端快速投递简历 弹出新窗口;修复:行为日志查询错误;修复:商城头像显示问题;修复:UC整合注册无法获取积分;修复:手机端未创建简历情况下显示问题;修复:聊天相关问题优化修复;修复:一些UI问题;修复:部分兼容性问题。 
注意:网站效果以演示站为准,需要安装SG11扩展(支持PHP5.6-7.3) 更新说明: 07.22: 新增积分付费模式,设置视频积分后不管是不是会员都要求积分付费才能观看 值修改为两种模式,直接充值VIP和充值积分,充值后VIP自动到账,取消积分兑换会员模式 更改注册赠送VIP天数功能,后台可填写注册赠送天数,与注册赠送积分互不影响,不再使用积分自动兑换会员 新增登录,注册验证码,快捷操作栏,新增充值赠送积分,充100积分送100积分填2,100送50填1.5,仅充值积分。会员充值赠送积分按照 金额*积分 比例进行赠送 03.31: 修复主题设置错误调用代码,增加全站免费模式(开启后全站免费观看),增加积分购买视频页面等 可以下载完整包进行更新或者下载替换包替换对应文件即可 新增:易支付通用接口,手机端弹窗,充值后自动升级VIP,注册赠送VIP等 修复会员心到期时间,卡密兑换问题,以及头部显示 此次版本使用V10 1099版本支持站群,支持数据库挂马检测等,player.js使用开源 源码模板名称:麻豆源码#MDYS07,苹果CMS V10_快猫视频_二开苹果cms视频网站源码模板_可封装双端APP 适用程序:苹果cmsv10 兼容性和面向场景: 1、Windows 平台: IIS/Apache + PHP(5.6 +) + MySQL(5.5 +) 2、Linux/Unix 平台: Apache + PHP (5.6 +) + MySQL(5.5 +) 使用苹果cmsv10版二次开发,程序具有极好的稳定,安全,高性能等优点! ============================== 基本介绍: 1. 后台增加自定义参数,对应会员升级页面 2. 视频,演员,专题,收藏,会员系统模块齐全 3. 直接指定一个分下视频为免费专区 4. 完整的卡密支付体系,无人看管,无需挂码。 5. 三个播放界面,未注册会员、普通注册会员,VIP会员看到的播放界面提醒都不一样 6. 模板PC+WAP,可以完美打包APP 7. 除了网站LOGO,自定义的广告等,其他界面均无需特别设置,只要有采集接口即可轻松运营网站 ============================== 二开功能: 1. 后台自带主题设置 2.自带开屏广告,可在后台控制开关,以及时间 3.直接指定一个分下视频为免费专区 4.VIP以及免费视频以及积分付费独有标识 5. 模板整体弹窗提示更换,使用更好美观的layer弹窗提示 6. 卡密充值修改字段,不需要再输入卡号+卡密的方式进行充值,只需要卡号即可充值 7. 可添加播放前广告 8. 可添加播放器暂停广告 9. 可添加播放器右上角水印 10. 可添加前置视频广告,支持MP4及M3U8格式
以下是使用 JSP 页面实现验证码登录的示例代码: 1.创建一个Controller: ```java @Controller public class LoginController { private static final String SESSION_KEY_CHECKCODE = "checkCode"; @GetMapping("/login") public String login() { return "login"; } @PostMapping("/login") public String login(String username, String password, String checkCode, HttpSession session, Model model) { // 验证码校验 String checkCodeSession = (String) session.getAttribute(SESSION_KEY_CHECKCODE); if (!checkCode.equalsIgnoreCase(checkCodeSession)) { model.addAttribute("errorMsg", "验证码错误"); return "login"; } // 用户名和密码校验 if ("admin".equals(username) && "123456".equals(password)) { // 登录成功 return "redirect:/success"; } else { // 登录失败 model.addAttribute("errorMsg", "用户名或密码错误"); return "login"; } } @GetMapping("/checkCode") public void checkCode(HttpServletRequest request, HttpServletResponse response, HttpSession session) throws IOException { // 定义图片宽、高 int width = 100; int height = 50; // 创建 BufferedImage 对象,设置图片大小和型 BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // 获取 Graphics2D 对象,用于绘制图形 Graphics2D graphics2D = img.createGraphics(); // 设置背景色 graphics2D.setColor(Color.WHITE); graphics2D.fillRect(0, 0, width, height); // 设置字体 graphics2D.setFont(new Font("宋体", Font.BOLD, 20)); // 随机生成 4 位验证码 StringBuilder sb = new StringBuilder(); Random random = new Random(); for (int i = 0; i < 4; i++) { int num = random.nextInt(10); sb.append(num); graphics2D.setColor(new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255))); graphics2D.drawString(String.valueOf(num), i * 20, 30); } // 将验证码存入 session session.setAttribute(SESSION_KEY_CHECKCODE, sb.toString()); // 释放 Graphics2D 对象 graphics2D.dispose(); // 将验证码图片输出到浏览器 ImageIO.write(img, "JPEG", response.getOutputStream()); } @GetMapping("/success") public String success() { return "success"; } } ``` 2.创建一个login.jsp页面: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>验证码登录</title> </head> <body> <h2>验证码登录</h2> <form method="post" action="/login"> <label for="username">用户名:</label> <input type="text" id="username" name="username"/><br/> <label for="password">密码:</label> <input type="password" id="password" name="password"/><br/> <label for="checkCode">验证码:</label> <input type="text" id="checkCode" name="checkCode"/> <img src="/checkCode"/><br/> <input type="submit" value="登录"/> </form> <div style="color: red">${errorMsg}</div> </body> </html> ``` 3.创建一个success.jsp页面: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登录成功</title> </head> <body> <h2>登录成功</h2> </body> </html> ``` 4.运行代码,在浏览器访问 "http://localhost:8080/login" 即可看到验证码登录页面。 注意:此示例仅包含基本的验证码登录功能,实际应用需要添加身份验证、安全性等方面的特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值