【发布时间】:2018-07-12 19:16:12
【问题描述】:
我们使用的是 Tomcat 9.0.7,我们需要在验证用户身份后更改 Jsession-ID。
有什么方法可以实现吗?
【问题讨论】:
我们使用的是 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;
}
【讨论】: