класс ActionDispatch::SSL
Action Dispatch SSL
Это промежуточное ПО добавляется в стек при config.force_ssl = true, а ему передаются параметры, заданные в config.ssl_options. Оно выполняет три задачи для обеспечения безопасности HTTP-запросов:
-
Перенаправление TLS: Выполняет постоянное перенаправление запросов
http://наhttps://с тем же хостом URL, путём и т. д. Включено по умолчанию. Задайтеconfig.ssl_options, чтобы изменить целевой URL:config.ssl_options = { redirect: { host: "secure.widgets.com", port: 8080 }`Или задайте
redirect: false, чтобы отключить перенаправление.Запросы могут отказаться от перенаправления с помощью
exclude:config.ssl_options = { redirect: { exclude: -> request { request.path == "/up" } } }Cookiesне будет помечен как защищённый для исключённых запросов.При использовании прокси через балансировщик нагрузки, который завершает
SSL, перенаправленный запрос будет выглядеть для приложения как HTTP-запрос, а не HTTPS. Из-за этого перенаправления и защита cookie будут настроены на HTTP, а не HTTPS. Чтобы сервер считал, что прокси уже завершилSSLи запрос действительно является HTTPS, задайтеconfig.assume_sslзначениеtrue:config.assume_ssl = true
-
Защищённые cookie: Устанавливает флаг
secureдля cookie, сообщая браузерам, что их нельзя отправлять вместе с запросамиhttp://. Включено по умолчанию. Задайтеconfig.ssl_optionsс помощьюsecure_cookies: false, чтобы отключить эту функцию. -
HTTP Strict Transport Security (HSTS): Сообщает браузеру, что нужно запомнить этот сайт как доступный только по TLS и автоматически перенаправлять запросы без TLS. Включено по умолчанию. Настройте
config.ssl_optionsс помощьюhsts: false, чтобы отключить эту функцию.Задайте
config.ssl_optionsс помощьюhsts: { ... }, чтобы настроить HSTS:-
expires: Как долго (в секундах) будут действовать эти настройки. Минимальное значение, необходимое для включения в предварительно загружаемые списки браузеров, — 1 год. По умолчанию — 2 года (рекомендуется). -
subdomains: Задайте значениеtrue, чтобы сообщить браузеру, что эти настройки следует применять ко всем поддоменам. Это защищает ваши cookie от перехвата уязвимым сайтом на поддомене. По умолчанию —true. -
preload: Сообщает, что этот сайт может быть включён в предварительно загружаемые списки HSTS браузеров. HSTS защищает сайт при каждом посещении кроме первого, поскольку браузер ещё не видел заголовок HSTS. Чтобы устранить этот пробел, разработчики браузеров включают встроенный список сайтов с поддержкой HSTS. Перейдите на hstspreload.org, чтобы отправить сайт на включение в список. По умолчанию —false.
Чтобы отключить HSTS, недостаточно просто не отправлять заголовок. Браузеры будут помнить исходную директиву HSTS до истечения её срока действия. Вместо этого используйте заголовок, чтобы сообщить браузерам, что срок действия HSTS истекает немедленно. Задание
hsts: false— это сокращённая форма записиhsts: { expires: 0 }. -
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.