В настоящее время у меня есть собственная служба безопасности приложений, которая работает на моем предприятии и, по большей части, отвечает потребностям бизнеса.
Проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что служба традиционно (наивно) полагалась на то, что исходный IP-адрес пользователя остается постоянным в качестве хеджирования от перехвата сеанса - веб-приложения на предприятии не доступны напрямую для общественности, и прошлое вполне приемлемо для меня, чтобы требовать, чтобы адрес пользователя оставался постоянным в течение данного сеанса.
К сожалению, это больше не так, и поэтому я вынужден переключиться на решение, которое не зависит от исходного IP. Я бы предпочел реализовать решение, которое на самом деле выполняет намерения первоначального дизайнера (то есть предотвращает перехват сеанса).
Мое исследование до сих пор показало это , в котором, по сути, сказано: "храни свой хэш токена аутентификации с помощью ключа сеанса SSL."
На первый взгляд, это кажется идеальным решением, однако у меня остается подозрение, что реальная реализация этой схемы нецелесообразна из-за вероятности того, что клиент и сервер могут в любое время - произвольно и эффективно произвольно - выбрать повторное согласование сеанса SSL и, следовательно, изменить ключ.
это сценарий, который я представляю:
- Сеанс SSL установлен и ключ согласован.
- Клиент аутентифицируется на сервере на уровне приложения (т.е. через имя пользователя и пароль).
- Сервер записывает защищенный файл cookie, содержащий ключ сеанса SSL.
- Произошло что-то , которое вызывает повторное согласование сеанса. Например, я думаю, что IE делает это на таймере с или без причины.
- Клиент отправляет запрос на сервер, содержащий старый сеансовый ключ (поскольку на уровне приложения не было известно о повторном согласовании на уровне приложения, не было возможности записать новый, обновленный хеш-код клиенту ).
- Сервер отклоняет учетные данные клиента из-за ошибки совпадения хэшей и т. Д.
Это реальная проблема или это неправильное понимание с моей стороны из-за (по меньшей мере) неполного понимания того, как работает SSL?