#amazon-web-services #spring-security
#amazon-web-services #spring-безопасность
Вопрос:
Приложение развернуто в AWS и обслуживает порт 80, а ELB перенаправляет эти 80 на 443. Spring security используется для сеанса, который создает файл cookie с установленным флагом безопасности. Когда я нажал на имя хоста приложения, я увидел, что флаг безопасности установлен, как показано ниже.
curl -I target_hostname
Set-Cookie: JSESSIONID=XXXXXXXX; Path =/; Secure; HttpOnly
Но когда я напрямую нажимаю на EC2 IP (используя curl) Я мог видеть, что флаг безопасности не установлен.
curl -I target_ec2_ip
Установить файл cookie: JSESSIONID=XXXXXXXX; Путь =/; HttpOnly
Почему это происходит, кто-нибудь может объяснить?
Комментарии:
1. Когда я нажимаю на приложение, используя IP-адрес из браузера, я вижу файл cookie в chrome developer tool, который небезопасен, но когда я нажимаю на приложение, используя имя хоста, я вижу, что флаг безопасности установлен. Я использую spring security. Есть предложения.
Ответ №1:
Я собираюсь предположить, что вы завершаете SSL в ELB и связываетесь с экземпляром EC2 напрямую через HTTP (порт 80). В этом случае применяется следующее:
Если флаг cookie-файла «только безопасный» имеет значение true, то схема запроса uri должна обозначать «безопасный» протокол (как определено агентом пользователя).
ПРИМЕЧАНИЕ: Понятие «защищенного» протокола в этом документе не определено. Обычно агенты пользователей считают протокол безопасным, если в нем используется защита транспортного уровня, такая как SSL или TLS.
Документ MDN более четкий:
Небезопасные сайты (http:) больше не могут устанавливать файлы cookie с помощью директивы «secure» (новое в Chrome 52 и Firefox 52 ).
Комментарии:
1. То есть вы имеете в виду, что даже если флаг безопасности установлен, он не появится в описанном выше сценарии? Также в этом случае файл cookie может быть украден атакой MITM. Как это предотвратить?