Hsts что это: что это такое и при чем тут Strict Transport Security

Содержание

что это такое и при чем тут Strict Transport Security

26677 2

How-to – Читать 8 минут

Прочитать позже

АУДИТ САЙТА — СЕРТИФИКАТ HTTPS

Инструкцию одобрил
SEO-специалист в Luxeo

Илья Беланенко

Настройка технологии HSTS имеет смысл при полной уверенности в правильной работе https-протокола на всех страницах ресурса. Пропишите заголовок HTTP Strict Transport Security или подключите функцию HSTS в личном кабинете хостинга, чтобы пользователи автоматически перенаправлялись на безопасное соединение.

Содержание:

  1. Что собой представляет поддержка HSTS
  2. Как настроить HSTS для сайт
  • Настройка HSTS в Apache
  • Настройка HSTS в Nginx

3. Как найти ошибки на сайте с помощью Аудита Serpstat
4. Заключение

Что собой представляет поддержка HSTS

При вводе домена в адресной строке без протокола https либо в формате «site. ru» в браузере сперва выводится незащищенная версия сайта. Даже если на нем установлен SSL-сертификат, перенаправление происходит уже после первого перехода. Этим моментом пользуются мошенники с целью перехвата данных пользователя и перенаправления его на подставную страницу.

HSTS — это алгоритм взаимодействия между браузером и сервером, при котором сайту присваивается статус защищенного на заданный период. Это делается с помощью заголовка HTTP Strict Transport Security. Он выдается при ответе сервера и указывает браузеру на необходимость постоянной автоматической переадресации на версию сайта под протоколом https.

Несмотря на основное предназначение HSTS — защитить соединение, клиент остается уязвим при:

  • переустановке операционной системы;
  • переустановке браузера;
  • первом посещении конкретного сайта;
  • использовании другого браузера;
  • подключении с нового устройства, например, планшета;
  • окончании периода действия HSTS;
  • очистке кэша браузера.

Первое соединение с сайтом не защищается, если оно произошло через протокол http. В большинстве случаев так и происходит: редирект на защищенную версию выполняется уже после первого перехода на сайт.

Для решения этой проблемы был создан список Preload List от Google. После обращения к сайту браузер проверяет наличие сайта в этом списке и лишь потом соединяет клиента с сервером по безопасному протоколу. Попасть в Preload List можно с помощью онлайн-запроса:

При активной технологии HSTS, если сертификат SSL окажется просроченным либо какие-то страницы ресурса не будут доступны по защищенному соединению — пользователь не получит доступ к ним. Обойти шифрованное соединение через HSTS не удастся ни в одном из браузеров.

Выйти из Preload List сложно. Чтобы это сделать, необходимо подать запрос на этом же ресурсе и ждать ответа. Для Chrome это происходит более трех месяцев, а для других браузеров — еще дольше. В этот период сайт недоступен пользователям. Перед внесением в Preload List определитесь наверняка, собираетесь ли постоянно поддерживать на сайте работу протокола https.

При подключенной технологии в браузере пользователю будут высвечиваться сайты, работающие исключительно по протоколу https. Даже если он введет в адресную строку домен через http, браузер автоматически перенаправит его на версию сайта с https. Механизм HSTS призван уменьшить количество незашифрованных соединений и свести к минимуму риски перехвата данных и кукисов.

Как настроить HSTS для сайта

Некоторые хостинг-провайдеры дают возможность подключить эту опцию через личный кабинет пользователя. В остальных случаях необходимо добавить заголовок с нужными параметрами в настройках сервера. Варианты заголовков:

Strict-Transport-Security: max-age=<expire-time> — устанавливает временной промежуток действия HSTS для определенного сайта.

Strict-Transport-Security: max-age=<expire-time>; includeSubDomains — задает временной период и указывает, что технология HSTS распространяется на основной домен и его субдомены.

Strict-Transport-Security: max-age=<expire-time>; preload — указывает браузеру период действия HSTS и включение сайта в список Preload List.

Самый простой вариант заголовка выглядит так:

