我们使用的是 Tomcat 9.0.7,我们需要在验证用户身份后更改 Jsession-ID。
我们有什么办法可以做到这一点?
不仅有办法做到这一点,而且出于安全原因,这实际上是推荐的做法。
在这里,您会找到一个开源应用程序的片段,该应用程序将此功能称为“网络钓鱼防护”
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;
}