Все ли URL зашифрованы при использовании шифрования TLS / SSL (HTTPS)? Я хотел бы знать, потому что я хочу, чтобы все данные URL были скрыты при использовании TLS / SSL (HTTPS).
Если TLS / SSL обеспечивает полное шифрование URL-адреса, мне не нужно беспокоиться о сокрытии конфиденциальной информации от URL-адресов.
ssl
https
httprequest
Даниэль Киватинос
источник
источник
https://somewhere_i_trust/ways_to_protest_against_the_government/
. Тогда URL содержит конфиденциальные данные, а именно предложение, которое я рассматриваю, чтобы выразить протест против моего правительства.Ответы:
Да, SSL-соединение находится между уровнем TCP и уровнем HTTP. Клиент и сервер сначала устанавливают безопасное зашифрованное TCP-соединение (через протокол SSL / TLS), а затем клиент отправляет HTTP-запрос (GET, POST, DELETE ...) через это зашифрованное TCP-соединение.
источник
Так как никто не обеспечил захват провода, вот один.
Имя сервера (доменная часть URL-адреса) представлено в
ClientHello
пакете в виде простого текста .Ниже показан запрос браузера:
https://i.stack.imgur.com/path/?some=parameters&go=here
См. Этот ответ для более подробной информации о полях версий TLS (их 3, а не версии, каждый из которых содержит номер версии!)
От https://www.ietf.org/rfc/rfc3546.txt :
Короче говоря:
FQDN (доменная часть URL-адреса) МОЖЕТ быть передано в открытом виде внутри
ClientHello
пакета , если используется расширение SNIОстальная часть URL (
/path/?some=parameters&go=here
) не имеет делового характера,ClientHello
поскольку URL-адрес запроса является HTTP-компонентом (уровень 7 OSI), поэтому он никогда не будет отображаться при подтверждении связи TLS (уровень 4 или 5). Это будет позже вGET /path/?some=parameters&go=here HTTP/1.1
HTTP-запросе, ПОСЛЕ установления безопасного канала TLS.УПРАВЛЯЮЩЕЕ РЕЗЮМЕ
Доменное имя МОЖЕТ быть передано в открытом виде (если расширение SNI используется в рукопожатии TLS), но URL (путь и параметры) всегда шифруются.
МАРТ 2019 ОБНОВЛЕНИЕ
Спасибо carlin.scott за то, что поднял этот вопрос.
Полезная нагрузка в расширении SNI теперь может быть зашифрована с помощью этого проекта предложения RFC . Эта возможность существует только в TLS 1.3 (как опция, и ее реализация возможна обоими сторонами), и обратной совместимости с TLS 1.2 и ниже не существует.
CloudFlare делает это, и вы можете прочитать больше о внутренностях здесь - Если курица должна быть раньше яйца, куда вы положите курицу?
На практике это означает, что вместо передачи полного доменного имени в виде простого текста (как показано в захвате Wireshark) теперь оно шифруется.
ПРИМЕЧАНИЕ. Это касается аспекта конфиденциальности в большей степени, чем аспект безопасности, поскольку обратный поиск DNS МОЖЕТ в любом случае выявить целевой узел назначения.
источник
Как уже отмечалось в других ответах , «URL-адреса» https действительно зашифрованы. Однако ваш DNS-запрос / ответ при разрешении доменного имени, вероятно, нет, и, конечно, если вы используете браузер, ваши URL-адреса также могут быть записаны.
источник
Весь запрос и ответ зашифрованы, включая URL.
Обратите внимание, что при использовании прокси-сервера HTTP он знает адрес (домен) целевого сервера, но не знает запрошенный путь на этом сервере (т. Е. Запрос и ответ всегда зашифрованы).
источник
Я согласен с предыдущими ответами:
Чтобы быть явным:
При использовании TLS первая часть URL-адреса ( https://www.example.com/ ) по-прежнему видна при создании соединения. Вторая часть (/ herearemygetparameters / 1/2/3/4) защищена TLS.
Однако есть ряд причин, по которым вам не следует указывать параметры в запросе GET.
Во-первых, как уже упоминалось другими: - утечка через адресную строку браузера - утечка через историю
В дополнение к этому у вас есть утечка URL через http referer: пользователь видит сайт A на TLS, затем щелкает ссылку на сайт B. Если оба сайта находятся на TLS, запрос к сайту B будет содержать полный URL с сайта A в параметр referer запроса. И администратор с сайта B может получить его из файлов журнала сервера B.)
источник
Дополнение к полезному ответу от Marc Novakowski - URL хранится в журналах на сервере (например, в / etc / httpd / logs / ssl_access_log), так что если вы не хотите, чтобы сервер поддерживал информацию в течение более длительного времени термин, не помещайте это в URL.
источник
Да и нет.
Часть адреса сервера НЕ зашифрована, так как она используется для настройки соединения.
Это может измениться в будущем с зашифрованными SNI и DNS, но с 2018 года обе технологии обычно не используются.
Путь, строка запроса и т. Д. Зашифрованы.
Примечание для запросов GET пользователь по-прежнему сможет вырезать и вставлять URL-адрес из адресной строки, и вы, вероятно, не захотите помещать туда конфиденциальную информацию, которую может увидеть любой, кто смотрит на экран.
источник
Сторонний наблюдатель, который отслеживает трафик, также может определить посещаемую страницу, проверив ваш трафик и сравнив его с трафиком другого пользователя при посещении сайта. Например, если на сайте было только 2 страницы, одна намного больше другой, тогда сравнение размера передаваемых данных покажет, какую страницу вы посетили. Есть способы, которые могут быть скрыты от сторонних разработчиков, но они не являются нормальным поведением сервера или браузера. Смотрите, например, эту статью из SciRate, https://scirate.com/arxiv/1403.0297 .
В целом, другие ответы верны, хотя на практике этот документ показывает, что посещаемые страницы (например, URL) могут быть определены достаточно эффективно.
источник
Вы также не всегда можете рассчитывать на конфиденциальность полного URL. Например, как это иногда бывает в корпоративных сетях, поставляемые устройства, такие как ПК вашей компании, настраиваются с дополнительным «доверенным» корневым сертификатом, так что ваш браузер может спокойно доверять проверке прокси-сервера (посредника) трафика https. , Это означает, что полный URL открыт для проверки. Обычно это сохраняется в журнале.
Кроме того, ваши пароли также раскрыты и, вероятно, зарегистрированы, и это еще одна причина, чтобы использовать одноразовые пароли или часто менять свои пароли.
Наконец, содержимое запроса и ответа также отображается, если не шифруется иным образом.
Один пример настройки проверки описан здесь Checkpoint . Таким же образом можно настроить старое интернет-кафе с использованием прилагаемых компьютеров.
источник
Ссылка на мой ответ на дублирующий вопрос . URL-адрес доступен не только в истории браузеров, журналах на стороне сервера, но и в виде заголовка HTTP Referer, который, если вы используете сторонний контент, предоставляет URL-адрес источникам, находящимся вне вашего контроля.
источник
Сейчас 2019 год, и TLS v1.3 был выпущен. Согласно Cloudflare, SNI может быть зашифрован благодаря TLS v1.3. Итак, я сказал себе здорово! давайте посмотрим, как это выглядит в TCP-пакетах cloudflare.com Итак, я поймал пакет рукопожатия "hello client" из ответа сервера cloudflare, используя Google Chrome в качестве браузера и wireshark в качестве анализатора пакетов. Я все еще могу прочитать имя сервера в виде простого текста в пакете приветствия клиента.
Итак, остерегайтесь того, что вы можете прочитать, потому что это все еще не анонимное соединение. Промежуточное программное обеспечение между клиентом и сервером может регистрировать каждый домен, запрошенный клиентом.
Таким образом, похоже, что шифрование SNI требует дополнительных реализаций для работы вместе с TLSv1.3
В следующей статье описывается шифрование SNI, предоставляемого Cloudflare как часть TLSv1.3. Однако все URL-адреса HTTP из cloudflare.com находятся в виде простого текста в пакете TCP в TLS v1.3.
[ https://blog.cloudflare.com/encrypted-sni/][3]
источник
network.security.esni.enabled
, установитьnetwork.trr.mode
значение 2 (которое в настоящее время устанавливает для вашего распознавателя DoH значение CloudFlare) и перезапустить браузер (sic!); тогда он будет использовать ESNI - если он поддерживается инфраструктурой домена. См. Blog.mozilla.org/security/2018/10/18/… для получения подробной информации.Хотя здесь уже есть несколько хороших ответов, большинство из них сосредоточены на браузерной навигации. Я пишу это в 2018 году, и, возможно, кто-то хочет знать о безопасности мобильных приложений.
Для мобильных приложений , если вы контролируете оба конца приложения (сервер и приложение), пока вы используете HTTPS, вы защищены . iOS или Android проверит сертификат и уменьшит возможные атаки MiM (это было бы единственным слабым местом во всем этом). Через HTTPS-соединения вы можете отправлять конфиденциальные данные, которые будут зашифрованы во время транспортировки . Просто ваше приложение и сервер будут знать любые параметры, отправленные через https.
Единственное «возможно» здесь было бы, если клиент или сервер заражены вредоносным программным обеспечением, которое может видеть данные, прежде чем они будут упакованы в https. Но если кто-то заражен этим программным обеспечением, у него будет доступ к данным, независимо от того, что вы используете для их транспортировки.
источник
Кроме того, если вы создаете ReSTful API, утечки в браузере и проблемы с реферером http в основном сводятся к минимуму, поскольку клиент может не являться браузером и у вас может не быть людей, нажимающих на ссылки.
Если это так, я бы рекомендовал oAuth2 войти в систему, чтобы получить токен на предъявителя. В этом случае единственными конфиденциальными данными будут исходные учетные данные ... которые, вероятно, должны быть в любом случае после запроса.
источник
Хотя у вас уже есть очень хорошие ответы, мне очень нравится объяснение на этом сайте: https://https.cio.gov/faq/#what-information-does-https-protect
короче говоря: использование HTTPS скрывает:
источник