· GET /~kpnc/cgi-bin/post.pl?user=kpnc amp;pass=saltmine HTTP/1.0·· HTTP/1.1 200 OK· Date: Sun, 16 Apr 2000 17:01:10 GMT· Server: Apache/1.3.6 (Unix)· Connection: close· Content-Type: text/html·· «H1»«CENTER»Simple POST Sample«/CENTER»· «HR»USER:«I»kpnc· «BR»PASS:«I»saltmine· POST /~kpnc/cgi-bin/post.pl HTTP/1.0· Content-length:25·· user=kpnc· amp; pass=saltmine·· HTTP/1.1 200 OK· Date: Sun, 16 Apr 2000 17:00:34 GMT· Server: Apache/1.3.6 (Unix)· Connection: close· Content-Type: text/html·· «H1»«CENTER»Simple POST Sample«/CENTER»· «HR»USER:«I»kpnc· «BR»PASS:«I»saltmine

 Идентичность ответов сервера доказывает, что независимо от способа передачи параметров, удаленная программа работает одинаково. Причем, перенос строки в методе POST не способен отделить один параметр от другого и если символ-разделитель « amp;» опустить, будет обработана только одна лексема - “user=kpnc”.

Врезка «замечание»

Если возникнут затруднения с определением поля “Content-length”, задающим длину строки параметров (что особенно характерно для работы в telnet-клиенте), ее можно взять «с запасом», заполнив оставшийся конец мусором.

Метод POST позволяет передавать на сервер сообщения практически неограниченной длины, [271] поэтому, он позволяет организовать HTTP-закачку файлов на сервер, даже в том случае, когда метод PUT недоступен.

Метод DELETE, как и следует из его названия, предназначен для удаления ресурсов с сервера, однако, очень трудно представить себе администратора который бы допускал ее выполнение неавторизованным пользователям. Тщательные поиски так и не помогли найти ни одного примера в сети для демонстрации, поэтому придется ограничиваться «голой» теорией [272].

На этом описание методов протокола HTTP пришлось бы и закончить, если бы в 1996 году не появилась новая, значительно улучшенная спецификация - HTTP/1.1. Подробно все нововведения описаны в RFC-2068, здесь же будут перечислены лишь основные моменты.

Врезка «замечание»

Спецификация HTTP/1.0 поддерживает метод HEAD, который аналогичен GET, но возвращает лишь заголовок ответа, без тела сообщения.

Как правило, он используется для быстрой проверки доступности ресурса, что делает его привлекательным кандидатом на роль переборщика имен файлов, в надежде получить несанкционированный доступ к данным, «защита» которых базируется на одном лишь засекречивании ссылок. Удивительно, но такая атака часто срабатывает.

Прежде всего, требует пояснения ситуация, связанная с попыткой использования любого метода, с указанием номера новой версии. Например, на запрос “GET /~kpnc/ HTTP/1.1” сервер возвратит сообщение об ошибке 400 - “неверный запрос”. Такая ситуация продемонстрирована в примере, приведенном ниже:

·

GET /~kpnc/ HTTP/1.1·· HTTP/1.1 400 Bad Request· Date: Tue, 18 Apr 2000 14:18:41 GMT· Server: Apache/1.3.6 (Unix)· Connection: close· Transfer-Encoding: chunked· Content-Type: text/html·· 184· «!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"»· «HTML»· «HEAD»· «TITLE» 400 Bad Request «/TITLE»· «/HEAD»· «BODY»· «H1» Bad Request «/H1»· Your browser sent a request that this server could not understand.«P»· client sent HTTP/1.1 request without hostname· ( see RFC2068 section 9, and 14.23 ): /~kpnc/«P»· «HR»· «ADDRESS»Apache/1.3.6 Server at lightning.prohosting.com Port 80«/ADDRESS»· «/BODY»· «/HTML»
Перейти на страницу:

Похожие книги