HTTPS/HTTP. База. Материалы.
Эта статья была сделана для нашего прекрасного телеграмм канала PLR.
В этой статье вы найдёте и получите знания про:
- Модель HTTP — архитектуру клиент-сервер, методы, заголовки и тело сообщений
- Коды ответов — расшифровку статусов от 1xx до 5xx и их практический смысл
- HTTPS и безопасность — как работает TLS/SSL, сертификаты, шифрование и защита от MITM
- Эволюцию протоколов — от древнего HTTP/0.9 до мультиплексированного HTTP/2 и быстрого HTTP/3 (QUIC)
- Безопасность и заголовки — CORS, CSP, Cookies, HSTS и как не отдать свои данные злоумышленникам
- Книги по вебу — от классики до современных гайдов
- Видеокурсы — YouTube-разборы и бесплатные платформы
- Практика и инструменты — тестирование API, анализ трафика через прокси, консольные утилиты
- Онлайн-ресурсы — MDN Web Docs, актуальные RFC-документы
- Сертификации — eWPT, OSWE, CompTIA Security+ как ориентиры для веб-безопасности
(Если честно, при написании статьи (ПРЯМ В КОНЦЕ, НУ ЁМАЁ) я случайно вышел, и она не сохранилась, поэтому статья будет не самой качественной, как в первоначальной версии, которой уже нет. но я постараюсь.)
HTTP (HyperText Transfer Protocol)
В основе всего интернета лежит протокол прикладного уровня HTTP. Это протокол клиент-серверной архитектуры: клиент (обычно браузер или мобильное приложение) отправляет запрос, а сервер его обрабатывает и возвращает ответ. HTTP не сохраняет состояние (stateless), то есть сервер по умолчанию не помнит предыдущих запросов одного и того же клиента.
Структура HTTP-сообщений
Каждое сообщение (и запрос, и ответ) состоит из стартовой строки, заголовков и тела.
Методы (Глаголы): указывают, какое действие мы хотим совершить.
• GET — запросить данные (ничего не меняет на сервере).
• POST — отправить данные на сервер для создания новой сущности.
• PUT — полностью обновить существующую сущность.
• PATCH — частично обновить сущность.
Заголовки (Headers): метаданные о запросе. Например, User-Agent (кто стучится), Content-Type (в каком формате данные), Authorization (токен доступа).
Тело (Body): сами данные (JSON, XML, HTML, картинка), которые передаются. В GET-запросах тела обычно нет.
Коды состояния (Status Codes)
Когда сервер отвечает, он присылает трехзначный код. (свершилось!)
• 1xx (Информационные) — запрос принят, обработка продолжается (используются редко).
• 2xx (Успех) — всё прошло идеально. Самый известный — 200 OK.
• 3xx (Перенаправление) — сервер указывает другой адрес. 301 Moved Permanently (навсегда переехал), 302 Found (временное перенаправление).
• 4xx (Ошибка клиента) — вы накосячили. 404 Not Found (нет такой страницы), 401 Unauthorized (ты кто такой?), 403 Forbidden (знаю кто, но нельзя).
• 5xx (Ошибка сервера) — сервер упал или не может обработать запрос. 500 Internal Server Error, 502 Bad Gateway.
12345
HTTPS (HTTP Secure)
Обычный HTTP передаёт всё в открытом виде. Если вы сидите в кафе через открытый Wi-Fi, любой сосед по столу может перехватить ваш трафик (сниффинг) и украсть пароли или сессионные куки.
Задача HTTPS: защитить передаваемые данные от перехвата, просмотра и подмены (защита от MITM-атак).
Как работает: Поверх HTTP ложится криптографический протокол TLS (Transport Layer Security, а в прошлом SSL).
1
Сначала происходит TLS-рукопожатие: сервер предъявляет свой сертификат, клиент проверяет его подлинность, затем стороны согласовывают параметры обмена ключами. После этого весь HTTP-трафик шифруется симметричным ключом.
Сертификаты и Центры сертификации (CA)
Чтобы клиент был уверен, что он общается именно с сайтом google.com, а не с хакером, подменившим DNS, сервер предъявляет SSL-сертификат. Этот сертификат подписан доверенным Центром Сертификации (CA), например, Let's Encrypt, DigiCert или GlobalSign. Браузеры заранее хранят корневые сертификаты этих CA и проверяют цепочку доверия.
Порт 443: стандартный порт для HTTPS (в отличие от 80 для HTTP).
Эволюция HTTP
HTTP/1.0 и HTTP/1.1
Долгое время был стандартом. Браузер открывал несколько TCP-соединений, чтобы скачивать картинки параллельно (из-за медлительности). В 1.1 появилось keep-alive (держать соединение открытым) и умное кэширование.
HTTP/2
Революция от Google (протокол SPDY). Главная фишка — мультиплексирование. Теперь множество потоков (streams) с HTML, CSS, JS летят по одному TCP-соединению (одному TCP-сокету) параллельно, без блокировок. Заголовки сжимаются (алгоритм HPACK).
HTTP/3
Современный стандарт. TCP заменяется на QUIC — транспортный протокол на базе UDP. Решает проблему head-of-line blocking (если один пакет в TCP потерялся, вставал весь поток). HTTP/3 работает быстрее в мобильных сетях с нестабильным соединением.
Важные концепции и заголовки безопасности
Cookies (Куки)
Механизм, который позволяет поддерживать состояние (сессию) на уровне приложений поверх stateless HTTP. Сервер отправляет заголовок Set-Cookie, браузер сохраняет его и отправляет обратно в каждом последующем запросе. Так работает авторизация на сайтах.
CORS (Cross-Origin Resource Sharing)
Механизм безопасности браузера. Запрещает фронтенду с site-a.com делать API-запросы к site-b.com, если site-b.com явно не разрешит это в заголовке Access-Control-Allow-Origin.
CSP (Content Security Policy)
Заголовок, который говорит браузеру, какие ресурсы (скрипты, стили, картинки) разрешено загружать и с каких доменов. Мощная защита от XSS-атак — даже если злоумышленник внедрит вредоносный скрипт, CSP заблокирует его выполнение.
HSTS (HTTP Strict Transport Security)
Заголовок, который принудительно заставляет браузер всегда использовать HTTPS для данного сайта, даже если вы вбили http:// в адресную строку. Защищает от атак downgrading.
Книги
Базовый уровень:
- "HTTP: The Definitive Guide" — David Gourley, Brian Totty. Библия веб-протоколов. Старая, но фундаментальная. Подробно разбирает каждый заголовок, кэширование и прокси.
- "Изучаем HTTP" — Джон Дакетт. Отличное визуальное пособие для новичков с понятными схемами.
Продвинутый уровень:
- "High Performance Browser Networking" — Ilya Grigorik. Бесплатная онлайн-книга от инженера Google. Разбирает TCP, UDP, TLS, HTTP/2 и WebSockets на уровне байтов.
- "Web Security for Developers" — Malcolm McDonald. Как устроены атаки на веб (XSS, CSRF, MITM) и как правильно настраивать HTTPS и заголовки.
Видеокурсы
Бесплатные:
- HTTP Crash Course (Traversy Media) — отличный часовой разбор методов, заголовков и статусов.
- How HTTPS Works — анимированные ролики про TLS-рукопожатие и шифрование.
Платные:
- "Web Applications for Everybody" — University of Michigan на Coursera.
- HTTP/2 Fundamentals — Pluralsight.
Практика и лаборатории
Клиенты для тестирования API:
- Postman — самый популярный GUI-инструмент для отправки HTTP-запросов. Удобен для работы с JSON, коллекциями и авторизацией.
- Insomnia — отличная, более легковесная альтернатива Postman.
- cURL — консольная утилита, must-have для любого бэкендера.
curl -I https://google.com.
Анализ и отладка HTTP(S) через прокси:
- Burp Suite — главный инструмент для перехвата, анализа и модификации HTTP-трафика между браузером и сервером.
- OWASP ZAP — бесплатный open-source аналог Burp Suite.
Практические задачи:
- PortSwigger Web Security Academy — бесплатные лаборатории от создателей Burp Suite. Углубленное изучение уязвимостей HTTP.
Инструменты для работы с сетью
Консольные утилиты:
- HTTPie — современная и красивая замена cURL с подсветкой синтаксиса JSON.
- openssl s_client — встроенная в Linux утилита для проверки SSL/TLS-сертификатов.
openssl s_client -connect google.com:443 - mitmproxy — интерактивный HTTPS-прокси прямо в консоли. Идеален для реверс-инжиниринга мобильных API.
Анализаторы трафика:
- Wireshark — можно отфильтровать пакеты по
httpилиtlsи посмотреть, как выглядит рукопожатие TLS на уровне байтов.
Онлайн-ресурсы
- MDN Web Docs (Mozilla) — лучший справочник по HTTP-методам, заголовкам и статусам.
- Cloudflare Learning Center — шикарные статьи про HTTPS, HSTS, CORS и HTTP/3 простыми словами.
- How HTTPS Works — интерактивный комикс про шифрование, сертификаты и TLS.
- RFC 9110 — HTTP Semantics (описывает методы, коды и заголовки).
YouTube-каналы
- Hussein Nasser — глубокие разборы того, как работают бэкенд-протоколы, TCP vs UDP, TLS handshake и HTTP/2.
- NetworkChuck — энергичные и понятные объяснения сетевых тем (включая DNS и HTTPS).
Сертификации (как ориентир)
Начальный уровень:
- CompTIA Security+ — базовая сертификация, включает понимание криптографии, сертификатов и защиты сетевого трафика.
Продвинутый уровень:
- eWPT — практическая сертификация по тестированию веб-приложений.
- Burp Suite Certified Practitioner — официальная сертификация от PortSwigger.