класс ActionDispatch::SSL
Action Dispatch SSL
Этот посредник добавляется в стек, когда config.force_ssl = true, и получает опции, установленные в config.ssl_options. Он выполняет три задачи для обеспечения безопасных HTTP-запросов:
-
Переадресация TLS: Постоянно перенаправляет
http://запросы наhttps://с тем же хостом URL, путем и т. д. Включено по умолчанию. Изменить URL назначения можно, установивconfig.ssl_options.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.Настройте HSTS, установив
config.ssl_optionsс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.