>
>
>
V5316. Do not use the 'HttpServletReque…


V5316. Do not use the 'HttpServletRequest.getRequestedSessionId' method because it uses a session ID provided by a client.

Анализатор обнаружил, что в приложении используется метод HttpServletRequest.getRequestedSessionId. Данный метод не рекомендуется к применению.

Уязвимости, связанные с использованием этого метода, могут быть отнесены к следующей категории OWASP Top 10 2021:

Рассмотрим пример:

boolean validate(HttpServletRequest request) {
    var sessionId = request.getRequestedSessionId();
    // ....
}

При проверке фрагмента анализатор сформирует предупреждение о том, что использование getRequestedSessionId не рекомендуется, поскольку, скорее всего, является ошибочным.

Дело в том, что getRequestedSessionId возвращает ID, указанный клиентом. Jakarta JavaDoc также об этом сообщает:

This may not be the same as the ID of the current valid session for this request.

Для получения подлинного ID сессии можно использовать следующий вариант:

boolean validate(HttpServletRequest request) {
    var sessionId = request.getSession().getId();
    // ....
}

Согласно всё той же документации Jakarta, getSession возвращает сессию запроса или создаёт новую:

Returns the current session associated with this request, or if the request does not have a session, creates one.

Таким образом, мы получаем корректный ID сессии.