Контекст: безопасность HTTP(S), TLS/SSL Target (URL) может быть защищён не целиком: при HTTPS шифруются путь и параметры после домена, тогда как доменное имя остаётся видимым через DNS и SNI В HTTPS Headers шифруются полностью, включая cookies, токены и прочие метаданные Содержимое Body также шифруется целиком, благодаря чему защищаются передаваемые данные и файлы Шифрование выполняется на уровне TLS и обеспечивает конфиденциальность обмена между клиентом и сервером Исключение составляют ситуации, когда прокси работает без TLS: тогда отдельные заголовки могут просматриваться на промежуточных узлах На практике это нужно для защиты…
Что шифруется в HTTP-запросе: Target, Body или Header?
Контекст: безопасность HTTP(S), TLS/SSL Target (URL) может быть защищён не целиком: при HTTPS шифруются путь и параметры после домена, тогда как доменное имя остаётся видимым через DNS и SNI В HTTPS Headers шифруются…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Что шифруется в HTTP-запросе: Target, Body или Header?
- Контекст: безопасность HTTP(S), TLS/SSL
- Target (URL) может быть защищён не целиком: при HTTPS шифруются путь и параметры после домена, тогда как доменное имя остаётся видимым через DNS и SNI
- В HTTPS Headers шифруются полностью, включая cookies, токены и прочие метаданные
- Содержимое Body также шифруется целиком, благодаря чему защищаются передаваемые данные и файлы
- Шифрование выполняется на уровне TLS и обеспечивает конфиденциальность обмена между клиентом и сервером
- Исключение составляют ситуации, когда прокси работает без TLS: тогда отдельные заголовки могут просматриваться на промежуточных узлах
- На практике это нужно для защиты конфиденциальной информации и предотвращения перехвата сессий и payload
- Итог: в HTTPS шифруются Headers и Body, а Target защищается частично — шифруются путь и параметры, но не домен
Подробный ответ
Основной ответ
При разделении HTTP-запроса на Target (цель), Body (тело) и Header (заголовки) под шифрованием обычно подразумевают защиту информации протоколами TLS/SSL. В HTTPS шифруются все три компонента запроса: Target, Headers и Body, однако часть сведений, требуемых для установления соединения, например отдельные метаданные TLS, может оставаться доступной.
В составе HTTP-запроса Target представляет собой URI: в него входят путь, query-параметры, а иногда и фрагмент. При HTTPS запрос передаётся в зашифрованном виде, включая Target в HTTP/1.1 или HTTP/2, а также Method и версию HTTP.
В Headers находятся метаданные — cookies, сведения авторизации, user-agent и другие значения. В рамках HTTPS они тоже передаются в зашифрованном виде.
Body содержит полезную нагрузку, например JSON, XML или файлы, и шифруется для сохранения конфиденциальности передаваемой информации.
Ключевые моменты
- При обычном HTTP, то есть без TLS, не шифруется ни одна часть запроса: Target, Headers и Body доступны в открытом виде.
- В HTTPS и в HTTP/2 поверх TLS шифруется весь HTTP-запрос (Request Line, Headers, Body), включая Target — путь и query. Домен при этом не скрывается, поскольку он нужен для TLS Handshake через SNI.
- Защита имеет исключение: SNI (Server Name Indication) передаётся в TLS открыто, чтобы обеспечить маршрутизацию. При этом речь идёт именно о домене, а не о пути или параметрах HTTP-запроса.
- Некоторые более современные протоколы, включая Encrypted Client Hello в TLS 1.3 с ESNI, стремятся сократить раскрытие имени хоста. Однако к Target внутри HTTP-запроса это не относится.
Практический контекст
В прикладных системах HTTPS обеспечивает приватность всего обмена между клиентом и сервером, поэтому элементы запроса — Target, Headers и Body — защищены от прослушивания посредниками и злоумышленниками. В частности, передача авторизационных токенов и персональных данных в headers и body должна выполняться с шифрованием, которое обеспечивает протокол TLS.