Arhn - архитектура программирования

В чем разница между шифрованием GET и POST?

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

Чтобы быть более конкретным: когда https-SSL шифрует оба этих метода, в чем разница в том, как браузер это делает; Какие части зашифрованы, а какие нет?

Я где-то читал, что целевой URL-адрес не зашифрован в POST, это правда? Если это правда и то же самое в GET, где все параметры?

Если оба метода зашифрованы одними и теми же данными, выглядят ли они одинаково при прослушивании? Какие части зашифрованы, а какие нет?

17.06.2010

  • Кроме того факта, что вам нужно URL-кодировать результат шифрования для GET ... Я ничего не вижу. 17.06.2010
  • @Rowland Shaw - Я предполагал, что они шифруют значение перед отправкой обратно на сервер. Если они говорят о кодировании, в этом будет немного больше смысла. 17.06.2010
  • Если вы используете SSL, все зашифровано. Это включает URL-адрес, строку запроса, заголовки запроса и ответа, а также данные в теле сообщения. GET и POST зашифрованы, между ними нет никакой разницы. См. http://stackoverflow.com/questions/499591/are-https-urls-encrypted 17.06.2010

Ответы:


1

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

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

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

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

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

Из обсуждения Google:

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

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

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

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

17.06.2010
  • Неправильный. Запросы GET также зашифрованы, включая строку запроса - http://stackoverflow.com/questions/499591/are-https-urls-encrypted 17.06.2010
  • DNS-запрос будет включать полный URL-адрес, и его можно будет прослушать. Параметры GET также будут отображаться в журналах. 17.06.2010
  • DNS-запрос будет включать только доменное имя, но не параметры URL. Кроме того, даже для запроса POST потребуется поиск в DNS. Журналы будут содержать параметры URL - но журналы доступны только серверу, и сервер также может читать любые опубликованные данные. SSL предназначен для предотвращения атак «злоумышленник посередине», и это достигается независимо от GET или POST. 17.06.2010
  • @SripathiKrishnan: Большинство ваших замечаний были хорошими, но ваше мнение о журналах вводит в заблуждение. Уязвимость, которая позволяет кому-либо читать журналы, не обязательно позволяет им прослушивать и расшифровывать сетевой трафик или каким-либо иным образом нарушать работу сервера. Кроме того, если злоумышленник контролирует сервер только несколько минут, если ваши журналы содержат конфиденциальную информацию, все очень облажались. Если они этого не сделают, вероятность того, что кто-то облажается, будет меньше. 15.08.2013

  • 2

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

    17.06.2010
  • ... но это ничем не отличается от POST / GET без шифрования. Я не вижу, что изменит ситуацию с шифрованием. 17.06.2010

  • 3

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

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

    17.06.2010

    4

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

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

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

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

    17.06.2010

    5

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

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

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

    17.06.2010
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..