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

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

Уязвимости, связанные с использованием этого метода, могут быть отнесены к следующей категории [OWASP Top 10 2021](https://owasp.org/Top10/):

* [A4: Insecure Design](https://owasp.org/Top10/A04_2021-Insecure_Design/)

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

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

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

Дело в том, что `getRequestedSessionId` возвращает ID, указанный клиентом\. [Jakarta JavaDoc](https://jakarta.ee/specifications/platform/10/apidocs/jakarta/servlet/http/httpservletrequest#getRequestedSessionId()) также об этом сообщает:

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

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

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

Согласно всё той же [документации Jakarta](https://jakarta.ee/specifications/platform/10/apidocs/jakarta/servlet/http/httpservletrequest#getSession()), `getSession` возвращает сессию запроса или создаёт новую:

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

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