Строгий транспорт HTTPS
Строгий транспорт HTTPS
Заголовок ответа HTTP Strict-Transport-Security (часто сокращенно как HSTS) сообщает браузерам, что к сайту следует обращаться только по протоколу HTTPS, и что любые будущие попытки доступа к нему по протоколу HTTP должны автоматически перенаправляться на HTTPS.
Примечание: Это более безопасно, чем просто настройка перенаправления с HTTP на HTTPS (301) на вашем сервере, где начальное HTTP-соединение всё ещё уязвимо к атаке «человек посередине».
| Тип заголовка | Заголовок ответа |
|---|---|
| Запрещённое имя заголовка | нет |
Синтаксис
Strict-Transport-Security: max-age=<expire-time> Strict-Transport-Security: max-age=<expire-time>; includeSubDomains Strict-Transport-Security: max-age=<expire-time>; includeSubDomains; preload
Директивы
max-age=<expire-time>-
Время в секундах, которое браузер должен помнить, что к сайту следует обращаться только по протоколу HTTPS.
-
includeSubDomainsНеобязательно -
Если этот необязательный параметр указан, это правило применяется и ко всем дочерним доменам сайта.
-
preloadНеобязательно Нестандартный -
Подробнее см. Предварительная загрузка Strict Transport Security. При использовании
preload, директиваmax-ageдолжна быть не менее31536000(1 год), и директиваincludeSubDomainsдолжна быть присутствовать. Не входит в спецификацию.
Описание
Если веб-сайт принимает соединение через HTTP и перенаправляет на HTTPS, посетители могут первоначально взаимодействовать с незащищённой версией сайта перед перенаправлением, если, например, посетитель введёт http://www.foo.com/ или даже просто foo.com. Это создаёт возможность атаки «человек посередине». Перенаправление может быть использовано для перенаправления посетителей на вредоносный сайт вместо безопасной версии исходного сайта.
Заголовок HTTP Strict Transport Security сообщает браузеру, что он никогда не должен загружать сайт по протоколу HTTP и должен автоматически преобразовывать все попытки доступа к сайту по протоколу HTTP в запросы HTTPS.
Примечание: Заголовок Strict-Transport-Security игнорируется браузером, когда ваш сайт был доступен только по протоколу HTTP. После того, как ваш сайт был доступен по протоколу HTTPS без ошибок сертификата, браузер понимает, что ваш сайт поддерживает HTTPS, и будет учитывать заголовок Strict-Transport-Security. Браузеры делают это, так как злоумышленники могут перехватывать HTTP-соединения с сайтом и вставлять или удалять заголовок.
Пример сценария
Вы входите в бесплатную точку доступа Wi-Fi в аэропорту и начинаете серфинг в интернете, посещая свой онлайн-банковский сервис, чтобы проверить свой баланс и оплатить несколько счетов. К сожалению, используемая вами точка доступа Wi-Fi на самом деле является ноутбуком хакера, и он перехватывает ваш исходный HTTP-запрос и перенаправляет вас на клон сайта вашего банка вместо реального. Теперь ваши личные данные доступны хакеру.
Строгий транспорт HTTPS решает эту проблему; пока вы хотя бы один раз посетили веб-сайт вашего банка по HTTPS, и веб-сайт банка использует Strict Transport Security, ваш браузер будет знать, как автоматически использовать только HTTPS, что предотвращает хакерам подобные атаки «человек посередине».
Как браузер с этим справляется
В первый раз, когда ваш сайт доступен по протоколу HTTPS, и он возвращает заголовок Strict-Transport-Security, браузер записывает эту информацию, так что все будущие попытки загрузки сайта по протоколу HTTP будут автоматически использовать HTTPS вместо этого.
Когда время истечения, указанное в заголовке Strict-Transport-Security, истекает, следующая попытка загрузить сайт по протоколу HTTP будет продолжена как обычно, вместо автоматического использования HTTPS.
Всякий раз, когда заголовок Strict-Transport-Security передаётся браузеру, он будет обновлять срок действия для этого сайта, так что сайты могут обновлять эту информацию и предотвратить истечение срока действия. Если необходимо отключить Strict Transport Security, установка max-age на 0 (через подключение HTTPS) немедленно приведёт к истечению срока действия заголовка Strict-Transport-Security, позволяя доступ через HTTP.
Предварительная загрузка Strict Transport Security
Google поддерживает сервис предварительной загрузки HSTS. Следуя инструкциям и успешно отправив ваш домен, вы можете убедиться, что браузеры будут подключаться к вашему домену только по защищённым соединениям. Хотя сервис размещается Google, все браузеры используют этот предварительно загруженный список. Однако это не часть спецификации HSTS и не должно рассматриваться как официальное требование.
- Информация о списке предварительной загрузки HSTS в Chrome : https://www.chromium.org/hsts
- Просмотр списка предварительной загрузки HSTS в Firefox : nsSTSPreloadList.inc
Примеры
Все текущие и будущие дочерние домены будут использовать HTTPS на срок max-age в 1 год. Это блокирует доступ к страницам или дочерним доменам, которые могут быть доступны только по протоколу HTTP.
Strict-Transport-Security: max-age=31536000; includeSubDomains
Если max-age в 1 год приемлемо для домена, однако, два года являются рекомендуемым значением, как указано на https://hstspreload.org.
В следующем примере max-age установлено на 2 года и дополняется preload, что необходимо для включения в списки предварительной загрузки HSTS всех основных веб-браузеров, таких как Chromium, Edge и Firefox.
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Спецификации
| Спецификация |
|---|
| HTTP Strict Transport Security (HSTS) # раздел-6.1 |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | |
Strict-Transport-Security |
4 |
12 |
4 |
11 |
12 |
7 |
4.4 |
18 |
Да |
Нет |
7 |
1.0 |
См. также
- Статья в блоге: HTTP Strict Transport Security уже доступен!
- Статья в блоге: HTTP Strict Transport Security (принудительное использование HTTPS)
- Статья OWASP: HTTP Strict Transport Security
- Википедия: HTTP Strict Transport Security
- Сервис предварительной загрузки HSTS
- Функции, ограниченные безопасными контекстами
© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security