GET-данные также шифруются в HTTPS? - PullRequest
114 голосов
/ 10 ноября 2010

Когда вы получаете

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

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

Ответы [ 10 ]

130 голосов
/ 10 ноября 2010

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

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

РЕДАКТИРОВАТЬ: (Поскольку это только что принесло мне значок «Хороший ответ», я думаю, что должен ответить на весь вопрос…)

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

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

58 голосов
/ 20 января 2011

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

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

20 голосов
/ 20 января 2011

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

Вышеприведенное является частью ОЧЕНЬ полного ответа из ответов Google, расположенных здесь:

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

13 голосов
/ 20 января 2011

Часть URL-адреса после безопасной отправки имени хоста.

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

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

6 голосов
/ 10 ноября 2010

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

4 голосов
/ 10 ноября 2010

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

3 голосов
/ 20 января 2011

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

3 голосов
/ 20 января 2011

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

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

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

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

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

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

3 голосов
/ 10 ноября 2010

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 проблематично, запрашиваемое имя хоста неизвестно до расшифровки.

0 голосов
/ 20 января 2011

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

...