Было много дискуссий, пока я изучал, как сделать весь мой сайт https. Большинство ответов заключалось в том, чтобы перенаправить http на https (файл .htaccess), что не очень хорошо, потому что не стоит выполнять одну и ту же работу дважды (два запроса). Кроме того, «человек посередине» сначала берет http, и я хочу, чтобы мой сайт перешел прямо на https. Есть ли другой способ сделать весь сайт https и как это сделать? Например, когда пользователь вводит example.com, этот example.com автоматически переходит на https, без перенаправления с http или чего-либо еще в первую очередь?
14
Ответы:
Нет. Вы не можете волшебным образом заставить браузер посетителя выбрать правильный протокол. Перенаправление это способ сделать это.
источник
http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security позволяет вашему серверу указывать, что доступ к домену должен осуществляться только через HTTPS. Это относится только к последующим запросам, поэтому будет начальная загрузка HTTP, но будущие запросы будут загружать HTTPS, даже если кто-то явно введет HTTP.
IE пока не поддерживает, но все остальные специализируются.
источник
Как уже говорили другие, вы не можете заставить пользователей выбрать правильный протокол. Но когда пользователь пытается использовать HTTP, что вы должны делать? Перенаправление также недостаточно, поскольку злоумышленник, сидящий между вами и клиентом, может перехватить перенаправление, поэтому клиент никогда его не увидит. Клиент продолжит отправлять обычный HTTP, а злоумышленник уберет слой SSL с сервера ( атака с разбором SSL ).
Единственный надежный способ предотвратить это - вообще не обслуживать HTTP . Не отвечайте на порт 80, за исключением, может быть, обслуживания простой текстовой страницы, предлагающей пользователю повторить попытку с HTTPS (но не предоставляя ссылку, которой злоумышленник может манипулировать). Это заставит пользователя вводить данные
https://
в свой браузер, поэтому он установит соединение с SSL и предотвратит атаку MITM.источник
https://
. Вместо этого они собираются сказать «да, сайт сломан» и уйти. В лучшем случае может бытьwww.example.com
ответ как по HTTP, так и по HTTPS, но само приложение работает на чем-то похожемadmin.example.com
только на HTTPS.Не совсем верно: как использовать 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
источник