add_header Strict-Transport-Security "max-age=31536000;”

Он означает, что заголовок действует сроком на 1 год в секундах. При тестировании технологии лучше устанавливать минимальное значение после параметра «max-age». При возникновении багов за короткий промежуток времени ошибку увидят немногие пользователи. А вы сможете исправить ситуацию и проследить за посещениями вашего сайта при действующем заголовке HSTS.

Рекомендуется перед настройкой HSTS установить ликвидный SSL-сертификат и вручную настроить перенаправления всех страниц. Не стоит надеяться исключительно на автоматическую переадресацию браузера.

Сообщения о небезопасном соединении высвечиваются даже при наличии ссылок с переходами на незащищенные страницы. Поэтому перед подключением к данному механизму важно тщательно проверить все соединения на сайте.

Настройка HSTS в Apache

В файле конфигурации сервера внесите данные:

<VirtualHost 67.89.123.45:443>
  Header always set Strict-Transport-Security "max-age=31536000; includeSubdomains;"
</VirtualHost>

Указанный срок действия заголовка обновляется при каждом переходе на сайт. В данном случае активный период составляет 1 год.

Для перенаправления пользователей на страницы с защищенным соединением включите команду:

<VirtualHost *:80>
  [...]
  ServerName site.ru
  Redirect permanent / https://site.ru/
</VirtualHost>

Вместо site.ru укажите домен сайта.

После введенных изменений сервер необходимо перезапустить. После запуска технологии и включения в Preload List поддержка HSTS должна выполняться постоянно.

Настройка HSTS в Nginx

Найдите в панели хостинга файл конфигурации /etc/nginx/conf.d и внесите в него заголовок Strict Transport Security с нужным набором параметров. Используйте только тот сервер, который поддерживает технологию HSTS.

Не допускается применение на одном сервере двух версии одного сайта, с https-протоколом и без него. Настройте все перенаправления страниц с http на https.

Проверить статус сертификата SSL и узнать оценку сайта с точки зрения защищенности соединений можно через сервис SSL Server Test. Оценка «А» означает наличие сертификата безопасности. Оценка «А+» идентифицирует сайты с подключенной технологией HSTS.

Как найти ошибки на сайте с помощью Аудита Serpstat

С помощью инструмента Аудит сайта в Serpstat можно проверить сайт или его отдельные страницы на наличие технических ошибок. Кроме того, инструмент дает рекомендации по их исправлению и возможность оценить результаты проведенных работ по SEO.

Для начала работы создайте новый проект. Перейдите в Список проектов и нажмите Добавить новый проект. Если ваш сайт уже добавлен, просто нажмите на Аудит сайта.

Чтобы увидеть полный перечень проблем и рекомендации по их исправлению, нажмите на Все проверки.

Если ошибка на сайте есть, то в отчете вы найдете:

  • описание проблемы;
  • подсказку, как ее устранить;
  • историю проверки;
  • URL, на котором обнаружена ошибка.

После исправления рекомендуем просканировать сайт еще раз. Если проблемы действительно нет, то в отчете ошибка не будет отображаться.

Чтобы узнать какие проблемы есть на сайте и получить рекомендации по их устранению, нажимайте на Проверить свой сайт.

Хотите обнаружить ошибки на сайте, которые мешают продвижению с помощью Serpstat?

Заказывайте бесплатную персональную демонстрацию сервиса, и наши специалисты вам все расскажут! 😉

Оставить заявку!
Узнать подробнее!

Заключение

Подключать сайт через алгоритм HSTS следует после полной проверки соединений страниц по протоколу https.

Чтобы дать браузеру команду всегда определять конкретный сайт как защищенный, следует добавить заголовок HTTP Strict Transport Security в конфигурационный файл на сервере и перезапустить его. Первый раз рекомендуется устанавливать минимальный срок действия заголовка, чтобы проверить правильность его работы и устранить ошибки.

В дальнейшем важно осуществлять поддержку HSTS на постоянной основе. При окончании срока действия SSL-сертификата или появлении страниц с незащищенным соединением пользователям будет выдаваться ошибка загрузки страниц сайта.

