Полная версия

Главная arrow Информатика arrow Автоматическое построение профилей нормального поведения веб-приложений

  • Увеличить шрифт
  • Уменьшить шрифт


<<   СОДЕРЖАНИЕ   >>

Сравнение наборов HTTP-параметров

Необходимо дополнительно рассмотреть вопрос о сравнении наборов HTTP-параметров.

Параметры могут быть переданы в веб-приложение методами GET и POST [22, 23], определёнными в стандарте протокола HTTP. При использовании метода GET параметры передаются в URL-адресе вида http://<адрес риложения>?параметр1=значение1&параметр2=значение2

Так как длина URL ограничена, метод GET применим для передачи данных небольшого объёма. Cогласно стандарту HTTP [23], запросы типа GET считаются идемпотентными -- многократное повторение одного и того же запроса GET должно приводить к одинаковым результатам (при условии, что сам ресурс не изменился за время между запросами). Это позволяет кэшировать ответы на запросы GET. В качестве примера можно привести поисковую систему Google.com - она принимает поисковый запрос в URL-строке.

При использовании метода POST данные посылаются внутри самого HTTP-запроса. При этом ограничение на длину данных, передаваемых методом POST, определяется конфигурацией самого веб-сервера. Метод POST используется для передачи данных большого объёма (данные из форм, файлы и т. п.). В отличие от метода GET, метод POST не считается идемпотентным, то есть многократное повторение одних и тех же запросов POST может возвращать разные результаты. Примером может служить отправка сообщения на форум. Сообщение может иметь большую длину и при каждой отправке одного и того же сообщения будет появляться новая копия сообщения на странице соответствующей темы.

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

В качестве примера, иллюстрирующего такой подход, можно привести популярные веб-приложения, созданные при помощи технологии PHP - систему управления контентом Drupal (текущая версия - 5.1) [27] и систему управления форумом Invision Power Board (текущая версия - 2.2) [28].

В системе управления контентом Drupal вся работа ведётся через файл index.php, расположенный в папке приложения, в котором, по мере необходимости, подключаются дополнительные модули и библиотеки. Специальный GET-параметр q используется для указания действия или адреса страницы и присутствует в URL-адресе всегда, за исключением случая, когда идёт обращение по базовому адресу веб-приложения. В этом случае параметр q считается неопределённым, что соответствует главной странице сайта под управлением Drupal. К примеру, при заданном значении параметра q=admin/build/modules система выводит список модулей в виде формы с флажками. Можно выбрать модули, которые должны быть подключены и по нажатию кнопки отправки данных система сохранит конфигурацию и проинсталлирует выбранные модули. При этом данные формы будут переданы по URL-адресу, содержащему то же значение параметра q=admin/build/modules, но среди POST-данных будет присутствовать скрытый (типа hidden) параметр формы form_id со значеием «system_modules», что будет являться указанием системе сохранить параметры конфигурации, переданные из формы. Аналогично реализованы остальные функции системы: параметр q используется для указания действия, а POST-данные содержат данные для обработки.

В системе управления форумом Invision Power Board используется схожая схема работы. Все действия осуществляются через файл index.php. Действия и дополнительные данные для обработки указываются как в GET, так и в POST-параметрах. К примеру, GET-параметр showforum=8 в URL-адресе является командой отображения страницы со списком тем форума с соответсвующим идентификатором в базе данных; GET-параметр showtopic=12 - команда отображения страницы со списком сообщений на тему с соответствующим идендификатором в базе данных. При добавлении сообщения данные отсылаются методом POST, в числе которых присутствует скрытый (hidden) параметр act со значением «Post», что и является для системы командой на обработку остальных данных и добавление сообщения.

Таким образом, можно сделать следующий вывод. GET-параметры во многих случаях используются как своеобразные «указатели» действия или для навигации, поэтому разные значения одного и того же GET-параметра могут приводить к логически разным действия веб-приложения (как в случае GET-параметра q системы управления контентом Drupal). POST-параметры содержат данные для обработки и, за исключением служебных, вроде скрытого параметра act системы управления форумом Invision Power Board, рассмотренного выше, как правило не управляют логикой работы веб-приложения - разные значения POST-параметров будут обрабатываться в рамках одной и той же логики. Из этого следует, что GET-параметры логично сравнивать на точное совпадение по значению, а POST-параметры - на совпадение типов. Однако, в ряде случаев для отдельных параметров возможны исключения или особые условия при сравнении. Набор типов и их семантика определяется реализацией; подробнее об используемом наборе типов и задании исключений и особых условий при сравнении рассказывается в Подразделе 6.2.2 и Подразделе 6.4.2.

Таким образом, далее будет считаться, что два набора HTTP-параметров совпадают, если:

  • а) количество и набор GET-параметров совпадают, значения соответствующих GET-параметров совпадают;
  • б) количество и набор POST-параметров совпадают, типы соответствующих POST-параметров совпадают;
  • в) HTTP-параметры, для которых оговорены особые правила сравнения, совпадают согласно правилам сравнения.
 
Перейти к загрузке файла
<<   СОДЕРЖАНИЕ   >>