HSTS - это заголовок ответа веб-безопасности. Название является аббревиатурой от «HTTP Strict Transport Security». Функция заголовка HSTS - заставить браузеры подключаться к веб-сайтам с помощью HTTPS.
Совет: HTTPS использует шифрование для защиты вашего веб-соединения от хакеров, пытающихся изменить или контролировать его. HTTP не имеет такой защиты, поэтому хакер в нужном месте может отслеживать и изменять ваш HTTP-трафик.
Заголовок веб-ответа - это часть метаданных, отправленных сервером, когда он отвечает на веб-запросы. Подмножество этих заголовков часто называют заголовками безопасности, поскольку их цель - повысить безопасность веб-сайта и пользователя.
Заголовок HSTS состоит из двух обязательных и двух необязательных частей. Имя заголовка «Strict-Transport-Security», а затем оператор и значение «max-age» являются обязательными. Другая пара операторов, «includeSubDomains» и «preload», также иногда используется.
Когда браузер получает ответ HTTPS с заголовком HSTS, ему дается указание подключиться к этому веб-сайту и всем ресурсам на нем, используя исключительно HTTPS в течение таймера «max-age». «Максимальный возраст» - это переменная, которая описывает, как долго параметр должен запоминать браузер. Значение «max-age» указывается в секундах, рекомендуемое значение - «31536000», что соответствует одному году.
Идея состоит в том, что в течение этого таймера, который сбрасывается при каждой последующей загрузке страницы, браузеру потребуется HTTPS-соединение и отклонить любые HTTP-ресурсы. Это защищает от атак типа "человек посередине", когда хакер между вами и веб-сервером может манипулировать получаемыми вами ответами.
Основная точка, в которой это защищает вас, - это первое подключение. Обычно, когда вы подключаетесь к веб-сайту, вы можете запросить веб-сайт HTTP, а затем получить перенаправление на веб-сайт HTTPS. К сожалению, хакер, занимающий промежуточное положение, может предотвратить переход на HTTPS и затем украсть или отслеживать вашу активность на веб-сайте. Однако после того, как заголовок HSTS был обнаружен браузером, ваш браузер установит даже первое соединение по HTTPS, защищая вас от хакеров.
HSTS также предотвращает загрузку любых небезопасных ресурсов, которые также могут быть злонамеренно изменены злоумышленником, если они были доставлены по HTTP.
Оператор includeSubDomains используется, чтобы указать, что заголовок также должен применяться ко всем поддоменам веб-сайта.
Список предварительной загрузки HSTS
Вы можете заметить, что HSTS по-прежнему не защищает вас при первом подключении к веб-сайту. Здесь на помощь приходит оператор «предварительной загрузки». Веб-сайты могут заявить о себе для включения в список предварительной загрузки HSTS, оператор предварительной загрузки является обязательным индикатором, если это так. Список предварительной загрузки HSTS регулярно обновляется и сохраняется в браузере. Если сайт включен в него, браузер применит к нему защиту HSTS. Это происходит даже при самом первом подключении, прежде чем браузер сможет увидеть заголовок ответа HSTS.
Совет: для добавления в список предварительной загрузки HSTS требуется «максимальный возраст» в год или более.
Проблемы с HSTS
Одним из основных моментов HSTS является то, что он выдает сообщение об ошибке, если есть какие-либо проблемы с HTTPS-соединением. В качестве дополнительной меры безопасности пользователи не должны иметь возможность обходить сообщения об ошибках HSTS, как это было бы возможно с обычными ошибками HTTPS.
К сожалению, это может вызвать проблемы, если компания развертывает HSTS до того, как весь веб-сайт и все используемые на нем ресурсы поддерживают HTTPS. В этом случае пользователи начнут видеть сообщения об ошибках безопасности HSTS, которые они не могут обойти, что по сути полностью нарушит работу веб-сайта. Хуже всего то, что простое удаление заголовка HSTS не решит проблему для этих пользователей, поскольку их браузер будет продолжать применять HSTS для потенциально многомесячного «максимального возраста».
Таким образом, критически важно, чтобы при первом развертывании заголовка использовался короткий «максимальный возраст». Если есть какие-либо проблемы, то они сохраняются только в течение короткого времени после обнаружения. Настроить длинный таймер HSTS можно только после того, как вы будете уверены, что ваш веб-сайт полностью совместим с HSTS.
Совет: также можно установить «max-age» равным 0, это по существу удаляет сохраненную запись HSTS от всех, кто ее видит. Это может помочь, если возникнет проблема, но затронет пользователей только тогда, когда они решат повторить попытку.