Подключение к списку Preload List фактически является односторонней процедурой, так как выйти из него на деле оказывается очень сложно.

Задавайте вопросы в комментариях или пишите в техподдержку.:) А также вступайте в чат любителей Серпстатить и подписывайтесь на наш канал в Telegram.

Сэкономьте время на изучении Serpstat

Хотите получить персональную демонстрацию сервиса, тестовый период или эффективные кейсы использования Serpstat?

Оставьте заявку и мы свяжемся с вами 😉

Оцените статью по 5-бальной шкале

4. 62 из 5 на основе 38 оценок

Нашли ошибку? Выделите её и нажмите Ctrl + Enter, чтобы сообщить нам.

Рекомендуемые статьи

How-to

Denys Kondak

Каким должен быть размер веб-страницы для быстрой загрузки

How-to

Анастасия Сотула

Как проанализировать динамику изменения цен на рынке

How-to

Анастасия Сотула

Как проанализировать изменение ссылочной массы

Кейсы, лайфхаки, исследования и полезные статьи

Не успеваешь следить за новостями? Не беда! Наш любимый редактор подберет материалы, которые точно помогут в работе. Только полезные статьи, реальные кейсы и новости Serpstat раз в неделю. Присоединяйся к уютному комьюнити 🙂

Нажимая кнопку, ты соглашаешься с нашей политикой конфиденциальности.

Поделитесь статьей с вашими друзьями

Вы уверены?

Спасибо, мы сохранили ваши новые настройки рассылок.

Сообщить об ошибке

Отменить

Strict-Transport-Security — HTTP | MDN

HTTP Strict-Transport-Security — заголовок ответа (часто используется аббревиатура HSTS (en-US)), позволяющий web-сайтам уведомить браузер о том, что доступ к ним должен быть осуществлён только посредством HTTPS вместо HTTP.

Header typeResponse header (en-US)
Forbidden header nameno
Strict-Transport-Security: max-age=<expire-time>
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains
Strict-Transport-Security: max-age=<expire-time>; preload
max-age=<expire-time>

Время, в секундах, которое браузер должен помнить, что сайт доступен только с помощью HTTPS.

includeSubDomains Необязательный

Если этот опциональный параметр задан, то правило также применяется ко всем саб-доменам сайта.

preload Необязательный

Смотри Предзагрузка Strict Transport Security для большей информации. Не часть спецификации.

Если сайт поддерживает доступ с помощью HTTP и перенаправляет на HTTPS, посетители могут изначально коммуницировать с незащищённой версией сайта до перенаправления, если, к примеру, введут http://www.foo.com/ или даже просто foo.com. Это открывает возможности для атак посредников. Перенаправление может быть использовано для перевода посетителей на сайт злоумышленников вместо защищённой версии оригинального сайта.

HTTP Strict Transport Security заголовок сообщает браузеру, что тот никогда не должен загружать сайт через HTTP и всегда должен автоматически конвертировать все попытки доступа к сайту с помощью HTTP в HTTPS.

Примечание: Strict-Transport-Security заголовок игнорируется браузером, если сайт может быть доступен с помощью HTTP, потому что атакующий может перехватить HTTP соединение и внедрить заголовок или убрать его. Когда сайт доступен по HTTPS без ошибок сертификата, браузер знает, что сайт может работать по HTTPS и примет Strict-Transport-Security заголовок.

Пример сценария

Вы залогинились через бесплатную точку доступа WiFi в аэропорту и начали серфить в сети, посещая ваш сервис online-банкинга для того, чтобы проверить баланс и оплатить пару счетов. К сожалению, точка доступа на самом деле хакерский ноутбук, и они перехватывают ваш оригинальный HTTP запрос и перенаправляют вас на клонированную версию вашего банковского сайта. Теперь ваша личная информация доступна хакерам.

Strict Transport Security разрешает эту проблему; пока вы подключены к вашему банковскому сайту с помощью 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.

