Каждый раз, вводя логин и пароль на сайте, мы доверяем сервису свои персональные данные.
Но мало кто задумывается, как именно эти данные передаются от браузера к серверу.
В основе передачи лежат протоколы HTTP и HTTPS, и разница между ними,
это разница между «открытым конвертом» и «запечатанным пакетом с сургучной печатью».
Разберёмся на живом примере авторизации.
Что такое HTTP и HTTPS в двух словах
- HTTP (HyperText Transfer Protocol) — это протокол передачи данных в «открытом виде».
Любой, кто имеет доступ к сети, может прочитать передаваемую информацию. - HTTPS (HTTP Secure), это HTTP + шифрование (TLS/SSL).
Данные «упаковываются» в криптографический туннель, и даже если их перехватят,
расшифровать без секретного ключа не получится.
Авторизация по HTTP: демонстрация уязвимости
2.1 Как выглядит процесс без шифрования
- Пользователь заходит на сайт
http://vulnerable-shop.ru/login. - Форма авторизации отправляет POST-запрос:
POST /login HTTP/1.1 Host: vulnerable-shop.ru Content-Type: application/x-www-form-urlencoded Content-Length: 32 username=bob&password=Alice123!
- Данные летят по сети в открытом тексте.
2.2 Что может пойти не так
Любой злоумышленник в той же Wi-Fi-сети, используя простой сниффер (например,
Wireshark), видит:
- логин bob
- пароль Alice123!
- cookie сессии, которую можно «подсунуть» браузеру и войти без логина/пароля.
Авторизация по HTTPS: как всё защищено
3.1 Установление защищённого соединения (рукопожатие TLS)
- Браузер запрашивает у сервера цифровой сертификат.
- Сервер присылает публичный ключ и данные о владельце.
- Браузер проверяет подлинность сертификата (подпись центра сертификации).
- Стороны генерируют общий секретный ключ для симметричного шифрования.
3.2 Пример защищённого запроса
POST /login HTTP/1.1 Host: secure-shop.ru Content-Type: application/x-www-form-urlencoded Content-Length: 224 EncryptedBody: 0x7f8a4b9c2e...
Внутри шифрованного туннеля видны только нечитаемые байты.
Даже если злоумышленник перехватит траффик, он не сможет:
- расшифровать логин/пароль;
- подменить данные без нарушения контрольной суммы;
- выполнить атаку «человек посередине» (MITM).
Визуальное сравнение
| Критерий | HTTP | HTTPS |
|---|---|---|
| Шифрование трафика | ❌ отсутствует | ✅ TLS 1.2/1.3 |
| Индикатор в браузере | «Не безопасно» | 🔒 «Защищённое соединение» |
| Возможность MITM | легко | крайне затруднительно |
| SEO-рейтинг Google | понижается | повышается |
Как узнать, что сайт защищён, перед авторизацией
- Посмотрите адресную строку: должен быть префикс https://;
- Нажмите на иконку 🔒 → «Сертификат» → убедитесь, что имя владельца совпадает с доменом.
- Проверьте наличие HSTS-заголовка: в консоли DevTools → Network →
strict-transport-security: max-age=31536000.
Мини-чек-лист для разработчика
- Никогда не отправляйте пароли по HTTP, даже на внутренних страницах.
- Используйте HTTP-only и Secure cookie-флаги, чтобы защитить сессию.
- Настройте автоматический редирект с http → https.
- Обновляйте TLS до актуальной версии (1.2+).
Авторизация по HTTP — это как голосовать «открытым бюллетенем»:
каждый в сети видит ваш логин и пароль.
HTTPS же превращает ваши данные в неразборчивый поток байтов,
доступный только вам и серверу.
Поэтому, прежде чем вводить свои учётные данные, просто проверьте:
горит ли замочек в адресной строке?
Если нет — лучше закройте вкладку и никуда не заходите.