可能会窃取或操纵客户会话和 cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务
“HttpOnly”属性的会话 cookie。由于此会话 cookie 不包含“HttpOnly”属性,因此
注入站点的恶意脚本可能访问此 cookie,并窃取它的值。任何存储在会话令牌中的
信息都可能被窃取,并在稍后用于身份盗窃或用户伪装。
解决方法1
Cookie[] cookies = ((HttpServletRequest)request).getCookies(); if(cookies!=null) { for(Cookie cookie : cookies){ //tomcat7 支持该属性,tomcat6 不支持 cookie.setHttpOnly(true); }
我们的tomcat6上这种方法不支持,只好使用以下方法2
解决方法2
if(cookies!=null){ for(Cookie cookie : cookies){ //tomcat7 支持该属性,tomcat6 不支持 String value = cookie.getValue(); StringBuilder builder = new StringBuilder(); builder.append("JSESSIONID=" + value + "; "); builder.append("Secure; "); builder.append("HttpOnly; "); Calendar cal = Calendar.getInstance(); cal.add(Calendar.HOUR, 1); Date date = cal.getTime(); Locale locale = Locale.CHINA; SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss",locale); builder.append("Expires=" + sdf.format(date)); resp.setHeader("Set-Cookie", builder.toString()); }
测试发现在IE8和IE9,谷歌火狐都没有问题,在IE11上出现session丢失的问题,导致用户在IE11浏览器上登录都成了问题,最后只好升级jar包,更换为tomcat7使用如下
//tomcat7 支持该属性,tomcat6 不支持 cookie.setHttpOnly(true);
才解决问题。