Google поддерживает HSTS preload service. Следуя инструкциям и удачно отправив свой домен, браузер никогда не подключится к вашему домену через незащищённое соединение. Так как сервис хостится 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
SpecificationStatusComment
HTTP Strict Transport Security (HSTS)IETF RFCInitial definition

BCD tables only load in the browser

with JavaScript enabled. Enable JavaScript to view data.

  • Blog post: HTTP Strict Transport Security has landed!
  • Blog post: HTTP Strict Transport Security (force HTTPS)
  • OWASP Article: HTTP Strict Transport Security
  • Wikipedia: HTTP Strict Transport Security
  • Browser test site: HSTS and HPKP test
  • Features restricted to secure contexts (en-US)

Last modified: , by MDN contributors

Что такое HSTS и зачем его использовать?

HSTS означает HTTP Strict Transport Security . Это метод, используемый веб-сайтами, чтобы объявить, что доступ к ним должен осуществляться только через безопасное соединение (HTTPS). Если веб-сайт объявляет политику HSTS, браузер должен отклонять все HTTP-соединения и запрещать пользователям принимать небезопасные SSL-сертификаты. В настоящее время HSTS поддерживается большинством основных браузеров (только некоторые мобильные браузеры не могут его использовать).

HTTP Strict Transport Security был определен как стандарт веб-безопасности в 2012 году в RFC 679.7. Основная цель создания этого стандарта состояла в том, чтобы помочь избежать атак посредника (MITM), которые используют удаление SSL . Разделение SSL — это метод, при котором злоумышленник заставляет браузер подключиться к сайту с помощью HTTP, чтобы он мог перехватывать пакеты и перехватывать или изменять конфиденциальную информацию. HSTS также является хорошим способом защитить себя от перехвата файлов cookie.

Как работает HSTS

Как правило, когда вы вводите URL-адрес в веб-браузере, вы пропускаете часть протокола. Например, вы набираете www.acunetix.com , а не http://www.acunetix.com . В таком случае браузер предполагает, что вы хотите использовать протокол HTTP, поэтому отправляет HTTP-запрос на адрес www.acunetix.com .
На этом этапе веб-сервер отвечает перенаправлением (код ответа 301 ), которое указывает на сайт HTTPS. Браузер устанавливает HTTPS-соединение с www.acunetix.com . Это когда защита политики безопасности HSTS начинает использовать заголовок ответа HTTP:

 Строгая транспортная безопасность: max-age=31536000; включать поддомены; preload 

Заголовок Strict-Transport-Security дает определенные инструкции для браузера. Отныне каждое подключение к сайту и его поддоменам на следующий год (31536000 секунд) с момента получения этого заголовка должно быть HTTPS-подключением. HTTP-соединения вообще запрещены. Если браузер получает запрос на загрузку ресурса с использованием HTTP, вместо этого он должен попробовать HTTPS-запрос. Если HTTPS недоступен, соединение должно быть разорвано.

Кроме того, если сертификат недействителен, вам будет запрещено устанавливать соединение. Обычно, если сертификат недействителен (истек срок действия, самоподписан, подписан неизвестным ЦС и т. д.), браузер отображает предупреждение, которое можно обойти. Однако, если на сайте есть HSTS, обойти предупреждение браузер вообще не позволит. Чтобы получить доступ к сайту, вы должны удалить сайт из списка HSTS в браузере.

Заголовок Strict-Transport-Security отправляется для данного веб-сайта и охватывает определенное доменное имя. Поэтому, если у вас есть заголовок HSTS для www.acunetix.com , он не будет охватывать acunetix.com , а только субдомен www . Вот почему для полной защиты ваш веб-сайт должен включать вызов базового домена (в данном случае acunetix. com ) и получать заголовок Strict-Transport-Security для этого домена с директивой includeSubDomains .

Является ли HSTS полностью безопасным?

