登录后如何刷新JSESSIONID cookie
我正在研究的产品受到潜在客户的严格安全审核,他们为Tomcat在身份验证发生之前设置JSESSIONID
cookie感到不安。也就是说,Tomcat在我们的无状态登录页面加载时(但在登录之前)设置此cookie。
他们建议以下之一:
- 登录后发出新的JSESSIONID cookie
- 阻止在登录页面的第一位(即在身份验证发生之前)设置JSESSIONID cookie。
我一直在仔细阅读该站点上与JSESSIONID相关的所有内容,但找不到简单的答案。我只是希望一些想法。我为每个人最好的解决方案是:
- 登录后,通过复制所有属性,使旧会话无效,创建新会话,复制值,将其与请求关联,并希望它能够工作,来克隆会话(减去ID)。
- 在链的最末端创建一个Servlet过滤器,该过滤器会在最初加载“登录页面”之前去除JSESSIONID cookie。然后希望在没有设置JSESSIONID的情况下完成登录请求。
我得睡一会儿,但是早上会尝试这些。从比我聪明得多的人那里得到一些反馈或更好的建议,就像您一样!
无论如何,我将结果发布在这里,因为似乎很多其他人都想做类似的事情。
回答:
在此之后,您不会刷新,而在之前。首先执行登录操作时,请执行以下操作:
HttpSession session = request.getSession(false);if (session!=null && !session.isNew()) {
session.invalidate();
}
然后做:
HttpSession session = request.getSession(true); // create the session// do the login (store the user in the session, or whatever)
仅供参考,您要使用此技巧解决的问题是http://www.owasp.org/index.php/Session_Fixation
最后,您可以禁用自动会话创建,仅在真正需要时创建会话。如果您使用JSP,则可以通过以下方式进行操作:
<%@page contentType="text/html" pageEncoding="UTF-8"
session="false"%>
以上是 登录后如何刷新JSESSIONID cookie 的全部内容, 来源链接: utcz.com/qa/429749.html