Что такое post запрос

Что такое post запрос

Этичный хакинг и тестирование на проникновение, информационная безопасность

Современные веб-сайты становятся всё сложнее, используют всё больше библиотек и веб технологий. Для целей отладки разработчиками сложных веб-сайтов и веб-приложений потребовались новые инструменты. Ими стали «Инструменты разработчика» интегрированные в сами веб-браузеры:

  • Chrome DevTools
  • Firefox Developer Tools

Они по умолчанию поставляются с браузерами (Chrome и Firefox) и предоставляют много возможностей по оценке и отладке сайтов для самых разных условий. К примеру, можно открыть сайт или запустить веб-приложение как будто бы оно работает на мобильном устройстве, или симулировать лаги мобильных сетей, или запустить сценарий ухода приложения в офлайн, можно сделать скриншот всего сайта, даже для больших страниц, требующих прокрутки и т.д. На самом деле, Инструменты разработчика требуют глубокого изучения, чтобы по-настоящему понять всю их мощь.

В предыдущих статьях я уже рассматривал несколько практических примеров использования инструментов DevTools в браузере:

Эта небольшая заметка посвящена анализу POST запросов. Мы научимся просматривать отправленные методом POST данные прямо в самом веб-браузере. Научимся получать их в исходном («сыром») виде, а также в виде значений переменных.

Я буду показывать на примере сайта http://spys.one/en/free-proxy-list/ из статьи про прокси. (На самом деле, это простейший пример — в качестве более сложных примеров, попробуйте самостоятельно разобраться, например, в POST GMail при открытии и других действий с письмами).

По фрагменту исходного кода страницы видно, что данные из формы передаются методом POST, причём используется конструкция onChange="this.form.submit();":

Несмотря на необычность решения — отсутствует кнопка «Отправить», а отправка данных происходит при любом изменении поля , это вполне простой пример, поддающийся анализу статичного кода — то есть можно собрать имена всех ‘ов, собрать их значения и составить строку. Но я предлагаю познакомиться с намного более быстрым способом анализа.

Как увидеть данные, переданные методом POST, в Google Chrome

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

Теперь отправляем данные с помощью формы.

Переходим во вкладку «Network» (сеть), кликаем на иконку «Filter» (фильтр) и в качестве значения фильтра введите method:POST:

Как видно на предыдущем скриншоте, был сделан один запрос методом POST, кликаем на него:

  • Header — заголовки (именно здесь содержаться отправленные данные)
  • Preview — просмотр того, что мы получили после рендеренга (это же самое показано на странице сайта)
  • Response — ответ (то, что сайт прислал в ответ на наш запрос)
  • Cookies — кукиз
  • Timing — сколько времени занял запрос и ответ
Читайте также:  Глубокий разряд литий ионного аккумулятора

Поскольку нам нужно увидеть отправленные методом POST данные, то нас интересует столбец Header.

Там есть разные полезные данные, например:

  • Request URL — адрес, куда отправлена информация из формы
  • Form Data — отправленные значения

Пролистываем до Form Data:

Там мы видим пять отправленных переменных и из значения.

Если нажать «view source», то отправленные данные будут показаны в виде строки:

Вид «view parsed» — это вид по умолчанию, в котором нам в удобном для восприятия человеком виде показаны переданные переменные и их значения.

Как увидеть данные, переданные методом POST, в Firefox

В Firefox всё происходит очень похожим образом.

Открываем или обновляем нужную нам страницу.

Открываем Developer Tools (F12).

Отправляем данные из формы.

Переходим во вкладку «Сеть» и в качестве фильтра вставляем method:POST:

Кликните на интересующий вас запрос и в правой части появится окно с дополнительной информацией о нём:

Переданные в форме значения вы увидите если откроете вкладку «Параметры»:

Если вы хотите получить отправленные данные в виде строки, то вернитесь во вкладку «Заголовки» и нажмите кнопку «Изменить и снова отправить», в открывшейся области пролистните до «Тело запроса»:

Как вы уже поняли, здесь не только можно скопировать строку POST, но и отредактировать её и отправить запрос заново.

Другие фильтры инструментов разработчика

Для Chrome кроме уже рассмотренного method:POST доступны следующие фильтры:

  • domain
  • has-response-header:
  • larger-than:
  • method:GET
  • method:OPTIONS
  • method:POST
  • mime-type:
  • mixed-content:
  • priority:
  • scheme:
  • set-cookie-domain:
  • set-cookie-name:
  • set-cookie-value:
  • status-code:

Два наиболее используемых метода HTTP: GET и POST.

Что такое HTTP?

Протокол HTTP предназначен для обеспечения связи между клиентами и серверами.

HTTP работает как протокол запроса-ответа между клиентом и сервером.

Веб-обозреватель может быть клиентом, а приложение на компьютере, на котором размещается веб-узел, может быть сервером.

Пример: клиент (обозреватель) отправляет HTTP-запрос на сервер; Затем сервер возвращает ответ клиенту. Ответ содержит сведения о состоянии запроса, а также может содержать запрошенное содержимое.

Два метода HTTP-запроса: Get и POST

Два часто используемых метода запроса-ответа между клиентом и сервером: Get и POST.

  • GET — Запрашивает данные из указанного ресурса
  • POST — Отправка данных для обработки в указанный ресурс
Читайте также:  Стереть контент и настройки что удаляется

Метод Get

Обратите внимание, что строка запроса (пары «имя-значение») отправляется в URL-адрес запроса GET:

