會話標示未更新解決方案

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());  
    }  
}  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章