Что такое HSTS и как он защищает HTTPS от хакеров?
Технологии с объяснениями

Что такое HSTS и как он защищает HTTPS от хакеров?

HTTPS обеспечивает безопасность посетителей сайта, но он не совершенен. Вот как HSTS работает за кулисами, чтобы защитить HTTPS от хакеров

Возможно, вы убедились, что на ваших сайтах включен протокол SSL, а в вашем браузере горит зеленый замок безопасности. Однако вы могли забыть о маленьком защитнике HTTP – HTTP Strict Transport Security (HSTS)

Что такое HSTS, и как он может помочь обеспечить безопасность вашего сайта?

Что такое HTTPS?

Hyper Text Transfer Protocol Secure (HTTPS) – это защищенная версия веб-сайта (HTTP). Шифрование обеспечивается с помощью протокола Secure Sockets Layer (SSL) и подтверждается сертификатом SSL. При подключении к веб-сайту HTTPS информация, передаваемая между веб-сайтом и пользователем, шифруется

Это шифрование помогает защитить вас от кражи данных с помощью атак типа ‘человек посередине’ (MITM). Дополнительный уровень безопасности также немного улучшает репутацию вашего сайта. На самом деле, добавить SSL-сертификат настолько просто, что многие веб-хостинги добавляют его на ваш сайт по умолчанию, бесплатно! Тем не менее, HTTPS все еще имеет некоторые недостатки, которые HSTS может помочь исправить

Что такое HSTS?

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

Вы можете не знать, что даже если вы правильно настроили SSL-сертификат и включили HTTPS для вашего сайта, HTTP-версия все еще доступна. Это верно, даже если вы настроили переадресацию с помощью 301 Permanent Redirection

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

Включение HSTS предотвратит атаки на протокол SSL и перехват файлов cookie – две дополнительные уязвимости сайтов с SSL. Помимо того, что HSTS делает сайт более безопасным, он также ускоряет загрузку сайтов, устраняя один из этапов процедуры загрузки

Что такое SSL Stripping?

Хотя HTTPS является огромным улучшением по сравнению с HTTP, он не является неуязвимым для взлома. Снятие SSL – это очень распространенный MITM-хак для сайтов, который использует перенаправление для отправки пользователей с HTTP на HTTPS-версию сайта

301 (постоянное) и 302 (временное) перенаправление в основном работает следующим образом:

  1. Пользователь набирает google.com в адресной строке своего браузера.
  2. Браузер первоначально пытается загрузить http://google.com по умолчанию.
  3. ‘Google.com’ настроен с постоянным перенаправлением 301 на https://google.com.
  4. Браузер видит перенаправление и загружает вместо него https://google.com.

С помощью отмены SSL хакер может использовать время между шагом 3 и шагом 4, чтобы заблокировать запрос перенаправления и не дать браузеру загрузить защищенную (HTTPS) версию сайта. Поскольку в этом случае вы получаете доступ к незашифрованной версии сайта, любые введенные вами данные могут быть похищены

Хакер также может перенаправить вас на копию сайта, на который вы пытаетесь зайти, и перехватить все ваши данные, которые вы вводите, даже если они выглядят безопасными

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

Как включение HSTS предотвращает отсечение SSL?

Включение HSTS заставляет браузер загружать защищенную версию сайта и игнорирует любые перенаправления и любые другие вызовы для открытия HTTP-соединения. Это закрывает уязвимость перенаправления, существующую при 301 и 302 перенаправлении

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

Для борьбы с этим Chrome предварительно загружает список веб-сайтов, на которых включена функция HSTS. Пользователи могут сами отправлять сайты с поддержкой HSTS в список предварительной загрузки, если они соответствуют необходимым (простым) критериям

Сайты, добавленные в этот список, будут жестко закодированы в будущих версиях обновлений Chrome. Это гарантирует, что все, кто посещает ваши сайты с поддержкой HSTS в обновленных версиях Chrome, останутся в безопасности

Firefox, Opera, Safari и Internet Explorer имеют свои собственные списки предварительной загрузки HSTS, но они основаны на списке Chrome на сайте hstspreload.org

Как включить HSTS на вашем сайте

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

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

Strict-Transport-Security: max-age=31536000; includeSubDomains

Это добавляет cookie-файл с максимальным возрастом доступа на один год (что такое cookie?), который включает ваш веб-сайт и любые поддомены. После того, как браузер получил доступ к сайту, он не сможет получить доступ к незащищенной HTTP-версии сайта в течение года. Убедитесь, что все поддомены этого домена включены в SSL-сертификат и имеют включенный HTTPS. Если вы забудете об этом, поддомены будут недоступны после сохранения файла.htaccess

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

Примечание: Перед добавлением годичного максимального возраста, сначала протестируйте весь ваш сайт с пятиминутным максимальным возрастом, используя:  max-age=300;

Google даже рекомендует протестировать ваш сайт и его производительность (трафик) с недельным и месячным значением, прежде чем вводить двухлетний max-age

Five minutes: Strict-Transport-Security: max-age=300; includeSubDomains
One week: Strict-Transport-Security: max-age=604800; includeSubDomains
One month: Strict-Transport-Security: max-age=2592000; includeSubDomains

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

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

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

  1. Использовать действующий SSL-сертификат.
  2. Перенаправление с HTTP на HTTPS на том же хосте, если вы прослушиваете порт 80.
  3. Передача всех поддоменов по HTTPS. В частности, вы должны поддерживать HTTPS для www.subdomain , если запись DNS для этого поддомена существует.
  4. Передавать заголовок HSTS на базовый домен для запросов HTTPS:
  5. max-age должен быть не менее 31536000 секунд (1 год).
  6. Директива includeSubDomains должна быть указана.
  7. Должна быть указана директива предварительной загрузки.
  8. Если вы обслуживаете дополнительное перенаправление с вашего HTTPS сайта, это перенаправление должно иметь заголовок HSTS (а не страница, на которую оно перенаправляет).

Если вы хотите добавить свой сайт в список предварительной загрузки HSTS, убедитесь, что вы добавили необходимый тег preload. Параметр ‘preload’ означает, что вы хотите добавить ваш сайт в список предварительной загрузки HSTS в Chrome. Заголовок ответа в.htaccess должен выглядеть следующим образом:

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

Мы рекомендуем вам добавить свой сайт на сайт hstspreload.org. Требования довольно легко выполнить, и это поможет защитить посетителей вашего сайта, а также потенциально улучшить рейтинг вашего сайта в поисковых системах

Об авторе

Алексей Белоусов

Привет, меня зовут Филипп. Я фрилансер энтузиаст . В свободное время занимаюсь переводом статей и пишу о потребительских технологиях для широкого круга изданий , не переставая питать большую страсть ко всему мобильному =)

Комментировать

Оставить комментарий

ВАМ БУДЕТ ИНТЕРЕСНО