К сожалению, при первом посещении веб-сайта вы не защищены HSTS. Если веб-сайт добавляет заголовок HSTS к HTTP-соединению, этот заголовок игнорируется. Это связано с тем, что злоумышленник может удалить или добавить заголовки во время атаки «человек посередине». Заголовку HSTS нельзя доверять, если он не доставлен через HTTPS.

Вы также должны знать, что HSTS max-age обновляется каждый раз, когда ваш браузер читает заголовок, и максимальное значение составляет два года. Это означает, что защита является постоянной, если между вашими визитами проходит не более двух лет. Если вы не посещаете веб-сайт в течение двух лет, он считается новым сайтом. В то же время, если вы обслуживаете заголовок HSTS с max-age из 0, браузер будет рассматривать сайт как новый при следующей попытке подключения (что может быть полезно для тестирования).

Вы можете использовать дополнительный метод защиты, называемый списком предварительной загрузки HSTS . Проект Chromium поддерживает список веб-сайтов, использующих HSTS, и этот список распространяется вместе с браузерами. Если вы добавите свой веб-сайт в список предварительной загрузки, браузер сначала проверит внутренний список, поэтому ваш веб-сайт никогда не будет доступен через HTTP, даже при первой попытке подключения. Этот метод не является частью стандарта HSTS, но используется всеми основными браузерами (Chrome, Firefox, Safari, Opera, IE11 и Edge).

Единственным известным в настоящее время методом обхода HSTS является атака на основе NTP. Если клиентский компьютер подвержен атаке NTP, его можно обмануть, заставив истечь срок действия политики HSTS и один раз получить доступ к сайту по HTTP.

Как добавить домен в список предварительной загрузки HSTS?

Чтобы добавить домен в список предварительной загрузки HSTS, сайты для этого домена должны соответствовать нескольким требованиям. Вот что вам нужно сделать, чтобы добавить свой домен:

  1. Убедитесь, что ваши сайты имеют действующие сертификаты и актуальные шифры.
  2. Если ваши сайты доступны по HTTP, перенаправьте все запросы на HTTPS.
  3. Убедитесь, что пункты 1 и 2 выше применимы ко всем вашим доменам и поддоменам (в соответствии с вашими записями DNS).
  4. Подавать заголовок Strict-Transport-Security через HTTPS для базового домена с max-age не менее 31536000 (1 год), директивой includeSubDomains и директивой preload . См. выше пример такого допустимого заголовка HSTS.
  5. Перейдите на hstspreload.org и отправьте свой домен с помощью формы. Если условия соблюдены, ваш домен будет поставлен в очередь на добавление.

В целях повышения безопасности браузер не получает доступ к списку предварительной загрузки и не загружает его. Он распространяется как жестко закодированный ресурс с новыми версиями браузера. Это означает, что для появления результатов в списке требуется довольно много времени, и для удаления домена из списка требуется довольно много времени. Если вы хотите добавить свой сайт в список, вы должны быть уверены, что сможете поддерживать полный HTTPS-доступ ко всем ресурсам в течение длительного периода времени. В противном случае вы рискуете, что ваш сайт станет полностью недоступным.

Как удалить домен из кэша HSTS в браузере?

При настройке и тестировании HSTS может потребоваться очистить кэш HSTS в браузере. Если вы неправильно настроили HSTS, вы можете получить ошибки, которые заблокируют вас на сайте, если вы не очистите данные. Вот методы для нескольких популярных браузеров. Также обратите внимание, что если ваш домен находится в списке предварительной загрузки HSTS, очистка кеша HSTS будет неэффективной, и нет возможности принудительно установить HTTP-соединение.

Удаление из Google Chrome

Чтобы удалить домен из кэша Chrome HSTS, следуйте этим инструкциям:

  1. Перейдите на chrome://net-internals/#hsts
  2. В разделе Удалить политики безопасности домена введите удаляемый домен в текстовое поле
  3. Нажмите кнопку Удалить рядом с текстовым полем
  4. .

После этого вы можете проверить успешность удаления:

  1. В Запросите раздел домена HSTS/PKP , введите домен для проверки в текстовое поле
  2. Нажмите кнопку Query рядом с текстовым полем
  3. .

  4. Ответ должен быть Не найдено

