Анализатор обнаружил, что в приложении используется метод 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 сессии.