
Глава 7. HTTP/1.1 281
ограничения ответа одним ресурсом и одним методом. Если кто-то перехватывал
сообщения в сети, то он мог бы только повторить тот запрос, ответ на который он
уже знал. От клиента требовалось вычислить контрольную сумму, включающую
URI, метод запроса, имя пользователя, пароль и уникальное значение временной
метки. Временная метка является кодом по модулю 16 или по модулю 64, которая
гарантированно является уникальной для каждого момента, когда сервер посылает
ответ 401 Unauthorized (ответ 401 Unauthorized посылается тогда, когда сервер
считает, что полномочия клиента являются недостаточными). Значение временной
метки создается на основе комбинации времени, генерируемого сервером, атрибута
доступа к содержимому ресурса и личного ключа, известного только серверу. Вре-
менная метка для клиента непрозрачна.
Аутентификация в HTTP подробно обсуждается в документе RFC 2617, кото-
рый является документом, сопутствующим спецификации НТТР/1.1 (RFC 2616).
7.10.2. Целостность
Целостность сообщения — это важная составная часть обеспечения безопасно-
сти:
то, что было отправлено, должно быть доставлено получателю в целости и со-
хранности. Новый заголовок содержимого Content-MD5 в НТТР/1.1 используется
для проверки целостности тела содержимого. Дайджест MD5 является 128-разряд-
иой контрольной суммой и представляется в HTTP в виде 32-х отображаемых сим-
волов ASCII. Биты преобразуются от старших к младшим, группами по четыре
бита в шестнадцатеричные цифры от
О
до f (например, битовая строка 1010 пред-
ставляется шестнадцатеричной цифрой а, а 0100
—
шестпадцатеричной цифрой 4).
Дайджест позволяет получателю убедиться, что полученное содержание яъляелся
точно тем же, которое было отправлено. Заголовок Content-MD5 могут использо-
вать только исходные серверы, поскольку он предназначен для реализации сквоз-
ного контроля целостности. Однако все промежуточные серверы (например, про-
кси-серверы и шлюзы) могут проверять целостность полученной ими информации.
Распространенной в Internet угрозой является атака отказа от обслуживания
(DoS — Denial of Service). В Web DoS-атака может принимать множество форм,
включая передачу Web-серверу сообщений большого объема. Сообщения большого
объема могут переполнить буферы и также привести к нарушению безонас1юсти.
DoS -атака
—
это классическая проблема, с которой сталкиваются серверы; если бы
серверу была известна длина сообщения а priori, сервер мог бы принять решение о
том, следует ли ему расходовать свои ресурсы на обработку запроса. Код ответа
411 Length Required дает клиенту понять, что серверу необходимо знать длгту
тела содержимого сообщения до обработки запроса. Это стандартный способ гаран-
тировать, что протокол не заставит сервер принимать сообщения произвольно
большого объема. Однако если сообщение разбито на фрагменты (см. раздел 7.6),
то можно не указывать длину содержимого в сообщении. Сервер, поддерживаю-
щий НТТР/1.1, обязан анализировать сообщения разбитые на фрагменты. Однако
сервер в любой момент может принять решение, что сообщение слишком велико и
отправить код ответа 411 Length Required и затем закрыть соедините.
Новый код ответа 414 Request-URI Too Long может быть возвращен, если сер-
вер не готов обрабатывать слишком длинный URI. Поскольку в протоколе макси-
мальная длина не определена, конкретные реализации пользуются своими собст-
венными ограничениями, чтобы установить соответствующее значение. Хороший
способ применения данного кода состояния, это когда сервер полагает, что произ-
водится атака типа переполнения буфера. Программы, которые имеют фиксиро-