HTTPS (Hypertext Transfer Protocol Secure) — защищённая версия HTTP, в которой веб-трафик шифруется, а подлинность сайта подтверждается с помощью протокола TLS.
Как работает HTTPS
HTTPS — это обычный HTTP, передаваемый внутри TLS-соединения, по умолчанию на TCP-порт 443 (изначально описан в RFC 2818). Открывая адрес https://, браузер выполняет TLS-рукопожатие, проверяет, что цифровой сертификат сервера действителен для этого домена и подписан доверенным центром сертификации, а затем обменивается зашифрованными запросами и ответами. Значок замка означает, что проверка прошла успешно. HTTP/3 обеспечивает ту же защиту поверх QUIC.
Почему HTTPS важен
Без шифрования любой на пути трафика — пользователь общедоступного Wi-Fi, взломанный роутер или провайдер — может читать и изменять данные. В 2010 году расширение для браузера Firesheep показало, как легко украсть сессионные cookie с незашифрованных сайтов в общей сети Wi-Fi. HTTPS защищает пароли, cookie и данные форм и не позволяет внедрять в страницы рекламу или вредоносный код. С 2018 года Chrome помечает обычные HTTP-страницы как «Не защищено», а бесплатные сертификаты Let’s Encrypt помогли сделать HTTPS стандартом для подавляющей части веб-трафика.
Однако у HTTPS есть ограничения:
- Он подтверждает лишь, что вы подключены к домену из адресной строки, — у фишинговых сайтов тоже бывают действительные сертификаты.
- SSL stripping, продемонстрированный инструментом sslstrip в 2009 году, переводит пользователя на HTTP в ходе атаки «человек посередине», если сайт не требует HTTPS принудительно.
- Он не защищает данные, попавшие на скомпрометированный сервер или в заражённый браузер.
Рекомендации
- Отдавать все страницы по HTTPS и перенаправлять HTTP-запросы.
- Включить HTTP Strict Transport Security (HSTS, RFC 6797) и рассмотреть предзагрузку HSTS.
- Помечать cookie флагом Secure и избегать смешанного контента.
- Пользователям — проверять доменное имя, а не только замок.