Удаление из Mozilla Firefox

Существует множество различных способов удаления информации HSTS из Firefox для данного домена. Все они подробно описаны в отдельной статье. Следующий — самый простой и быстрый, но он удаляет из кеша не только информацию HSTS.

  1. Закройте все открытые вкладки вашего сайта
  2. Откройте окно истории Firefox ( Библиотека > История > Показать всю историю )
  3. Поиск домена с помощью строки поиска
  4. Щелкните домен правой кнопкой мыши и выберите вариант Забыть об этом сайте
  5. Перезапустите Firefox

Удаление из Apple Safari

Удалить информацию HSTS из Safari очень просто:

  1. Закрыть Safari
  2. Удалите следующий файл из вашего домашнего каталога: ~/Library/Cookies/HSTS. plist
  3. Открыть Сафари

Удаление из Microsoft Internet Explorer и Microsoft Edge

Вы не можете удалить домен из кэша HSTS для браузеров Microsoft. Вы можете временно отключить HSTS только в Internet Explorer 11 и только в Windows 7 или Windows 8.1 (но не в Windows 10). Полные инструкции доступны в соответствующей статье службы поддержки Microsoft.

Часто задаваемые вопросы

Что такое ХСТ?

HSTS расшифровывается как HTTP Strict Transport Security. Это метод, используемый веб-сайтами, чтобы объявить, что доступ к ним должен осуществляться только через безопасное соединение (HTTPS). Если веб-сайт объявляет политику HSTS, браузер должен отклонять все HTTP-соединения и запрещать пользователям принимать небезопасные SSL-сертификаты.

Прочтите официальную стандартную интернет-документацию, определяющую HSTS — RFC 679.7.

Почему я должен использовать HSTS?

HSTS позволяет избежать атак «человек посередине» (MITM), использующих удаление SSL. Разделение SSL — это метод, при котором злоумышленник заставляет браузер подключиться к сайту с помощью HTTP, чтобы он мог перехватывать пакеты и перехватывать или изменять конфиденциальную информацию. HSTS также является хорошим способом защитить себя от перехвата файлов cookie.

Подробнее об атаках «человек посередине» (MITM).

Как работает HSTS?

Когда ваш браузер пытается подключиться к сайту, защищенному HSTS, с помощью HTTP, он перенаправляется на сайт HTTPS. Затем браузер получает заголовок HSTS. С этого момента ваш браузер запомнит использование только HTTPS при подключении к этому сайту и больше не будет пробовать HTTP (в течение времени, указанного в заголовке HSTS, обычно это год).

Посмотрите видео от Google Developers о HSTS.

Что такое предварительная загрузка HSTS и как ее использовать?

Чтобы ваши пользователи были защищены при первом посещении вашего сайта, вы можете добавить свой сайт в список предварительной загрузки HSTS в браузере. Это означает, что следующая версия браузера включит ваш сайт в статический список сайтов, которые можно загружать только с использованием HTTPS. Однако начните с внимательного прочтения этой статьи, чтобы узнать, как подготовиться и каковы последствия предварительной загрузки HSTS.

Добавьте свой сайт HSTS в список предварительной загрузки HSTS.

Получайте новейшие материалы по веб-безопасности
в свой почтовый ящик каждую неделю.

ПОДЕЛИТЬСЯ ЭТОЙ СТАТЬЕЙ
АВТОР

Томаш Анджей Нидецки (также известный как tonid) — главный писатель по кибербезопасности в Invicti, специализирующийся на Acunetix. Журналист, переводчик и технический писатель с 25-летним опытом работы в сфере ИТ, Томаш был управляющим редактором журнала hakin9 IT Security в первые годы его существования и вел крупный технический блог, посвященный безопасности электронной почты.

Стандарт только для HTTPS — HTTP Strict Transport Security

