appscan扫描出来的。

1. 漏洞产生的原因:

AppScan会扫描“登录行为”前后的Cookie,其中会对其中的JSESSIONOID(或者别的cookie id依应用而定)进行记录。在登录行为发生后,如果cookie中这个值没有发生变化,则判定为“会话标识未更新”漏洞。

2. AppScan中,对“会话标识未更新”提供了修改建议:

一般修订建议 始终生成新的会话,供用户成功认证时登录。防止用户操纵会话标识。请勿接受用户浏览器登录时所提供的会话标识。

3. 依据修改建议修改如下:

登录时:

<%
session.invalidate();
Cookie[] cookies=request.getCookies();
if(null!=cookies){for(int i=0;i<cookies.length;i++){if("JSESSIONID").equalsIgnoreCase(cookies[i].getName()){cookies[i].setMaxAge(0);response.addCookie(cookies[i]);}}
}
%>

退出时:

<%
reponse.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
session=request.getSession(true);
session.invalidate();
%>

4. spring security中实现思路:

第一步:提取旧的session中的所有属性及值。

第二步:使旧的session无效。

第三步:生成新的session,并将旧session的所有属性和值赋给新的session中。

    /*** Called to extract the existing attributes from the session, prior to invalidating it. If* {@code migrateAttributes} is set to {@code false}, only Spring Security attributes will be retained.* All application attributes will be discarded.* <p>* You can override this method to control exactly what is transferred to the new session.** @param session the session from which the attributes should be extracted* @return the map of session attributes which should be transferred to the new session*/protected Map<String, Object> extractAttributes(HttpSession session) {return createMigratedAttributeMap(session);}final HttpSession applySessionFixation(HttpServletRequest request) {HttpSession session = request.getSession();String originalSessionId = session.getId();Map<String, Object> attributesToMigrate = extractAttributes(session);session.invalidate();session = request.getSession(true); // we now have a new session
        transferAttributes(attributesToMigrate, session);return session;}

注意: session = request.getSession(true); // we now have a new session

  getSession 

public HttpSession getSession(boolean create)

Returns the current HttpSession associated with this request or,

if if there is no current session and create is true, returns a new session.

If create is false and the request has no valid HttpSession, this method returns null.

To make sure the session is properly maintained, you must call this method before the response is committed. If the container is using cookies to maintain session integrity and is asked to create a new session when the response is committed, an IllegalStateException is thrown.

Parameters: true - to create a new session for this request if necessary; false to return null if there's no current session

Returns: the HttpSession associated with this request or null if create is false and the request has no valid session.

5. 一点小总结:

在登录或者退出时使用session.invalidate方式修改回话标示未更新,方法最简单;使用spring-security方式修复方式修改比较全面。

转载于:https://www.cnblogs.com/davidwang456/p/3615304.html

java或者jsp中修复会话标识未更新漏洞相关推荐

  1. 会话标识未更新 java_Appscan漏洞之会话标识未更新

    本次针对 Appscan漏洞 会话标识未更新进行总结,如下: 1. 会话标识未更新 1.1.攻击原理 在认证用户或者以其他方式建立新用户会话时,如果不使任何现有会话标识失效,攻击者就有机会窃取已认证的 ...

  2. 一个过滤器不仅解决了会话标识未更新同时还顺带解决了已解密的登录请求

    废话不多说直接上代码,少点套路,多点真诚. 过滤器代码如下: package com.filter; import java.io.IOException; import java.util.Enum ...

  3. 网络安全-已解密的登录请求,会话标识未更新,跨站点请求伪造

    这些没有那么麻烦,一天就搞定了.所以简单记录一下. 已解密的登陆请求是非常简单的,随便找个浏览器,火狐谷歌都行.打开F12找到网络 就可以非常清楚的看到这里是明文密码.虽然这里是客户端,还没有到传输阶 ...

  4. java在jsp中判断td的值是1还是2_Snap7,Eel与S71200简单组态1

    Snap7,Eel与S7-1200简单组态『1』 简介 Snap7是一个开源的,可以多平台运行的能与西门子S7系列PLC进行以太网通信的组件,之前的文章有两篇我介绍过这个组件,但是只是简单实现了对PL ...

  5. uni-app - 改变数据后视图无更新变化解决方案,更改数据不刷新(解决修改 data 中的数据视图未更新的问题)

    前言 当页面数据全部请求完毕,但用户操作导致数据改变时,视图并未按照最新数据进行更新. 有时候,我们动态改变数据的时候发现视图并未改变, 常见于在 methods 函数或其他位置中,改变 data 数 ...

  6. Java中的会话管理– HttpServlet,Cookie,URL重写

    Session Management in Java Servlet Web Applications is a very interesting topic. Session in Java Ser ...

  7. java做jsp问题_java/jsp中 中文问题详解

    java/jsp中 中文问题详解 更新时间:2006年10月13日 00:00:00   作者: 预备知识: 1.字节和unicode Java内核是unicode的,就连class文件也是,但是很多 ...

  8. java webshell jsp 木马攻防 简介

    目录 基础知识 JSP标签 JSP中的字符串混淆方式 类反射 类加载 对命令执行JSP一句话免杀 原型 类反射绕过 寻找其他类 对于冰蝎JSP一句话的免杀 免杀D盾 免杀百度scanner 总结 防范 ...

  9. 教你批量筛选,快递物流中一天未更新的单号

    教你一个小方法,我们该如何在电脑上批量查询物流单号,并筛选出一天未更新的单号?今天小编给大家分享一个小方法,有需要的小伙伴一起来看看吧. 首先,进入快递批量查询高手,选择"添加单号" ...

最新文章

  1. python判断括号有效,在Python中检查括号是否平衡
  2. C语言——把结构体数据封装成TLV格式的数据
  3. java 反射 Constructor、Method、Field 基本用法
  4. 如何让其他机器访问你的oracle数据库
  5. JQuery. Parse XML children recursively. How? - Stack Overflow
  6. 你还在犹豫要不要学习Java?不妨来看看我的见解如何?
  7. BayaiM__oracle切换归档模式步骤:
  8. win7+vs2008+windows mobile6.5.3
  9. CAN通讯矩阵之Intel格式与Motorola格式
  10. Domino部署多台notes server
  11. C++转Java快速入门
  12. 北京市常用电话号码表
  13. css003 选择器:明确设置哪些样式
  14. 某型火炮随动控制系统测试研究
  15. Please define INSTALL4J_JAVA_HOME to point to a suitable JVM 的解决办法
  16. 云计算机运维是什么,云计算运维管理是什么?
  17. ASO新手快速入门教程
  18. Unity 中的随机数!
  19. alibaba的druid连接池的监控的两种方法
  20. LC振荡电路分析方法

热门文章

  1. 小白重装系统教程_重装解决99%的电脑问题:小白U盘重装系统教程
  2. python监听udp端口_python检测远程udp端口是否打开
  3. 12无法使用otg_ios设备该如何选择U盘,以及U盘日常使用技巧
  4. subsonic mysql_Subsonic 介绍
  5. js监听select值变化_网络编程——C++实现socket通信(TCP)高并发之select模式
  6. linux shell 里面执行python 程序_Linux下编写脚本Shell和Python的区别?
  7. mysql 连接查询两个条件_MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习...
  8. 水平拉滑轮组计算机械效率的题,机械效率杠杆论文,关于中考物理机械效率计算题*相关参考文献资料-免费论文范文...
  9. c语言程序的标识符分类,华中科技大学计算机学院C语言程序设计标识符.PPT
  10. tf.clip_by_value