安全扫描问题记录

294 阅读1分钟

用户登录后 cookie 中 SESSION 未发生变化

登录前 Request 携带 cookie 中 SESSION ,登录成功后未重新设置 cookie,后面的请求仍是该 SESSION,安全隐患是攻击者利用该SESSION,做非法操作

image.png

image.png

代码优化

//登录
public void login(){
    //用户校验
    validateUser();

    //登录成功后创建用户session
    createSession();
}
private void createSession(){
    //先通过Spring获取HttpServletRequest 
    HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();

    //refresh JSESSIONID cookie after login
    //获取旧的sesssion
    HttpSession sessionOld = request.getSession(false);
    if(sessionOld != null && !sessionOld.isNew()){
        //旧session失效
        sessionOld.invalidate();
    }

    //get new session, set user attribute
    //设置新的session
    HttpSession session = request.getSession(true);
    session.setAttribute(SESSION_USER_ID,user.getUserId());
}

登录成功后刷新 SESSION,并刷新浏览器SESSION

image.png