我正在研究的产品受到潜在客户的严格安全审核,他们为Tomcat在身份验证发生之前设置JSESSIONID cookie感到不安。也就是说,Tomcat在我们的无状态登录页面加载时(但在登录之前)设置此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"%>