gpt4 book ai didi

java - Tomcat认证后如何更改Jsessionid?

转载 作者:太空宇宙 更新时间:2023-11-04 10:19:37 25 4
gpt4 key购买 nike

我们使用的是 Tomcat 9.0.7,我们需要在验证用户身份后更改 Jsessionid。

有什么办法可以实现这个目标吗?

最佳答案

不仅有多种方法可以做到这一点,而且出于安全原因,这实际上是推荐的做法。

在这里,您会发现一个开源应用程序的截图,该应用程序将此功能称为“网络钓鱼防护”

来自liferay:https://github.com/liferay/liferay-portal/blob/d9883da1a7df9de7b72d9aa8984e20693ab8112d/portal-impl/src/com/liferay/portal/security/auth/session/AuthenticatedSessionManagerImpl.java

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;
}
  • 此处的“ protected ”属性用于将相关属性复制到新 session 中,否则它们将丢失。

关于java - Tomcat认证后如何更改Jsessionid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51312955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com