Я хочу создать веб-приложение без сохранения состояния, используя сервлеты Java. Поскольку он не имеет состояния, HttpSession отсутствует. В браузере есть сеанс, но каждый запрос может обрабатываться другим узлом в кластере. Идентификатор сеанса, хранящийся в браузере, генерируется и шифруется сервером, поэтому кому-то очень сложно создать действительный поддельный идентификатор сеанса и обойти логин.
Недавно я обнаружил уязвимость в этой архитектуре: если вредоносный (зараженный) браузер отправляет бандиту идентификатор сеанса, сеанс может быть легко взломан. Я не могу повторно создавать идентификатор сеанса при каждом запросе, потому что на сервере нет сеанса для отслеживания ожидаемой последовательности запросов, и это также усложнило бы обработку асинхронных запросов.
Мое решение на данный момент - получить некоторый идентификатор сеанса HTTPS и включить его в зашифрованный идентификатор сеанса, который хранится в браузере. Может ли стандартный сервлет получить такую информацию от HTTPS-соединения?
Другой вариант - использовать HttpSession только для getId (), но это будет работать, только если такой ID привязан к HTTPS-сеансу, который я не смог найти в спецификации сервлета.
Другие предложения приветствуются.