WEB安全漏洞之會話標識未更新漏洞

漏洞說明

在用戶進入登錄頁面,但還未登錄時,會產生一個session,用戶輸入信息,登錄以後,session的id沒有改變,也就是說沒有建立新session,原來的session沒有被銷燬, 可以繼續使用,黑客可利用此漏洞竊取或操縱客戶會話和cookie,用於模仿合法用戶,從而能夠以該用戶身份查看或變更用戶記錄以及執行事務。

簡單的說,就是登錄前後的JSESSIONID沒有變化。

修復方案

核心思想就是:登錄成功後始終生成新的會話。在登陸界面後增加下面一段代碼,強制讓系統session過期。

	request.getSession().invalidate();//清空session 
    Cookie cookie = request.getCookies()[0];//獲取cookie 
    cookie.setMaxAge(0);//讓cookie過期 ;

注意這段話要放在登錄頁面(例如index.jsp)的最後面,否則將會報錯。另外需要注意的是,重啓瀏覽器後首次訪問門戶的時候是沒有cookie的,所以要進行判斷,避免空指針異常。在項目中具體使用如下,如在index.jsp的最後面:

<%
	if (登錄錯誤碼不爲空) {
		//給出登錄錯誤提示
	}
	else {
		//登陸成功,使Cookie更新,注意重啓瀏覽器後首次訪問門戶還沒有cookie
		session.invalidate();  
		if(request.getCookies()!=null && request.getCookies().length > 0) {
			Cookie cookie = request.getCookies()[0];
			cookie.setMaxAge(0);
		}
	}
%>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章