我继承了一个非常古老的 JSP 应用程序(JDK 1.3.1_15)并试图填补一个会话固定漏洞。
我在使用身份验证后成功地使当前会话无效,HttpSession.invalidate()
但是在创建新会话时,旧会话 ID 被重新使用。
<%
// login.jsp
if (authenticated) {
request.getSession().invalidate();
// create new session and store data
HttpSession session = request.getSession();
session.putValue(...);
// etc
response.sendRedirect("logged-in.jsp");
return;
}
%>
我可以在我的 HTTP 监视器中看到新的会话分配,它只是再次使用相同的数字。
-- Initial request response --
HTTP/1.1 200 OK
Set-Cookie: JSESSIONID=6a303082951311647336934;path=/
-- login.jsp request response --
HTTP/1.1 302 Moved Temporarily
Location: http://example.com/logged-in.jsp
Set-Cookie: JSESSIONID=6a303082951311647336934;path=/
在我使用session.invalidate()
第二个Set-Cookie
响应标头之前根本不存在。
有人对如何生成新的会话 ID 有任何建议吗?我对 JRUN4 不是很熟悉,但是浏览配置文档并没有发现任何问题。