拿着键盘当钢琴的博客

怀着一颗工匠之心的小学生

用户登录成功后重新获取Session

漏洞修复:Session会话登录前后无变化问题

这个漏洞意思是说用户登录系统前后Session变化,就是JSESSIONID没有改变


所以要在用户登录成功后在Filter(拦截器)或者登录Action里加入以下代码:

HttpServletRequest request = ServletActionContext.getRequest();
//获取旧Session
HttpSession session = request.getSession(false);
System.out.println("------------>旧session:" + session.getId());
//清空session
session.invalidate();
//重新获取session
session = request.getSession(true);
System.out.println("------------>新session:" + session.getId());
//将登录的用户保存到新Session
session.setAttribute(SysProperties.LOGIN_OBJECT, loginObject);

打印结果:

------------>旧session:45E48C020751A402A5AE5B7FDEC41B5A
------------>新session:EDE76FBC7D9DBF7CABC0ED025B350131
这里要说的重点是request.getSession()参数True和False的区别:
request.getSession(true):若存在会话则返回该会话,否则新建一个会话。

request.getSession(false):若存在会话则返回该会话,否则返回NULL。

这里还有一个题外话,就是如果清除Cookie:

//获取cookie
Cookie cookie = request.getCookies()[0];
//让cookie过期
cookie.setMaxAge(0);
不过清除Cookie后要及时新建Session,否则会报错。



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenjy28/article/details/79947652
个人分类: Java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

用户登录成功后重新获取Session

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