当用户进行身份验证时,重置会话cookie被认为是一种良好的安全做法。
如何在Java中做到这一点?
到目前为止,我的尝试是成功的,但我想知道是否有更好的方法:
public static HttpSession resetSessionId(HttpSession session,
HttpServletRequest request) {
session.invalidate();
session = request.getSession(true);
return session;
}发布于 2011-01-29 19:38:41
你的答案似乎是最好的。另一种方法是以这种方式直接操作cookes:
Cookie cookie = new Cookie ("JSESSIONID", "randomValue");
cookie.setMaxAge( 0 );因此,您创建了一个同名的新cookie并立即使其失效,但我不建议采用这种方式,因为对于熟悉基本Servlet API的任何人来说,您的cookie要干净得多,而且非常明显。
发布于 2011-01-29 17:48:41
我只传递从中获取会话的请求。如果会话还不存在,那么创建一个会话只是为了使其无效是没有意义的。如果容器刚刚创建了会话(由于用户在登录表单上直接发出了第一个http请求),则也是如此。
public static ... (HttpServletRequest request) {
HttpSession session = request.getSession(false);
if (session!=null && !session.isNew()) {
session.invalidate();
}发布于 2011-01-30 05:43:14
Tomcat (从6.0.24AFAIK开始)可以自动更改身份验证时的sessionId -只要您使用标准的servlet身份验证机制(基本的、基于表单的身份验证)。这可以通过基本身份验证器阀http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html的changeSessionIdOnAuthentication进行配置
https://stackoverflow.com/questions/4836106
复制相似问题