Назад | Перейти на главную страницу

Принудительно использовать https для всего сайта без перенаправления http на https

Пока я искал, как сделать свой сайт https, было много обсуждений. Большинство ответов было перенаправить http на https (файл .htaccess), что нехорошо, потому что нехорошо выполнять одно и то же задание дважды (два запроса). Кроме того, «человек посередине» сначала берет на себя http, и я хочу, чтобы мой сайт находился прямо на https. Есть ли другой способ сделать весь ваш сайт https и как это сделать? Например, когда пользователь вводит example.com, этот example.com автоматически переходит на https без перенаправления с http или чего-либо еще?

http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security позволяет вашему серверу указать, что доступ к домену должен осуществляться только через HTTPS. Это применимо только к последующим запросам, поэтому будет начальная загрузка HTTP, но будущие запросы будут загружать HTTPS, даже если кто-то явно введет HTTP.

IE пока не поддерживает его, но все остальные компании поддерживают.

Нет. Вы не можете волшебным образом заставить браузер посетителя выбрать правильный протокол. Перенаправление - это способ сделать это.

Как уже говорили другие, вы не можете заставить пользователей выбрать правильный протокол. Но что делать, когда пользователь пытается использовать HTTP? Перенаправления также недостаточно, потому что злоумышленник, сидящий между вами и клиентом, может перехватить перенаправление, поэтому клиент никогда его не увидит. Клиент будет продолжать отправлять простой HTTP, а злоумышленник удалит уровень SSL с сервера (Атака с удалением SSL).

Единственный верный способ предотвратить это - не обслуживать HTTP вообще. Не отвечайте на порт 80, за исключением, возможно, обслуживания простой текстовой страницы, предлагающей пользователю повторить попытку с HTTPS (но не предоставление ссылки, которой злоумышленник может манипулировать). Это заставит пользователя ввести https:// в свой браузер, чтобы они инициировали соединение с помощью SSL и предотвратили атаку MITM.

Не совсем верно: Как использовать DNS / имена хостов или другие способы разрешения на определенный IP: порт

Способ есть, но большинство браузеров не поддерживают rfc2782.

У ceejayoz есть лучший ответ для предотвращения конкретно упомянутой атаки здесь, но я хочу также указать, чего здесь не хватает многим людям, а именно, что HTTP уже выяснил другую часть. Вы хотите сделать постоянное перенаправление 301. Это указывает клиенту делать дальнейшие запросы на новый адрес. Итак, да, если кто-то наберет неправильный URL-адрес, он сделает 2 запроса, НО в будущем хороший клиент должен обнаруживать запросы к этому URL-адресу и вместо этого делать правильный запрос, чтобы предотвратить дальнейшие потраченные впустую запросы. Проблема в том, что это только для этого точного URL. HSTS улучшает эту схему, также говоря: «в течение следующих n секунд также не разрешайте никаких незащищенных подключений из этого домена».

Пользователи не должны посещать конфиденциальные сайты в небезопасных местах. Особенно им не следует подписываться на них в небезопасных местах. Это основные принципы безопасности пользователей, которым следует учить, как «не открывайте вложения из ненадежных источников». Что действительно является лучшим ответом для предотвращения атак MiM для сайтов, которые никогда не посещались.

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

Дальнейшее чтение: http://coderrr.wordpress.com/2010/12/27/canonical-redirect-pitfalls-with-http-strict-transport-security-and-some-solutions/

http://dev.chromium.org/sts