Основы веб-протоколов и безопасность коммуникаций

HTTP и HTTPS: протоколы и безопасность

📚 26 вопросовПройти тест →
Лекция

HTTP и HTTPS: протоколы и безопасность

Основы веб-протоколов и безопасность коммуникаций

Введение: открытка vs запечатанный конверт ✉️🔒

HTTP — это как открытка: её может прочитать любой, кто окажется «по пути».
HTTPS — как запечатанный конверт с проверкой паспорта отправителя.
В вебе мы постоянно передаём логины, токены и личные данные, поэтому выбор протокола — это не «техническая деталь», а основа доверия.
💡 Совет: если есть форма входа, оплаты или личный кабинет — HTTPS обязателен.
Вывод: HTTP подходит для публичной информации, HTTPS — для всего остального.

Проблема → решение

Проблема: без защиты данные можно перехватить или подменить.
Решение: HTTPS шифрует канал, подтверждает подлинность сервера и защищает целостность данных.
Вывод: HTTPS делает связь безопасной и проверяемой.

Чем помогает и как работает

HTTPS защищает логины, платежи и личные данные от перехвата и подмены. Он подтверждает, что вы общаетесь именно с нужным сервером.
Как это работает:
  1. Браузер открывает https://... и получает сертификат.
  2. Проверяет цепочку доверия и договаривается о ключах (TLS).
  3. Дальше весь трафик шифруется между клиентом и сервером.
Вывод: HTTPS = шифрование + проверка сервера, поэтому он обязателен для чувствительных данных.

Ключевые термины (простыми словами)

  • HTTP (HyperText Transfer Protocol — протокол передачи гипертекста) — правила обмена запросами и ответами.
  • HTTPS (HTTP Secure — защищённый HTTP) — HTTP поверх шифрования TLS.
  • TLS (Transport Layer Security — безопасность транспортного уровня) — протокол шифрования канала.
  • SSL (Secure Sockets Layer — устаревший протокол) — старое название, в проде не используется.
  • Certificate (сертификат) — цифровой «паспорт» сервера.
  • CA (Certificate Authority — центр сертификации) — организация, которая подтверждает сертификат.
  • Handshake (рукопожатие) — обмен ключами перед началом защищённого общения.
  • Header (заголовок) — метаданные запроса/ответа.
  • HSTS (Strict-Transport-Security) — политика «всегда HTTPS».
  • Mixed Content (смешанный контент) — когда HTTPS‑страница грузит HTTP‑ресурсы.
Вывод: эти термины — база для понимания безопасности веба.

Самое важное (must‑know)

  • HTTPS обязателен для логинов, оплат и личных данных.
  • Сертификат должен быть от доверенного CA (самоподписанный — не для прода).
  • TLS 1.2/1.3 — стандарт, старые версии выключаем.
  • HSTS + редирект фиксируют «всегда HTTPS».
  • Токены нельзя передавать в URL — они утекут в логи и историю.
  • Secure + HttpOnly + SameSite — минимум для cookies сессии.
Вывод: эти правила — фундамент безопасного веба.

1. HTTP — базовый протокол обмена

Назначение: передавать запросы и ответы между клиентом и сервером.
Простыми словами: браузер и сервер общаются открыто, без защиты.
Аналогия: разговор по телефону без шифрования — слышно всем.
Пример:
GET /courses HTTP/1.1Host: academy.exampleUser-Agent: браузер
HTTP/1.1 200 OKContent-Type: text/html
🔎 Как это происходит на практике:
  1. Браузер делает запрос GET /courses по HTTP.
  2. Сервер отвечает 200 OK и отдает HTML.
  3. Трафик можно просмотреть в сети без шифрования.
Характеристики:
  • ✅ простой и быстрый;
  • ✅ не хранит состояние (stateless);
  • ❗ данные видны в открытом виде.
Когда использовать: для публичного контента без личных данных (и то лучше HTTPS).
Вывод: HTTP — основа, но без безопасности.

2. HTTPS = HTTP + TLS