HTTP Strict Transport Security (HSTS) — это простой и широко поддерживаемый стандарт для защиты посетителей, гарантирующий, что их браузеры всегда подключаются к веб-сайту через HTTPS. HSTS существует, чтобы устранить необходимость в распространенной небезопасной практике перенаправления пользователей с URL-адресов http:// на https:// .

Когда браузер знает, что в домене включен HSTS, он делает две вещи:

  • Всегда использует соединение https:// , даже при переходе по ссылке http:// или после ввода домена в адресную строку без указания протокола.
  • Удаляет возможность для пользователей просматривать предупреждения о недействительных сертификатах.

Домен сообщает браузерам, что он включил HSTS, возвращая HTTP-заголовок через HTTPS-соединение.

В своей простейшей форме политика указывает браузеру включить HSTS для этого конкретного домена или поддомена и запомнить его на заданное количество секунд:

 Строгая транспортная безопасность: max-age=31536000;
 

В наиболее строгой и рекомендуемой форме политика HSTS включает все поддомены и указывает на готовность к «предварительной загрузке» в браузеры:

 Строгая транспортная безопасность: max-age=31536000; включать поддомены; предварительная загрузка
 

При использовании этой формы помните:

  • Политика должна быть развернута по адресу https://domain. gov , , а не https://www.domain.gov .
  • Все поддомены , связанные с родительским доменом, должны поддерживать HTTPS. (Каждому из них не обязательно иметь собственную политику HSTS.)

См. ниже примеры того, как установить политику HSTS на обычных веб-серверах .

Предыстория

Строгая транспортная безопасность была предложена в 2009 году по мотивам демонстрации Мокси Марлинспайк того, как враждебная сеть может понизить рейтинг соединений посетителей и использовать небезопасные перенаправления. Он был быстро принят несколькими основными веб-браузерами и окончательно оформлен как RFC 679.7 в 2012 году.

Основная проблема, которую решает HSTS, заключается в том, что даже после того, как веб-сайт включает HTTPS, посетители все еще могут пытаться подключиться через обычный HTTP. Например:

  • Когда пользователь вводит «gsa.gov» в адресную строку, браузеры по умолчанию используют http:// .
  • Пользователь может щелкнуть старую ссылку, которая ошибочно использует URL-адрес http:// .
  • Сеть пользователя может быть враждебной и активно перезаписывать https:// ссылки на http:// .

Веб-сайты, предпочитающие HTTPS, как правило, по-прежнему прослушивают подключения по HTTP, чтобы перенаправить пользователя на URL-адрес HTTPS. Например:

 $ curl --head http://github.com
HTTP/1.1 301 перемещен навсегда
Расположение: https://github.com/
 

Это перенаправление небезопасно и дает злоумышленнику возможность получить информацию о посетителе (например, файлы cookie из предыдущего безопасного сеанса) или злонамеренно перенаправить пользователя на фишинговый сайт.

Это можно решить, возвращая заголовок Strict-Transport-Security при каждом безопасном подключении пользователя. Например:

 $ curl --head https://github.com
HTTP/1. 1 200 ОК
Строгая транспортная безопасность: max-age=31536000; включить субдомены; предварительная загрузка
 

Это включает HSTS для github.com . Пока действует HSTS, нажатие любой ссылки на http://github.com приведет к тому, что браузер выдаст запрос непосредственно на https://github.com .

В приведенном выше примере браузер будет помнить политику HSTS в течение 1 года. Политика обновляется каждый раз, когда браузер снова видит заголовок, поэтому, если пользователь посещает https://github.com хотя бы раз в год, он будет защищен HSTS на неопределенный срок.

Предварительная загрузка HSTS

Чтобы пользователь мог воспользоваться преимуществами HSTS, его браузер должен увидеть заголовок HSTS хотя бы один раз. Это означает, что пользователи не защищены до первого успешного безопасного подключения к данному домену.

Кроме того, во многих случаях никогда не может быть первого посещения на https://domain. gov . Например:

  • Многие федеральные веб-сайты перенаправляют напрямую с http://domain.gov на https://www.domain.gov .
  • Многие федеральные домены, которые используются исключительно для перенаправления, будут перенаправлять с http://domain.gov прямо на https://destination.gov .