Некоторые другие заметки о запросах GET:

  • GET запросы могут кэшироваться
  • GET запросы остаются в истории браузера
  • GET запросы могут быть закладками
  • GET запросы никогда не должны использоваться при работе с конфиденциальными данными
  • GET запросы имеют ограничения по длине
  • GET запросы должны использоваться только для извлечения данных

Метод POST

Обратите внимание, что строка запроса (пары «имя-значение») отправляется в теле HTTP-сообщения запроса POST:

Некоторые другие примечания по запросам POST:

  • POST запросы никогда не кэшируются
  • Запросы POST не сохраняются в журнале обозревателя
  • Запросы POST не могут быть закладками
  • Запросы POST не имеют ограничений по длине данных

Сравнить GET vs. POST

В следующей таблице сравниваются два метода HTTP: Get и POST.

Никогда не используйте Get при отправке паролей или другой конфиденциальной информации!

GET POST
Кнопка возврата/перезагрузка Безвредны Данные будут повторно отправлены (браузер должен предупредить пользователя о том, что данные будут повторно отправлены)
Закладка Можно закладка Не может быть Закладка
Кэшированные Может кэшироваться Не кэшируется
Тип кодировки application/x-www-form-urlencoded application/x-www-form-urlencoded or multipart/form-data. Использование многокомпонентной кодировки для двоичных данных
Истории Параметры остаются в журнале обозревателя Параметры не сохраняются в журнале обозревателя
Ограничения по длине данных Да, при отправке данных метод Get добавляет данные в URL-адрес; и длина URL ограничена (максимальная длина URL составляет 2048 символов) Без ограничений
Ограничения типа данных Разрешены только символы ASCII Никаких ограничений. Двоичные данные также разрешены
Безопасности Get менее безопасен по сравнению с POST, поскольку отправляемые данные являются частью URL-адреса POST немного безопаснее, чем Get, поскольку параметры не сохраняются в журнале обозревателя или в журналах веб-сервера
Видимость Данные видны всем в URL Данные не отображаются в URL-адресе

Другие методы HTTP-запросов

В следующей таблице перечислены некоторые другие методы HTTP-запросов:

Общего между ними то что они работают одинаково. Разницы между ними технически никакой. А вот идеологические различия есть.

Я расскажу о них в контексте PHP. Прошу заметить что протокол HTTP к PHP имеет косвенное отношение потому что он создавался для обмена html страницами а PHP просто расширяет возможности и того и другого.

GET запрос используется чтобы получить данные а POST чтобы отправить. (Напоминаю что технически они работают одинаково).

Читайте также:  Выключается телевизор сам по себе причины

Поэтому в контексте PHP опираясь на эту идеологию сделали следующим образом:
1. При каждом запуске PHP по умолчанию создаются суперглобальные массивы ($_GET, $_POST).
2. Если в строке запроса есть вопросительный знак(?). То все что после него считается параметрами GET запроса они представлены в формате ‘ключ’=’значение’ и в качестве разделителя используется знак амперсанда (&)
Пример:
GET /index.php?name=Андрей&surname=Галкин
это строка запроса, тут 2 параметра. эти параметры попадут в массив $_GET.
3. $_POST заполняется другим способом. содержимое этого массива заполняется из "заголовков запроса". То есть из места, скрытого от глаз в явном виде. Всю рутину по созданию таких заголовков берет на себя браузер. Хотя иногда и что-то редактируется в заголовках в ручную.

Чаще всего пост запрос используется в формах (для отправки данных).

Например у нас есть форма для входа 2 поля логин и пароль.

Представим что мы используем GET метод. Тогда при отправке формы мы перейдем на следующий адрес /login.php?login=Андрей&password=123 согласитесь что так передавать такую информацию совсем не безопасно. Любой может открыть ваш браузер и начиная вводить адрес сайта он из истории может увидеть ваши пароли и логины.

А вот если бы мы указали методом POST то мы бы получили следующий запрос:
POST /login.php (login=Андрей&password=123) то что в скобочках было бы скрыто и никак не сохранено в браузере.

Теперь другая ситуация например форма поиска. Мы вводим текст и получаем страницу с результатами. Вот тут уместнее GET форма. потому что нам было бы удобно сразу иметь ссылку на результат поиска, то есть добавить в строку запроса можно выразится "Публичные параметры", которыми можно поделиться. И как результат в строке браузера будет конкретная ссылка на текущую страницу. Мы можем ее скопировать, и разместить где-нибудь, или например скинуть другу. И получить при переходе одну и ту же страницу. А не просить других людей зайти на сайт и в поиск вбить определенную фразу чтобы получить необходимую страницу.

В общем подводя итог:
GET — это чтобы получить определенную страницу в определенном виде ( сортировка, текущая страница в блоге, строка поиска и т.п. ).
POST — для оправки данных которые не влияют на отображение страницы, в том плане что эти данные влияют только на результат выполнения скрипта ( логины, пароли, номера кредиток, сообщения и т.п. ).

Ссылка на основную публикацию
Что делать если плохо работает отпечаток пальца
Владельцы современных смартфонов на платформе Android нередко сталкиваются с тем, что сканер отпечатков пальцев реагирует недостаточно быстро и точно. Зачастую...
Хайскрин пауэр айс эво
Вас интересуют характеристики Highscreen Power Ice Evo (Хайскрин Повер Ис Эво)? Мы собрали всю важную информацию, чтобы помочь определиться с...
Халявные страницы в вк логины и пароли
Please complete the security check to access youhack.ru Why do I have to complete a CAPTCHA? Completing the CAPTCHA proves...
Что делать если пропал звук в наушниках
Всё о Интернете, сетях, компьютерах, Windows, iOS и Android Нет звука в наушниках на телефоне — что делать?! А Вы...
Adblock detector