我们正在使用Tomcat 9.0.7,并且要求在验证用户身份后更改Jsession-ID。
有什么办法可以做到这一点?
答案 0 :(得分:0)
不仅有这样做的方法,出于安全原因,这实际上是推荐的做法。
在这里,您会发现一个来自开源应用程序的片段,称此功能为“网络钓鱼防护”
public HttpSession renewSession(
HttpServletRequest request, HttpSession session)
throws Exception {
// Invalidate the previous session to prevent session fixation attacks
String[] protectedAttributeNames =
PropsValues.SESSION_PHISHING_PROTECTED_ATTRIBUTES;
Map<String, Object> protectedAttributes = new HashMap<>();
for (String protectedAttributeName : protectedAttributeNames) {
Object protectedAttributeValue = session.getAttribute(
protectedAttributeName);
if (protectedAttributeValue == null) {
continue;
}
protectedAttributes.put(
protectedAttributeName, protectedAttributeValue);
}
session.invalidate();
session = request.getSession(true);
for (String protectedAttributeName : protectedAttributeNames) {
Object protectedAttributeValue = protectedAttributes.get(
protectedAttributeName);
if (protectedAttributeValue == null) {
continue;
}
session.setAttribute(
protectedAttributeName, protectedAttributeValue);
}
return session;
}