验证码不过期,没有及时销毁会话导致同一验证码反复可用
利用burp一直重放进行测试,验证码不更新。如果一直不更新验证码,会导致攻击者一直枚举账号密码,直到成功为止。
一般验证码都是利用session来存储当前验证码,前端from标签提交验证码到后,servlet会利用当前session存的验证码于用户输入的验证码进行对比。
request.getSession().setAttribute("CHECKCODE_SERVER",checkCode);
servlet进行校验
//2.获取数据
String verifycode = request.getParameter("verifycode");
String checkcode_server = (String)request.getSession().getAttribute("CHECKCODE_SERVER");
//进行验证码校验
if (!verifycode.equalsIgnoreCase(checkcode_server)){
//验证码错误
request.setAttribute("checkimgerror","验证码错误");
request.getRequestDispatcher("/login.jsp").forward(request,response);
return;
}
因为在校验后,没有将session域共享中验证码删除,所以导致会话一直被利用。
在获取session域中储存后,直接将验证码销毁即可
//销毁
request.getSession().removeAttribute("CHECKCODE_SERVER");
要分清楚你是用seesion共享域还是requests共享域
requests域销毁代码为:
如有侵权,请联系删除
推荐阅读