@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, но просмотр документации по конфигурации ничего не дал.

Ответы на вопрос(2)

Ваш ответ на вопрос