java或者jsp中修复会话标识未更新漏洞
2014-03-21 10:29
288 查看
appscan扫描出来的。
1. 漏洞产生的原因:
AppScan会扫描“登录行为”前后的Cookie,其中会对其中的JSESSIONOID(或者别的cookie id依应用而定)进行记录。在登录行为发生后,如果cookie中这个值没有发生变化,则判定为“会话标识未更新”漏洞。
2. AppScan中,对“会话标识未更新”提供了修改建议:
一般修订建议 始终生成新的会话,供用户成功认证时登录。防止用户操纵会话标识。请勿接受用户浏览器登录时所提供的会话标识。
3. 依据修改建议修改如下:
登录时:
退出时:
4. spring security中实现思路:
第一步:提取旧的session中的所有属性及值。
第二步:使旧的session无效。
第三步:生成新的session,并将旧session的所有属性和值赋给新的session中。
注意: session = request.getSession(true); // we now have a new session
getSession
public HttpSession getSession(boolean create)
Returns the current
if if there is no current session and
If
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:
Returns: the
5. 一点小总结:
在登录或者退出时使用session.invalidate方式修改回话标示未更新,方法最简单;使用spring-security方式修复方式修改比较全面。
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
HttpSessionassociated with this request or,
if if there is no current session and
createis true, returns a new session.
If
createis
falseand 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;
falseto return
nullif there's no current session
Returns: the
HttpSessionassociated with this request or
nullif
createis
falseand the request has no valid session.
5. 一点小总结:
在登录或者退出时使用session.invalidate方式修改回话标示未更新,方法最简单;使用spring-security方式修复方式修改比较全面。
相关文章推荐
- java或者jsp中修复会话标识未更新漏洞
- java或者jsp中修复会话标识未更新漏洞
- java或者jsp中修复会话标识未更新漏洞
- java或者jsp中修复会话标识未更新漏洞
- 【AppScan深入浅出】修复漏洞:会话标识未更新(中危)
- [AppScan深入浅出]修复漏洞:会话标识未更新
- 【AppScan深入浅出】修复漏洞:会话标识未更新(中危)
- 甲骨文发布Java紧急更新 专家称未修复漏洞
- Java写文件时文件名\00或者\0截断BUG导致的文件上传漏洞及修复
- Java更新修复27个危急安全漏洞
- IBM appcsan扫描安全漏洞--会话标识未更新
- IBM Security Appscan漏洞--会话标识未更新
- 会话标识未更新 漏洞处理
- Linux Bash严重漏洞修复紧急通知(官方最新解决方案持续更新中)
- jsp中把js变量赋给java变量,或者将java变量赋给js变量怎么做?
- 苹果发布重要iOS更新,修复23个安全漏洞,强烈建议更新
- Java写文件时文件名00截断BUG导致的文件上传漏洞及修复
- JavaWeb-10(会话技术之session&JSP)
- 从Java的角度简单修复Cookie越权漏洞