@home: где это указано в спецификации? Не поймите меня неправильно, я не защищаю эту реализацию; просто пытаюсь понять, почему JRun делает такую нелогичную вещь.
следовал довольно древнее 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, но просмотр документации по конфигурации ничего не дал.