В чем разница между GET и POST-шифрованием? - PullRequest
27 голосов
/ 17 июня 2010

В чем разница при шифровании данных GET и POST? Спасибо за ответ

Редактировать: мне нужно написать это более конкретно.

Когда https-SSL шифрует оба эти метода, в чем заключается разница в способе, которым это делает браузер. Какие части зашифрованы, а какие нет? Я где-то читал, что URL-адрес назначения не зашифрован в POST, это правда? Если это правда и то же самое в GET, где все параметры?

Edit2: до сих пор не знаю ответа на мой вопрос. Когда оба метода зашифрованы одними и теми же данными, выглядит ли одинаково при сниффинге? Какие части зашифрованы, а какие нет?

Ответы [ 5 ]

53 голосов
/ 17 июня 2010

GET данные добавляются к URL в виде строки запроса:

https://example.com/index.html?user=admin&password=whoops

Поскольку данные добавляются в URL, существует жесткий лимит на количество данных, которые вы можете передать .Разные браузеры имеют разные ограничения, но у вас начнутся проблемы с отметкой 1KB-2KB.

POST данные включены в тело HTTP-запроса и не отображается в URL.Таким образом, количество данных, передаваемых по протоколу POST, не ограничено.

Если HTTP-соединение использует SSL / TLS, то параметры GET также шифруются , но могут отображаться вдругие места, такие как журналы веб-сервера, будут доступны для подключаемых модулей браузера и, возможно, других приложений. Данные POST шифруются и не протекают никаким другим способом.

Из Google Discussion :

Данные, содержащиеся вURL-запрос по соединению HTTPS зашифрован.Однако это очень плохая практика включать такие конфиденциальные данные, как пароль, в запрос 'GET'.Хотя это не может быть перехвачено, данные будут записываться в виде незашифрованных серверных журналов на принимающем HTTPS-сервере и, вполне возможно, также в истории браузера.Вероятно, он также доступен для подключаемых модулей браузера и, возможно, даже для других приложений на клиентском компьютере.

Всегда используйте POST через HTTPS , если вы хотите безопасно передавать информацию.

Если вы используете библиотеку шифрования для шифрования данных, вы можете использовать GET или POST, но это будет дополнительной проблемой, и вы, возможно, неправильно настроите шифрование, поэтому я по-прежнему рекомендую использовать POST поверхHTTPS, , а не накатывать свои собственные настройки шифрования.Эта проблема уже решена, не изобретайте колесо заново.

Другой вариант, который вы можете рассмотреть, - это использование secure cookie .Файл cookie с установленным флагом безопасности отправляется только по безопасному каналу, например HTTPS, и его нельзя отследить.Это хороший способ безопасного хранения информации, такой как идентификатор сеанса.

3 голосов
/ 17 июня 2010

Когда выполняется запрос HTTPS GET, параметры строки запроса ЗАПИСАНЫ ! Единственное, что не зашифровано в запросе HTTPS - это имя сервера или IP-адрес и порт запроса. Это только две части информации, необходимые для направления запроса от вашего браузера на веб-сервер, который затем выполняет расшифровку.

Используйте Fiddler (с отключенной расшифровкой SSL) и смотрите на свой трафик с безопасного сайта. Вы увидите, что не можете просматривать незашифрованные данные строки запроса или даже информацию о пути.

3 голосов
/ 17 июня 2010

Разница в том, что зашифрованный параметр, который отправляется с глаголом GET, будет виден в адресной строке, а тот, который отправлен с глаголом POST, не будет (конечно, это не означает, что пользователь не может видеть зашифрованное значение),Другое отличие заключается в допустимой максимальной длине: запросы GET ограничены, так как URL-адреса ограничены в браузерах.Третье отличие: запросы GET регистрируются на промежуточных веб-серверах, через которые они проходят (web, proxy, ...), поэтому, если вы используете GET через Интернет, ваш зашифрованный параметр обязательно будет зарегистрирован на многих машинах до того, как он поступит на ваш веб-сервер.*

0 голосов
/ 17 июня 2010

Может помочь, если вы визуализируете HTTP-запрос:

GET /page.php?get-data-here HTTP/1.1
Host: www.site.com

post-data-here

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

0 голосов
/ 17 июня 2010

POST может отправить больше данных, чем GET

GET проще для злоумышленника манипулировать данными

GET не зашифрован

POST не зашифрован

...