Моя визитка
Урок 1. Хакинг
Урок 2. Антихакинг
Урок 3. Инструменты хакинга
Урок 4. Защита Windows 2000/XP
Урок 5. Проникновение в систему
Урок 6. Реализация цели вторжения
Урок 7. Сокрытие следов
Урок 8. Хакинг браузеров Web
Урок 9. Хакинг почтовых клиентов
Урок 10. Деструкция почтового клиента
Урок 11. Хакинг Web-сайтов
Урок 12. Атаки DoS
Урок 13. Хакинг компьютеров Windows 2000/XP
Урок 14. Хакинг средств удаленного управления
Урок 15. Хакинг брандмауэров
Урок 16. Перехват сетевых данных
Урок 17. Хакинг коммутируемого доступа
Приложение А
Приложение В
Приложение С
Приложение D
Приложение E

ПРИЛОЖЕНИЕ С

Общая структура сообщения HTTP
Запросное сообщение HTTP

Протокол HTTP

Все информационные ресурсы Интернета организованы в виде гипертекстовой информационной системы, более известной как сеть Web, хранящей документы HTML, связанные между собой гиперссылками. Для взаимодействия клиентских компьютеров с серверами Web используется протокол HTTP (Hypertext Transfer Protocol - Протокол передачи гипертекстовых файлов). Протокол HTTP обеспечивает загрузку на клиентский компьютер документа по указанному адресу и переходы на другие документы по гиперссылкам. В настоящее время применяется версия HTTP 1.1 этого протокола (определенная стандартом RFC 2616, который можно найти в Интернете по адресу http://www.ietf.org/rfc/rfc2616.txt) и подготавливается новая версия HTTP 1.2. Обсудим основные - принципа сетевого взаимодействия, определяемые протоколом HTTP 1.1.

Общая структура сообщения HTTP

Взаимодействие клиентского компьютера с сервером Web протекает следующим образом. Пользователь указывает браузеру адрес нужного ему документа Web, браузер посылает серверу запрос, на который он через какое-то время получает ответ и отображает его пользователю. Протокол HTTP определяет структуру данных, передаваемых серверу (запрос) и получаемых с сервера (ответ, или ответное сообщение). Эти сообщения представляют собой последовательности байтов двоичного кода, называемых потоками, путешествующими от сервера к клиенту и обратно. И запрос, и ответ имеют одинаковую структуру, или формат этих потоков информации. Формат запроса (ответа) определяется стандартом RFC 822. Сообщения HTTP 1.1 состоят из начальной строки, совокупности полей заголовков, разделенных символами возврата каретки (CR) и перевода строки (LF) - CRLF, и необязательного тела сообщения.

Начальные строки в запросных и ответных сообщениях различаются между собой. В запросных сообщениях начальная строка включает в себя метод обработки ресурса, запрашиваемого по указанному далее в строке адресу ресурса, а также номер версии протокола HTTP. В ответных сообщениях начальная строка играет роль строки состояния, содержащей трехзначный числовой код, фиксирующий итог выполнения запроса. Каждая цифра этого кода означает определенное состояние процесса выполнения запроса; например, значение строки состояния 200 означает успешное выполнение запроса, 402 -указывает на необходимость оплаты за загрузку ресурса, и т.д.

Тело сообщения содержит те сведения, которые, собственно, и передаются в сообщении (например, документ HTML).

Заголовки сообщений являются полями данных, также называемых полями заголовков. Они состоят из имени поля (состоящего из набора букв, причем регистр букв не учитывается) и необязательного значения поля, разделенных символом двоеточия (:).

Заголовок сообщения=Имя_ поля ":" [Значение поля]

Назначение полей заголовков в запросных и ответных сообщениях различно, но все они подразделяются на общие заголовки, заголовки ответов, заголовки запросов и информационные заголовки.

• Общие заголовки содержат информацию, одинаково применимую как в запросах, так и ответах, например, дату запроса или параметры соединения.

• Заголовки запросов передают серверу дополнительную информацию о клиенте, например, его идентификационные данные, требуемые для доступа к запрашиваемому ресурсу.

• Заголовки ответов, наоборот, передают клиенту информацию о сервере, например, информацию о программе (включая ее название и краткое описание), используемой для обработки запроса.

• Информационные заголовки включают сведения о самой информации, передаваемой в запросе или ответе.

Заголовки первых трех типов рассмотрены в разделе «Запросное сообщение HTTP», где будет обсуждаться работа с формами, а сейчас обратим внимание на информационные заголовки, которые непосредственным образом определяют характер содержимого документа HTML, т.е. содержат метаданные о документе. Вот список этих заголовков (табл. 1).

Таблица 1. Информационные заголовки HTTP 1.1

Имя

Назначение

Allow

Содержит перечень методов, допустимых в запросах данного ресурса, например: Allow: GET, HEAD, PUT

Content-Encoding

Указывает способ кодирования тела запроса и используется для указания метода сжатия, примененного к телу сообщения. Дополняет указание типа содержимого в теле сообщения, содержащееся в заголовке Content-Type, например:

Content-Encoding: gzip

(указывает на сжатие gzip)

Content-Language

Указывает на исходный язык документа, например: Content-Language: da (здесь определен датский язык)

Content-Length

Указывает размер документа в байтах, например: Content-Length: 35645

Content-Location

Содержит перечень относительных и/или абсолютных адресов URL других ресурсов, требуемых телу сообщения, и хранящихся в других местах Web. При разрешении указанных здесь относительных адресов URL базовым адресом считается адрес запроса.

Content-MD5

Содержит дайджест (т.е. краткий цифровой код документа, используемый для его цифровой подписи) тела сообщения, определенный стандартом RFC 1864.

Content-Range

Если тело сообщения передается частями, этот заголовок указывает позицию фрагмента сообщения во всем сообщении.

Content-Type

Перечисляет все типы содержимого для данных, хранимых в теле сообщения. Значения этого заголовка имеют такой формат:

Content-Type:Type"/"Subtype [имя_параметра_1 "=" значение_1;...]

Здесь Туре - это тип, a Subtype - подтип содержимого; после этой пары могут быть перечислены соответствующие ей параметры и их значения, разделенные точкой с запятой. Например, заголовок:

Content-Type: text/html; charset=ISO-8859-4

указывает, что тело сообщения является текстовым документом HTML, подготовленным в кодировке ISO-8859-4. Используемые типы содержимого должны регистрироваться в специальной организации IANA (Internet Assigned Numbers Authority - Агентство по выделению имен и уникальных параметров протоколов Интернет).

Expires

Указывает дату и время, по истечении которого информация в теле сообщения считается устаревшей, например:

Expires: Sat, 04 Dec 1999 16:00:00 GMT

Last-Modified

Указывает дату и время последнего обновления ресурса, например:

Last-Modified: Tue, 17 Dec 2001 11:40:26 GMT

В дополнение к заголовкам в табл. С.1 информационные заголовки могут быть пополнены другими заголовками, что не требует внесения изменений в протокол (хотя дополнительные заголовки не обязаны распознаваться всеми программами обработки документов HTML). Чтобы включить в ответное сообщение, посылаемое на запрос документа HTML, информационный заголовок HTTP, авторы могут воспользоваться элементом МЕТА, языка HTML.

Запросное сообщение HTTP

Запросное сообщение HTTP имеет ту же самую структуру, что и ответное (см. выше), за исключением начальной строки. Эта строка в случае запросных сообщений называется строкой запроса, и она имеет такой вид.

Строка запроса=Метод SP Запрашиваемый_адрес_URL SP

Версия_протокола_НТТР CRLP

Здесь SP - это символ пробела ASCII (код 32), Метод - это название метода HTTP, который должен быть применен к ресурсу, указанному запрашиваемым адресом URL, a CRLF - это код возврата каретки (CR) и перевода строки (LF). Набор методов запроса HTTP указан в табл. 2.

Таблица 2. Методы запроса HTTP

Метод

Назначение

OPTIONS

Этот метод представляет собой запрос информации о средствах, обеспечиваемых подключением к запрашиваемому ресурсу.

GET

Этот метод предназначен для запроса информации, предоставляемой ресурсом, указанным адресом URL запроса. Эта информация должна предоставляться в теле ответного сообщения.

HEAD

Этот метод подобен методу GET за исключением того, что теперь сервер не должен предоставлять информацию в теле ответного сообщения; от него требуется только с помощью заголовков HTTP переслать метаинформацию о ресурсе.

POST

Этот метод применяется для запроса, который указывает серверу, что пересылаемое в запросе тело сообщения должно быть передано ресурсу, указанному адресом URL в строке запроса.

PUT

Этот метод указывает, что содержащаяся в теле запроса информация должна быть помещена на сервер по указанному адресу URL.

DELETE

Этот метод указывает, что сервер должен удалить ресурс, указанный адресом URL строки запроса.

TRACE

Этот метод используется для возврата клиенту обратного сообщения, тестирующего линию связи между клиентом и сервером.

CONNECT

Это зарезервированный спецификацией HTTP 1.1 метод, предназначенный для работы вместе с прокси-сервером.

Дополнительные методы

Методы, расширяющие средства протокола HTTP 1.1.

В языке HTML 4 метод HTTP, используемый для отправки формы в программу обработки, определяется атрибутом METHOD элемента FORM. Спецификация языка HTML 4, поддерживаемая организацией W3C, не определяет все допустимые способы отправки или все типы содержимого, которые могут использоваться для набора данных формы. Данная спецификация предусматривает только два значения атрибута METHOD - "get" и "post". Передача данных при этом происходит следующим образом.

• Если для атрибута METHOD установлено значение "get", а для атрибута ACTION указан адрес HTTP, клиентский браузер берет значение атрибута ACTION, добавляет к нему символ "?", затем добавляет набор данных формы, закодированный с использованием типа содержимого "application/x-www-form-urlencoded". Затем браузер выполняет транзакцию GET протокола HTTP, отправляя этот адрес URL на сервер для обработки. При использовании метода GET набор данных формы ограничивается кодами ASCII.

• Если для атрибута METOD установлено значение "post", а атрибут ACTION определен как адрес HTTP, клиентский браузер выполняет транзакцию POST протокола HTTP с использованием значения атрибута ACTION и сообщения, созданного в соответствии с типом содержимого, определенным атрибутом ENCTYPE.

Для других значений атрибута ACTION или METHOD способ обработки набора данных формы спецификацией HTML 4 не определен. После выполнения транзакций GET и POST протокола HTTP клиентские браузеры должны представлять пользователю отклики на соответствующие транзакции.

Как следует из табл. 2, метод GET следует использовать, если форма предназначена для операций, подобных поиску и извлечению данных из какого-либо источника, т.е. не предназначена для изменения данных, хранимых на сервере. Большинство операций поиска в базах данных, часто используемых на узлах Web, как раз удовлетворяют таким критериям и представляют собой идеальное приложение для метода GET.

Если обработка набора данных формы связана с изменениями в данных, хранимых на сервере, например, если форма обновляет содержимое базы данных или производит подписку на услуги, следует использовать метод POST.

При использовании метода GET набор данных формы должен включать только символы набора ASCII. Только при использовании метода POST с атрибутом ENCTYPE, определенным как "multipart/form-data", можно использовать весь набор символов, определенный в стандарте ISO10646.

Hosted by uCoz