Как заставить клиентов запрашивать через HTTPS без предварительной загрузки HSTS? - PullRequest
0 голосов
/ 31 января 2019

Если я запрашиваю наш веб-сайт, используя HTTP http://example.com, ответ будет 301 Moved Permanently с заголовком Location, установленным на https://example.com - что, конечно, небезопасно из-за атаки MIM.

Разве нет способа просто ответить браузеру на что-то вроде «сделать тот же запрос снова, но на этот раз через HTTPS», вместо того, чтобы явно указывать браузеру URL-адрес?

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

1 Ответ

0 голосов
/ 31 января 2019

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

В Apache он настроен со следующим конфигом:

Header always set Strict-Transport-Security "max-age=60;"

Отправляет сообщение о том, что браузер запомнит этот заголовок на 60 секунд.Вы должны увеличить это, поскольку вы подтверждаете, что нет никаких проблем.Часто рекомендуется настройка 63072000 (2 года).

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

Например, давайте представим, что вы ранее вошли в свой интернет-банк по домашней Wi-Fi, браузер запомнил настройку HSTS, а затем вы посетили местную кофейню.Здесь вы пытаетесь подключиться к бесплатному WiFi, но вместо этого подключаетесь к хакерскому WiFi.Если вы зайдете в свой интернет-банк с помощью ссылки HTTP, закладки или введя URL-адрес, HSTS включится, и вы сразу же перейдете по HTTPS, и хакер не сможет расшифровать ваш трафик (в пределах разумного).

Так.Все хорошо.Вы также можете добавить атрибут includeSubDomains:

Header always set Strict-Transport-Security "max-age= 63072000; includeSubDomains"

, который добавляет дополнительную безопасность.

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

Однако Я действительноне люблю предзагрузку, если честно .Я просто считаю, что это вне вашего контроля опасно.Поэтому, если вы обнаружите, что какой-то домен не использует HTTPS (например, http://blog.example.com или http://intranet.example.com или http://dev.example.com), то, как только предварительная загрузка вступит в силу - BANG, вы заставили себя обновитьсяэто и быстро, так как они недоступны до тех пор. Обращение из браузера занимает как минимум месяцы, и немногие могут смириться с этим временем простоя. Конечно, вы должны это проверить, но для этого нужно набрать https://example.com (вместо https://www.example.com) и использование includeSubDomains для полной репликации того, что будет делать предварительная загрузка, и не все это делают. Есть много, много примеров сайтов, получающих эту ошибку .

Вы также должныспросите, от чего вы защищаетесь и какие риски вы подвергаете себя? С помощью ссылки http: // хакер может получить доступ к файлам cookie (которые можно защитить с помощью атрибута secure в файлах cookie) и, возможно, перехватить.трафик, удерживая вас на http: // вместо обновления до https: // (которое в основном смягчается с помощью HSTS, а все чаще помечаетсяв любом случае браузером ).Помните, что даже в сети WiFi злоумышленников зеленый замок означает, что соединение защищено (в разумных пределах).Так что, пока вы ищете это (и ваши пользователи делают, что сложнее, я признаю), риски достаточно малы.Вот почему переход на HTTPS везде, а затем HTTPS по умолчанию так важен.Поэтому для большинства сайтов я думаю, что HSTS без предварительной загрузки является достаточным, и оставляет контроль над вами владельцем сайта.

...