Назначение: защитить канал: шифрование, целостность, подлинность.
Простыми словами: это тот же HTTP, но всё зашифровано.
Аналогия: запечатанный конверт + проверка паспорта получателя.
Пример:
https://academy.example/login
Что происходит: браузер шифрует данные и проверяет сертификат сервера.
Если сертификат подделан — пользователь увидит предупреждение.
🔎 Как это происходит на практике:
  1. Браузер открывает https://... и выполняет TLS handshake.
  2. Затем весь HTTP-трафик идет в шифрованном виде.
  3. В адресной строке появляется значок замка.
Характеристики:
  • ✅ данные не читаются по пути;
  • ✅ защита от подмены;
  • ✅ доверие к серверу через сертификат.
Когда использовать: всегда, если есть данные пользователя.
Вывод: HTTPS — стандарт для продакшена.

3. Сертификаты и центры сертификации

Назначение: подтвердить, что сервер — настоящий.
Простыми словами: сертификат доказывает, что сайт не поддельный.
Аналогия: паспорт, заверенный нотариусом.
Пример:
Issuer: Let's EncryptSubject: academy.exampleValid: 2026-01-01 → 2026-04-01
🔎 Как это происходит на практике:
  1. Сервер отправляет сертификат в начале соединения.
  2. Браузер проверяет цепочку доверия до CA.
  3. Если сертификат самоподписан — появляется предупреждение.
Характеристики:
  • ✅ сертификат выдаёт CA;
  • ✅ у сертификата есть срок;
  • ❗ самоподписанный сертификат не подходит для прода.
Когда использовать: всегда для внешних пользователей.
Вывод: сертификат = доверие.

4. TLS Handshake (упрощённо)

Назначение: договориться о ключах и параметрах защиты.
Простыми словами: стороны договариваются о секрете и дальше шифруют.
Аналогия: обменяться секретным паролем в закрытой комнате.
Пример (упрощённый поток):
  1. Клиент запрашивает защищённое соединение.
  2. Сервер отправляет сертификат.
  3. Клиент проверяет сертификат и создаёт сессионный ключ.
  4. Дальше всё общение идёт в шифре.
🔎 Как это происходит на практике:
  1. Клиент шлет ClientHello с поддерживаемыми алгоритмами.
  2. Сервер отвечает ServerHello и сертификатом.
  3. Стороны согласуют ключ и начинают шифровать трафик.
Характеристики:
  • ✅ использует асимметричное + симметричное шифрование;
  • ✅ выполняется автоматически;
  • ✅ защищает от «человека посередине».
Когда использовать: всегда при HTTPS.
Вывод: handshake — фундамент защиты.

5. Заголовки и безопасность

Назначение: управлять поведением браузера и безопасностью.
Простыми словами: сервер говорит браузеру, что можно, а что нельзя.
Аналогия: инструкция на двери «вход только по пропуску».
Пример:
HTTP/1.1 200 OKStrict-Transport-Security: max-age=31536000; includeSubDomainsSet-Cookie: session=abc; Secure; HttpOnly; SameSite=Lax
Полный современный пример (как в реальном проекте):
Strict-Transport-Security: max-age=31536000; includeSubDomains; preloadContent-Security-Policy: default-src 'self'; img-src 'self' https: data:; script-src 'self'; style-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'Permissions-Policy: geolocation=(), camera=(), microphone=(), payment=()
🔎 Как это происходит на практике:
  1. Сервер отправляет заголовки безопасности (CSP, HSTS, X-Frame-Options).
  2. Браузер применяет правила и блокирует опасные действия.
  3. Это снижает риск XSS и clickjacking.
Характеристики:
  • ✅ заголовки задают правила безопасности;
  • ✅ можно управлять cookies и доступом;
  • ✅ защита от случайных утечек.
Когда использовать: в ответах на все чувствительные страницы.
Вывод: безопасность часто «живёт» в заголовках.

6. Редирект HTTP → HTTPS и HSTS

