Получить данные также зашифрованы в HTTPS?

когда вы

https://encrypted.google.com/search?q=%s

на %s запрос шифруется? Или просто ответ? Если это не так, почему Google должен обслуживать публичный контент также с шифрованием?

10 ответов


весь запрос зашифрован, включая URL-адрес и даже команду (GET). Единственное, что промежуточная сторона, такая как прокси-сервер, может получить, это адрес назначения и порт.

обратите внимание, однако, что клиентский Приветственный пакет рукопожатия TLS может рекламировать полное доменное имя в открытом тексте через SNI расширение (спасибо @hafichuk), который используется всеми современными основными браузерами, хотя некоторые только на более новых ОС.

EDIT: (так как это только что дало мне значок "хороший ответ", я думаю, что должен ответить на весь вопрос...)

весь ответ также зашифрован; прокси не могут перехватить какую-либо его часть.

Google обслуживает поиск и другой контент по https, потому что не все из них являются общедоступными, и вы также можете скрыть часть общедоступного контента от MITM. В любом случае, лучше всего позволить Google ответ сами.


сам URL зашифрован, поэтому параметры в строке запроса не перемещаются по проводу.

Однако имейте в виду, что URL-адреса, включая данные GET, часто регистрируются веб-сервером, тогда как данные POST редко. Так что если вы планируете сделать что-то вроде /login/?username=john&password=doe, потом нет, использовать POST вместо.


HTTPS устанавливает базовое соединение SSL перед любыми данными HTTP переданный. Это гарантирует, что все данные URL (за исключением имя хоста, которое используется для установления соединения) осуществляется исключительно в рамках этого зашифрованного соединения и защищен от человек-в-середине атакует так же, как и любые данные HTTPS.

выше является частью очень полного ответа от Google Answers расположен здесь:

http://answers.google.com/answers/threadview/id/758002.html#answer


часть URL после имени хоста отправляется безопасно.

например, https://somewhere.com/index.php?NAME=FIELD

на /index.php?NAME=FIELD часть зашифрована. The somewhere.com нет.


все зашифровано, но вам нужно помнить, что ваш запрос останется в журналах сервера и будет доступен для различных анализаторов журналов и т. д. (Что обычно не происходит с запросом POST).


соединение шифруется до передачи запроса. Так что да, запрос также зашифрован, включая строку запроса.


SSL происходит перед разбором заголовка, это означает:

Client creates Request
Request gets encrypted
Encrypted request gets transmitted to the Server
Server decrypts the Request
Request gets parsed

запрос выглядит примерно так (не помню точный синтаксис, но это должно быть достаточно близко):

GET /search?q=qwerty HTTP/1.1
Host: www.google.de

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


Да, это безопасно. SSL шифрует все.

выдержка из запроса POST:

POST /foo HTTP/1.1
... some other headers

выдержка из запроса GET:

GET /foo?a=b HTTP/1.1
... some other headers

в обоих случаях все, что отправляется в сокете, шифруется. Дело в том, что клиент видит параметры в его браузере во время запроса GET не означает, что человек в середине будет видеть то же самое.


Я просто подключился через HTTPS к веб-сайту и передал кучу параметров GET. Затем я использовал wireshark для обнюхивания сети. Используя HTTP, URL отправляется незашифрованным, что означает, что я могу легко увидеть все параметры GET в URL. Используя HTTPS, все зашифровано, и я даже не вижу, какой пакет является командой GET, не говоря уже о его содержимом!


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