Я унаследовал довольно древнее приложение JSP (JDK 1.3.1_15) и пытаюсь закрыть дыру в фиксации сеанса.
Я успешно аннулирую текущий сеанс после аутентификации с использованием HttpSession.invalidate()
, однако, когдановый сеанс создан, старый идентификатор сеанса используется повторно.
<%
// 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
заголовок ответа вообще не присутствовал.
У кого-нибудь есть какие-либо советы по созданию нового идентификатора сеанса?Я не очень знаком с JRUN4, но просмотр документации по конфигурации ничего не дал.