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

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

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

- A4: Insecure Design

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

    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 сессии.

Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки некорректного использования системных процедур и интерфейсов, связанных с обеспечением информационной безопасности (шифрования, разграничения доступа и пр.).

Данная диагностика классифицируется как:

CWE-807