Зашифрованы ли заголовки HTTPS?

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

Какая часть заголовков HTTPS являются зашифрована?

Включая URL-адреса запросов GET / POST, файлы cookie и т. д.

Заголовки HTTP по HTTPS зашифрованы, но не сжимаются по протоколу HTTP (даже если тело зашифровано). Это делает их менее уязвимыми для атак, связанных со сжатием, таких как BEAST.

Neil McGuigan 18.03.2015 21:11
SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
Один-единственный вредоносный запрос может нанести ущерб вашему бизнесу. Уязвимости вашего кода могут привести к:
655
1
245 331
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Ответ принят как подходящий

Весь лот зашифрован - все заголовки. Вот почему SSL на vhosts работает не очень хорошо - вам нужен выделенный IP-адрес, потому что заголовок Host зашифрован.

Стандарт идентификации имени сервера (SNI) означает, что имя хоста не может быть зашифровано, если вы используете TLS. Кроме того, независимо от того, используете ли вы SNI или нет, заголовки TCP и IP никогда не шифруются. (Если бы они были, ваши пакеты не были бы маршрутизируемыми.)

@Greg, Поскольку шлюз vhost авторизован, не мог ли шлюз их расшифровать, наблюдать за заголовком Host, а затем определить, на какой хост отправлять пакеты?

Pacerier 12.12.2014 06:31

Сам URL-адрес Afaik не зашифрован.

Teddy 16.11.2015 10:54

@Teddu, что вы имеете в виду под "сам URL не зашифрован". Он зашифрован, поскольку является частью заголовка.

Dmitry Polushkin 02.02.2017 18:43

Если Fiddler используется для перехвата связи https, он все равно отображает некоторые заголовки, почему? В частности, когда подключение к Интернету осуществляется через прокси-сервер, который требует аутентификации, он отображает заголовок Proxy-Authorization при повторной отправке запроса после получения 407 при первой отправке.

Bochen Lin 10.01.2018 00:57

@Bochen, как и Пегас. Если вы находитесь на любом конце туннеля HTTPS, вы можете видеть все. Точно так же я могу видеть что угодно в инструментах разработчика браузера.

Nux 05.12.2019 03:52

При использовании SSL шифрование осуществляется на транспортном уровне, поэтому оно выполняется до отправки запроса.

Итак, все в запросе зашифровано.

Поскольку SSL имеет место на транспортном уровне, а назначение адреса назначения в пакетах (в заголовке) происходит на сетевом уровне (который находится ниже транспортного уровня), то как же зашифровываются заголовки?

Prateek Joshi 10.02.2017 12:26

@PrateekJoshi Потому что HTTP-заголовки находятся на уровне приложения и поэтому по умолчанию зашифрованы из-за шифрования нижнего уровня / уровня предка.

Aquarelle 26.04.2017 06:53

Заголовки полностью зашифрованы. Единственная информация, передаваемая по сети «в открытом виде», связана с настройкой SSL и обменом ключами D / H. Этот обмен тщательно разработан, чтобы не передавать какую-либо полезную информацию злоумышленникам, и после того, как он произошел, все данные зашифровываются.

Не все настройки SSL включают DH

Dori 06.05.2016 23:25

Чтобы быть немного педантичным: IP-адрес клиента и сервера, имя хоста сервера и сигналы об их реализациях SSL полезны для перехватчиков и видны.

poolie 27.11.2016 01:17

HTTPS (HTTP через SSL) отправляет весь HTTP-контент через SSL-туннель, в HTTP-контент, и заголовки также зашифровываются.

В HTTP версии 1.1 добавлен специальный метод HTTP, CONNECT, предназначенный для создания туннеля SSL, включая необходимое подтверждение протокола и настройку криптографии. После этого все обычные запросы отправляются завернутыми в туннель SSL, включая заголовки и тело.

Когда используется CONNECT для создания туннеля SSL?

curiousguy 18.07.2018 17:49

@curiousguy tools.ietf.org/html/rfc7231#section-4.3.6

avp 15.02.2020 03:37

Новый ответ на старый вопрос, извините. Я думал, что добавлю свои 0,02 доллара

OP спросил, были ли заголовки зашифрованы.

Они: в пути.

Они НЕ: когда не в пути.

Таким образом, URL-адрес вашего браузера (и в некоторых случаях заголовок) может отображать строку запроса (которая обычно содержит наиболее важные детали) и некоторые детали в заголовке; браузеру известна некоторая информация заголовка (тип содержимого, юникод и т. д.); а история браузера, управление паролями, избранное / закладки и кешированные страницы будут содержать строку запроса. Журналы сервера на удаленном конце могут также содержать строку запроса, а также некоторые сведения о содержимом.