В любом случае https://domain.gov никогда не посещается, а это означает, что подключающиеся клиенты никогда не увидят политику HSTS с директивой includeSubDomains , которая применяется ко всей зоне.

Чтобы решить эту проблему, команда безопасности Chrome создала «список предварительной загрузки HSTS» : список доменов, встроенных в Chrome, для которых Strict Transport Security включается автоматически даже при первом посещении.

Firefox, Safari, Opera и Edge также включают список предварительной загрузки HSTS Chrome, что делает эту функцию общей для всех основных браузеров.

Как предварительно загрузить домен

Команда безопасности Chrome позволяет любому добавить свой домен в список при условии, что он соответствует следующим требованиям:

  • HTTPS включен в корневом домене (например, https://donotcall.gov ) и все субдомены (например, https://www.donotcall.gov ) — особенно субдомен www , если для него существует DNS-запись. Это обязательно включает любые поддомены, используемые исключительно во внутренних сетях.
  • Политика HSTS включает все поддомены с длинным max-age и флагом preload , указывающим, что владелец домена согласен на предварительную загрузку.
  • Веб-сайт перенаправляется с HTTP на HTTPS, по крайней мере, в корневом домене.

Пример допустимого заголовка HSTS для предварительной загрузки:

 Strict-Transport-Security: max-age=31536000; включать поддомены; предварительная загрузка
 

В долгосрочной перспективе, когда Интернет полностью перейдет на HTTPS, а браузеры могут начать постепенно отказываться от простого HTTP и по умолчанию использовать HTTPS, список предварительной загрузки HSTS (и сам HSTS) может в конечном итоге стать ненужным.

До этого времени список предварительной загрузки HSTS представлял собой простой и эффективный механизм блокировки HTTPS для всего домена.

HSTS в качестве принудительной функции

Strict Transport Security обеспечивает существенные преимущества безопасности для посетителей, особенно посетителей во враждебных сетях.

Тем не менее, он также очень ценен как организационная функция принуждения и механизм соблюдения.

Когда владелец домена следует рекомендациям в этой статье и устанавливает политику HSTS в своем базовом домене с includeSubDomains и preload , владелец домена говорит «Каждая часть нашей веб-инфраструктуры использует HTTPS, и так будет всегда». — и с этого момента дает браузерам разрешение энергично применять его.

Это четкое и поддающееся проверке обязательство, которое дает любому, кто наблюдает за переходом организации на HTTPS, способ пометить домены как «выполненные».

Еще больше уменьшаем масштаб: технически возможно предварительно загрузить HSTS для всего домена верхнего уровня (например, «. gov»), как Google впервые сделал с .гугл . Будучи относительно небольшим, централизованно управляемым доменом верхнего уровня, возможно, когда-нибудь .gov сможет туда попасть.

Конфигурация для обычных веб-серверов

На nginx вы должны применить команду add_header к соответствующей конфигурации виртуального хоста. Этот веб-сайт, https.cio.gov , размещен на nginx и использует этот пакет правил HTTPS для установки этого заголовка:

 add_header Strict-Transport-Security 'max-age=31536000; включать поддомены; предварительная загрузка; всегда;
 

На Apache вы должны применить директиву Header , чтобы всегда устанавливать заголовок HSTS, например:

 Заголовок всегда устанавливает Strict-Transport-Security «max-age=31536000;
 

В системах Microsoft , работающих под управлением IIS (Internet Information Services), отсутствуют файлы «. htaccess» для реализации настраиваемых заголовков. Приложения IIS используют для настройки центральный файл web.config .

Для IIS 7.0 и выше пример Конфигурация файла web.config ниже будет обрабатывать безопасное перенаправление с HTTP на HTTPS с включенным HSTS для HTTPS:

 
<конфигурация>
<системный.веб-сервер>
<переписать>
<правила>

<соответствие URL="(.*)" />
<условия>





<исходящие правила>

This entry was posted in Популярное