會話標示未更新解決方案
阿新 • • 發佈:2018-05-07
會話標示未更新JSF項目,用appscan檢測,報“會話標示未更新”漏洞,漏洞詳情:用戶在登陸應用程序前後,其會話標識一樣,未進行更新,從而可以竊取或操作客戶會話和Cookie,進行查看、變更用戶信息及執行事務等操作。
推理: 測試結果似乎指示存在脆弱性,因為“原始請求”和“響應”中的會話標識相同。這些標誌應該已在響應中更新。
JSF頁面在打開時,就會生成一個sessionid,登錄後的sessionid未發生變化。
解決方案:
後臺登陸方法,加入強行銷毀session的代碼,並重新生成新session。
代碼轉自:http://huangqiqing123.iteye.com/blog/2031455
/** * 重置sessionid,原session中的數據自動轉存到新session中 * @param request */ public static void reGenerateSessionId(HttpServletRequest request){ HttpSession session = request.getSession(); //首先將原session中的數據轉移至一臨時map中 Map<String,Object> tempMap = new HashMap(); Enumeration<String> sessionNames = session.getAttributeNames(); while(sessionNames.hasMoreElements()){ String sessionName = sessionNames.nextElement(); tempMap.put(sessionName, session.getAttribute(sessionName)); } //註銷原session,為的是重置sessionId session.invalidate(); //將臨時map中的數據轉移至新session session = request.getSession(); for(Map.Entry<String, Object> entry : tempMap.entrySet()){ session.setAttribute(entry.getKey(), entry.getValue()); } }
會話標示未更新解決方案