Кроме того, URL-адрес не всегда безопасен: домен, протокол и порт видны - в противном случае маршрутизаторы не знают, куда отправлять ваши запросы.

Кроме того, если у вас есть прокси-сервер HTTP, прокси-сервер знает адрес, обычно он не знает полной строки запроса.

Так что, если данные перемещаются, они обычно защищены. Если он не в пути, он не зашифрован.

Не придирчиво, но данные в конце также расшифровываются, и их можно анализировать, читать, сохранять, пересылать или отбрасывать по желанию. И вредоносное ПО на любом конце может делать снимки данных, входящих (или выходящих) из протокола SSL - например, (плохой) Javascript внутри страницы внутри HTTPS, который может тайно выполнять http (или https) вызовы на веб-сайты, ведущие журналы (поскольку доступ к локальному жесткому диску часто ограничен и бесполезен).

Кроме того, файлы cookie не шифруются по протоколу HTTPS. Разработчикам, желающим хранить конфиденциальные данные в файлах cookie (или где-либо еще), необходимо использовать собственный механизм шифрования.

Что касается кеширования, большинство современных браузеров не кэшируют страницы HTTPS, но этот факт не определяется протоколом HTTPS, он полностью зависит от разработчика браузера, который не кэширует страницы, полученные через HTTPS.

Так что, если вас беспокоит обнюхивание пакетов, вы, вероятно, в порядке. Но если вас беспокоят вредоносные программы или кто-то, пробирающийся через вашу историю, закладки, файлы cookie или кеш, вы еще не вышли из воды.

Я знаю, что хорошие ответы находятся наверху, но здесь снова вставляется информация неисправен. Домен нет видим, если не используется SNI. Протокол, отличный от IP и TCP, является видимым нет. Вы не можете сказать, использую ли я HTTP 1.1, SPDY или HTTP2. То, что видно на двух конечных точках, не имеет значения, поскольку цель шифрования - не сделать вещи невидимый, а сделать только видимый доверенными сторонами. Таким образом, в вопросе подразумеваются конечные точки, и примерно 2/3 вашего ответа можно удалить. Информация о прокси должна быть такой: если вы используете прокси HTTPS, то это имеет доступ ко всему.

Melvyn 22.12.2016 19:45

В вашей ссылке конкретно указано, что файлы cookie зашифрованы: «Соединение посетителя зашифровано, скрывая URL-адреса, файлы cookie и другие конфиденциальные метаданные».

DylanYoung 30.11.2017 20:14

Да, это правильно. Файлы cookie зашифровываются во время передачи, но когда они попадают в браузер, они не шифруются протоколом SSL. Разработчик может зашифровать данные cookie, но это выходит за рамки SSL.

Andrew Jay 01.12.2017 18:44

@DylanYoung SSL = безопасный уровень разъем; TLS = уровень безопасности транспорт. Шифрование осуществляется на уровне сокета (соединения) или, другими словами, на транспортном уровне, а не сохраняется в браузере для каждой базы данных домена.

curiousguy 18.07.2018 17:33

@Wigwam Чувствительные к безопасности файлы cookie HTTP почти всегда являются непрозрачными ссылками (обычно это криптографически стойкое случайное число) на запись в базе данных сервера аутентифицированных сеансов. Таким образом, шифрование этого бессмысленного идентификатора в большинстве случаев принесет дополнительную сложность.

curiousguy 18.07.2018 17:43

Любопытный: да, я знаю. В ответе говорится, что они не зашифрованы с помощью https (что подразумевает ssl). Они есть. Они не зашифрованы в браузере. Ни заголовки, ни какой-либо контент (или, если они есть, они кажутся банально расшифрованными).

DylanYoung 19.07.2018 17:59

URL-адрес также зашифрован, у вас действительно есть только IP, порт и, если SNI, имя хоста, которые не зашифрованы.

Даже если SNI не поддерживается, посредник, способный перехватывать HTTP-соединения, часто также может отслеживать вопросы DNS (большая часть перехвата выполняется рядом с клиентом, как на пиратском пользовательском маршрутизаторе). Таким образом, они смогут видеть имена DNS.

curiousguy 18.07.2018 17:45

Да, заголовки зашифрованы. Написано здесь.

Everything in the HTTPS message is encrypted, including the headers, and the request/response load.

Википедия - это не спецификация, которую вы должны цитировать.

Aran Mulholland 10.10.2017 16:53

Другие вопросы по теме