2016-11-06 59 views
1

我正在尋找一個遺留的代碼庫(至少十年),其特點是JSP模型2體系結構(基本上是Servlets和JSP頁面)。正在從會話中除去invalidate()多餘的用戶憑證?

我注意到如下代碼:

session.removeAttribute("loginBean"); 
session.invalidate(); 

有從會話中刪除用戶憑據任何好處。單單不應該invalidate就足夠了? invalidate documentation似乎很清楚這個問題。

+1

你是正確的,就足夠了。 '...然後解除綁定的任何對象'。 – EJP

+0

@Marcus:你可以看看我的回答,並讓我知道如果有任何問題 – developer

回答

-1

從 會話中刪除用戶憑據是否有任何好處。不應該單獨失效就足夠了?

是的,有一個好處,它是如下解釋HttpSession從安全角度來看無效之前去除像usercredentials對象中的敏感信息的最佳實踐:

當你在電話會議上invalidate() HttpSession對象,J2EE容器在內部觸發HttpSessionListener sessionDestroyed(HttpSessionEvent se)方法。因此,如果您沒有removeusercreadentials對象來自會話,您仍然可以在sessionDestroyed方法中檢索它。

所以,關鍵是它要刪除HttpSession/Cache/等敏感信息的最佳實踐..只要我們知道,數據不再需要,這樣的object(如usercredentials)將不再是可到達這將減少濫用的範圍。

你可以看一下指南2-2下面從的Java安全編碼指南報價:

的一些信息,如社會安全號碼(核潛艇)和 密碼,是高度敏感。這個信息不應該被保留 比必要的時間更長,也不會被看到的地方,即使是 管理員。

你可以看一下here

+0

在sessionDestroyed()方法中能夠檢索會話屬性有什麼問題? – EJP

+0

您可以查看Java安全編碼指南參考,規則是不保留較長時間段內的安全數據。 – developer