Назначение: заставить браузер всегда использовать HTTPS.
Простыми словами: пришёл по HTTP — сразу перевели на HTTPS и запретили обратно.
Аналогия: табличка «вход только через охрану».
Пример:
HTTP/1.1 308 Permanent RedirectLocation: https://academy.example/login
🔎 Как это происходит на практике:
  1. Пользователь вводит http://example.com (или просто example.com).
  2. Сервер отвечает 308 Permanent Redirect (или 301) и отдает Location: https://example.com.
  3. Браузер автоматически переходит на https://example.com.

7. Cookies и токены

Назначение: хранить сессию безопасно.
Простыми словами: метка входа должна быть спрятана и защищена.
Аналогия: пропуск, который нельзя подделать и украсть.
Пример:
Set-Cookie: session=abc123; Secure; HttpOnly; SameSite=Strict
🔎 Как это происходит на практике:
  1. Сервер после логина ставит cookie сессии.
  2. Cookie помечается Secure + HttpOnly + SameSite.
  3. Токены передаются в заголовке Authorization, а не в URL.
Характеристики:
  • ✅ Secure — только по HTTPS;
  • ✅ HttpOnly — недоступно JS;
  • ✅ SameSite — защита от CSRF.
Когда использовать: всегда для сессий и токенов.
Вывод: без правильных флагов HTTPS не спасёт.

Сравнение: HTTP vs HTTPS

ПараметрHTTPHTTPS
Шифрованиенетда
Подлинностьнетда (сертификат)
Риск перехватавысокийнизкий
Порт80443
SEO и довериенижевыше

Часто спрашивают на собеседованиях

  • В чём разница HTTP и HTTPS? HTTPS шифрует канал и подтверждает сервер.
  • Что такое TLS handshake? обмен ключами перед защищённой сессией.
  • Зачем нужен сертификат? чтобы браузер доверял серверу.
  • Что такое HSTS? запрет использовать HTTP даже случайно.
  • Почему нельзя токен в URL? он попадёт в логи и историю.
  • Чем SSL отличается от TLS? SSL устарел, TLS — современный стандарт (в проде используют TLS 1.2/1.3).
Вывод: эти ответы часто решают судьбу интервью.

Типичные ошибки

Ошибка 1: «Форма логина по HTTP»

❌ логин отправляется в открытую
✅ логин работает только по HTTPS
Почему: пароль нельзя передавать без шифрования.

Ошибка 2: нет редиректа на HTTPS

❌ пользователь может остаться на HTTP
✅ 301/308 на HTTPS
Почему: иначе защита не гарантирована.

Ошибка 3: самоподписанный сертификат в проде

❌ браузер показывает предупреждение
✅ сертификат от CA
Почему: без доверия пользователь не зайдёт.

Ошибка 4: смешанный контент

❌ HTTPS‑страница грузит HTTP‑картинки
✅ все ресурсы через HTTPS
Почему: браузер блокирует часть контента.

Ошибка 5: устаревшие TLS‑версии

❌ TLS 1.0/1.1
✅ TLS 1.2/1.3
Почему: старые версии уязвимы.

Ошибка 6: cookies без Secure/HttpOnly

❌ токен доступен в JS
✅ Secure + HttpOnly + SameSite
Почему: снижает риск кражи.

Ошибка 7: токены в URL

❌ /profile?token=...
✅ токен в заголовке Authorization
Почему: URL хранится в логах и истории.

Best Practices

  • Включайте HTTPS везде, даже на статике.
  • Делайте 301/308 редирект и включайте HSTS.
  • Используйте TLS 1.2/1.3, отключайте старые версии.
  • Ставьте сертификаты от доверенных CA и следите за сроками.
  • Для сессий используйте Secure + HttpOnly + SameSite.
  • Никогда не передавайте токены в URL.

Заключение

🎯 HTTP — фундамент, но без защиты.
🎯 HTTPS — стандарт безопасности и доверия.
🎯 Заголовки, редиректы и cookies делают защиту полноценной.
Теперь вы не просто «знаете про HTTPS», а умеете объяснить, как защитить реальный продукт.
🎯

Проверьте знания

Закрепите материал — пройдите тест по теме «HTTP и HTTPS: протоколы и безопасность»

Пройти тест →