调试用户登录时验证码必须填写完整及正确吗?
文献种类:专题技术文献;
开发工具与关键技术: VS
作者: 卢媛媛 ;
撰写时间:2019 年 4月 05 日
在各大app中都会有“登录”的模式,主要是为了检验安全性(每个人使用的动态码不唯一)从而提升用户体验;
验证码的作用:有效防止这种问题对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上是用验证码是现在很多网站通行的方式(比如招商银行的网上个人银行,腾讯的QQ社区),我们利用比较简易的方式实现了这个功能。虽然登陆麻烦一点,但是对社区还来说这个功能还是很有必要,也很重要。
1.为什么比较容易破解用户名和密码简单的用户!
验证码在每一次刷新的过程中,就会更换为其他的数字,没有任何规律,如果没有填写验证码或验证码不正确,系统也不用去和数据库中比对密码,直接返回;
2.验证码为什么既不是图片也不是数字?
道理很简单,如果是图片或是数字,通过查看源代码或者别的方法,可以获得验证码的信息,改进暴力破解程序后,仍然可以进行暴力破解。验证码是根据程序随即生成的,是用程序计算出来的信息显示在页面上。
3.需要实现登录必须有用户和密码再加上动态验证码,如果有需求就再加权限登录即可 ;

此时我并没有输入正确的验证码信息,而是随意书写(字母数字都可以),接下来我们提前到控制器断点进行调试查看结果

4. 看图我们看第一行为用户,第二行则为密码,接下来是验证码及“记住否”这个涉及到session和cookie一个服务器和浏览器,看图断点把鼠标的光标移动到获取值上可知获得值为“null”(空);
6. 判断填入的验证码和session中的验证码是否一致,sessionValiCode是自命名为验证码,判断申明的值传过来是否与其保持一致,去空格主要是方便传到浏览器视图,InvariantCultureIgnoreCase是避免输入验证码是区分大小写(无需强制大小写)

里显示的值与页面中验证码一致说明传过来到控制器中信息是正确的;但是继续执行下去会发生什么呢?

显然可想而知肯定报错登录失败,那么有什么方法可以解决呢?

那么在后面加上一句代码,
||是或者的意思,true为真,
在一般情况下控制器的状态默认为false,所以只需要加上这么一句简单地代码即可;
接下来我们继续执行然后查看结果,遇到bug报错再修改,

答案很明显了已经可以登录并且成功了,这里如果写了主页面可以加上一个页面跳转就OK?
本文深入探讨了验证码在用户登录过程中的作用与实现方法,解释了验证码如何提高网站安全性,防止暴力破解,并介绍了如何通过动态验证码确保用户登录的安全。
3078

被折叠的 条评论
为什么被折叠?



