51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1820|回复: 0
打印 上一主题 下一主题

JSP用AppScan安全扫描时提示“会话标识未更新”问题的修复

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-2-12 14:46:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有一段时间没有上CSDN了,今天看到有好几个网友问我“会话标示未更新问题”,以下是我的解决办法。
我的系统在做AppScan安全扫描时,爆出一个高危 漏洞:会话标识未更新。提供的解决办法是,在用户登录时始终使用新的会话。

我仔细查看了我的系统。原来在用户进入登录页面,但还未登录时,就已经产生了一个session,用户输入信息,登录以后,session的id不会改 变,也就是说还是以前的那个session(事实上session也确实不会改变,因为没有建立新session,原来的session也没有被销毁)。
        
后来我做了如下改变。在我的登录servlet里面将用户刚进入登录页面的那个session用invalidate()销毁掉,在用户信息匹配成功后,再建立一个新session,将用户信息放到session中去。
本来以为这种做法应该可以解决问题了,但是再扫描发现问题还存在。再一查看,发现新建立的session与原来被销毁的session的id居然还是一样的。真是搞不懂了!
        
系统背景:j2ee,jboss
        
以下是我的登录servlet的代码:

  1. ···
  2. HttpSession session = request.getSession(false);
  3. System.out.println(session.getId());
  4. if(session!=null){
  5.   session.invalidate();
  6. }
  7. /***接下来是对用户进行认证的代码***/
  8. ···
  9. ···
  10. /***用户认证代码结束***/
  11. HttpSession session1 = request.getSession(true);
  12. System.out.println(session1.getId());
  13. session1.setAttribute("",***);
复制代码
      
后来我找了好久才发现,之所以将会话invalidate没有用,是因为invalidate方法不是真正的将session销毁,只是将session 中的内容清空,所以当我invalidate以后再新建session,新建的session其实不是新的,是将之前的session重新启用了。于是 session的id不变就不奇怪了。
        
要怎么才能真正的将session销毁掉呢?看看下面的办法:
        
在登录页面上加上一段代码:
  1. request.getSession().invalidate();//清空session
  2. Cookie cookie = request.getCookies()[0];//获取cookie
  3. cookie.setMaxAge(0);//让cookie过期
复制代码

然后用户再输入信息登录时,就会产生一个新的session了。
        
虽然我的系统里面没有使用cookie,但是只要是web系统就离不开cookie。系统里面没有使用cookie是我没有用cookie来保存数据、标 示用户等等。但是服务器跟踪会话状态就是用的cookie。既然cookie是服务器用来跟踪会话状态的,那么如果cookie过期了,会怎么样?--不 用解释了吧。回答了这个问题,怎么让会话真正被销毁也就不难回答了。
        
我在登陆页面上加的那段代码的作用就是,将用户进入登陆页面时所产生的会话也就是session清空,然后让跟踪这个会话的cookie过期,这样服务器 就不再掌握有关这个会话的任何信息了。要想与服务器继续通信,就要产生一个新的会话才行。于是会话标示就更新了!
        
问题就是这么解决的。
        
总结起来,其实软件开发中的所有问题都不难,关键是找到问题的根源。know why, so you can know how

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-25 02:45 , Processed in 0.063395 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表