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


когда вы

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

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

10 109

10 ответов:

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

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

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

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

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

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

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

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

The /index.php?NAME=FIELD часть зашифрована. Элемент 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-адрес-нет никакого способа получить предполагаемое имя хоста (или виртуальный каталог) из запроса до тех пор, пока он не будет расшифрован.