我正在研究一个遗留代码库(至少有十年的历史),它具有相当于JSP Model2体系结构的特性(基本上是Servlets和JSP页面)。
我注意到下面这样的代码:
session.removeAttribute("loginBean");
session.invalidate();从会话中删除用户凭据是否有任何好处。仅仅使用invalidate还不够吗?invalidate documentation在这个问题上似乎很清楚。
发布于 2016-11-06 11:59:58
从会话中删除用户凭据是否有任何好处。仅仅失效还不够吗?
是的,这有一个好处,最佳实践是在从安全角度使HttpSession无效之前删除敏感信息,如usercredentials对象,如下所述:
在HttpSession对象上调用invalidate()时,J2EE容器将在内部触发HttpSessionListener sessionDestroyed(HttpSessionEvent se)方法。因此,如果您不从会话中remove usercreadentials对象,您仍然可以在sessionDestroyed方法中检索它。
因此,最好的做法是从HttpSession/Cache/**etc.. 中删除敏感信息一旦我们知道不再需要数据,** object usercredentials**) (如)将不再可达,这将减少误用的范围。**
您可以查看指南2-2下面引用的Java安全编码指南
某些信息非常敏感,例如社会安全号码(SSN)和密码。此信息不应保留超过必要的时间,也不应保存在可能会被看到的位置,即使是管理员也不应如此。
你可以看看here
https://stackoverflow.com/questions/40444816
复制相似问题