Как BBC внедряет HSTS для повышения безопасности и производительности.

BBC внедряет HSTS на своем веб-сайте для повышения безопасности и производительности. Узнайте, что это значит и как HSTS может вам помочь.

В последние годы внедрение HTTPS неуклонно растет. Согласно веб-альманаху HTTP Archive за 2021 год, около 91% всех запросов как для настольных, так и для мобильных устройств обрабатывались через HTTPS . HTTPS не просто существует, он является необходимой предпосылкой для использования таких функций, как Service Worker , и современных протоколов, таких как HTTP/2 и HTTP/3 .

Недавно Нил Крейг — ведущий технический архитектор BBC — написал в Твиттере, что HTTP Strict Transport Security (HSTS) постепенно внедряется на bbc.com . Узнайте, что это значит для BBC и что это может значить для вас.

Проблема

Веб-серверы часто прослушивают запросы как на портах 80, так и на 443. Порт 80 предназначен для небезопасных HTTP-запросов, а порт 443 — для безопасных HTTPS. Это может создать проблему, поскольку когда вы вводите адрес в адресную строку без префикса протокола https:// — как это обычно делает большинство пользователей — некоторые браузеры будут перенаправлять трафик на небезопасную HTTP-версию сайта по устаревшим причинам ( хотя это не всегда так ).

Распространенный способ гарантировать, что пользователи не получат доступ к незащищенной версии веб-сайта, — это перенаправление HTTP-to-HTTPS для всех запросов. Это, конечно, работает, но запускает следующую цепочку событий:

  1. Сервер получает HTTP-запрос.
  2. Сервер выполняет перенаправление для перехода к HTTPS-эквиваленту запрошенного ресурса.
  3. Сервер должен согласовать безопасное соединение с браузером.
  4. Содержимое загружается как обычно.

Хотя перенаправления работают нормально, их можно неправильно настроить таким образом, чтобы доступ к небезопасной версии сайта все равно оставался возможным. Даже если все настроено правильно, все равно существует проблема безопасности, заключающаяся в том, что пользователь все равно будет подключаться через небезопасный HTTP на этапе перенаправления, что подвергает пользователей возможности опасных атак «человек посередине» .

Введите HSTS

Поддержка браузера

  • Хром: 4.
  • Край: 12.
  • Фаерфокс: 4.
  • Сафари: 7.

Источник

HSTS определяется заголовком ответа HTTP Strict-Transport-Security для запросов HTTPS. Если этот параметр установлен, обратные посещения веб-сайта будут вызывать специальное перенаправление, известное как «Внутреннее перенаправление 307», при котором логику перенаправления обрабатывает браузер, а не сервер. Это предотвращает перехват запроса, поскольку он никогда не покидает браузер, поэтому он более безопасен. В качестве дополнительного бонуса эти типы перенаправления чрезвычайно быстры, поэтому любая заметная задержка во время перехода с HTTP на HTTPS исключается.

Внутреннее перенаправление 307 с HTTP на HTTPS, запускаемое заголовком HSTS. Перенаправление 307 занимает всего 2 миллисекунды.

Синтаксис аналогичен директиве max-age Cache-Control , заголовок HSTS определяет директиву max-age . Эта директива принимает значение в секундах, которое определяет, как долго политика действительна:

Strict-Transport-Security: max-age=3600

В предыдущем примере политика должна вступить в силу только в течение часа.

Развертывание HSTS

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

BBC выбрала правильный подход к развертыванию HSTS. Как упомянул в своем твите Нил Крейг , первоначальное значение, установленное для bbc.com, было max-age=10 .

Такой подход означает, что изначально политика действовала только в течение десяти секунд. Это не дает особой пользы, но идея состоит в том, чтобы выяснить, могут ли вообще возникнуть проблемы с применением HSTS. Со временем вы можете постепенно увеличивать политику и проверять, возникают ли проблемы. На момент написания этой статьи bbc.com указал политику HSTS max-age=86400 , и со временем она почти наверняка увеличится.

Вы, конечно, не хотите выходить из ворот с длинным значением max-age при развертывании HSTS. Вы можете внезапно обнаружить, что начинаете пытаться исправить проблемы, в то время как пользователи сталкиваются с проблемами. Начните с малого и постепенно увеличивайте! Если вы уверены, что все в порядке, вы можете установить директиву max-age на гораздо более длительный период времени. После полного развертывания рекомендуется установить max-age на один или два года .

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

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

Попробуйте сами

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