关于AppScan安全检测会话标识未更新

会话标识未更新
严重性: 中
CVSS 分数: 6.4
URL: http://119.60.12.114:18079/NXZDWRYZXJC/action/user/login
实体: login (Page)
风险: 可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查
看或变更用户记录以及执行事务
原因: Web 应用程序编程或配置不安全
固定值: 登录之后更改会话标识符值
差异:
推理: 测试结果似乎指示存在脆弱性,因为“原始请求”和“响应”中的会话标识相同。这些标志应该已在响应中更新。

解决方法
方案一:
如果不需要保留上一次的session,直接在每次访问登陆时清除上一次的session:

    在登录页面上加上一段代码:
request.getSession().invalidate();//清空session
Cookie cookie = request.getCookies()[0];//获取cookie
cookie.setMaxAge(0);//让cookie过期
然后用户再输入信息登录时,就会产生一个新的session了。

方案二:更新上一次的session信息,保证再Tab页打开已登录的系统session能更新共享使用。

if (request instanceof HttpServletRequest) {
            HttpServletRequest httpRequest = (HttpServletRequest) request;
            if (httpRequest.getSession() != null) {
                HttpSession session = httpRequest.getSession();
                HashMap<String, Object> old = new HashMap<String, Object>();
                Enumeration<String> keys = session.getAttributeNames();
                while (keys.hasMoreElements()) {
                    String key = (String) keys.nextElement();
                    old.put(key, session.getAttribute(key));
                    session.removeAttribute(key);
                }

                if (!httpRequest.getSession().isNew()){
                    session.invalidate();
                    session = httpRequest.getSession(true);
                }

                for (Iterator<Entry<String, Object>> it = old.entrySet().iterator(); it.hasNext();) {
                    Map.Entry<String, Object> entry = (Map.Entry<String, Object>) it.next();
                    session.setAttribute((String) entry.getKey(), entry.getValue());
                }
            }
        }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值