Apache. Документация на русском


Директивы Apache
  1    2    3    4    5    6    7    8    9    10    11    12    13    14    15    16    17    18    19    20    21    22    23    24    25    26    27    28    29    30    31    32      33      34    35    36    37    38    39    40    41    42    43    44    45    46    47    48    49    50    51    52    53    54    55    56    57    58    59    60    61    62    63    64    65    66    67    68    69    70    71    72    73    74    75    76    77    78    79    80    81    82    83    84    85  
  86    87    88    89    90    91    92  
  93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    162    163    164    165  
  166    167    168    169    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    202    203    204    205    206    207    208    209    210    211    212    213    214    215    216    217    218    219    220    221    222    223    224    225    226    227    228    229    230    231    232    233    234    235    236    237    238    239    240    241    242  

 <         > 
Список директив: Core  |  ModRewrite  |  Lua  |  Proxy  |  SSL

Директива HttpProtocolOptions
  RU            EN  

Description:Modify restrictions on HTTP Request Messages
Syntax: HttpProtocolOptions [Strict|Unsafe] [RegisteredMethods|LenientMethods] [Allow0.9|Require1.0]
Default: HttpProtocolOptions Strict LenientMethods Allow0.9
Context:server config, virtual host
Status:Core
Module:core
Compatibility:2.2.32 or 2.4.24 and later

Описание: Изменить ограничения на сообщения HTTP-запросов


Эта директива изменяет правила, применяемые к строке HTTP-запроса (RFC 7230 §3.1.1) и полям заголовка HTTP-запроса (RFC 7230 §3.2), которые теперь применяются по умолчанию или с использованием параметра Strict . Из-за устаревших модулей, приложений или пользовательских агентов, которые должны быть объявлены устаревшими, Unsafe была добавлена опция для возврата к устаревшему поведению.

Эти правила применяются перед обработкой запроса, поэтому должны быть настроены в глобальном или стандартном (первом) соответствующем разделе виртуального хоста по интерфейсу IP/порта (а не по имени), чтобы они соблюдались.

Директива принимает три параметра из следующего списка вариантов, применяя значения по умолчанию к тем, которые не указаны:

Строгий|Небезопасный

До введения этой директивы синтаксические анализаторы сообщений запроса HTTP-сервера Apache были терпимы к ряду форм ввода, которые не соответствовали протоколу. RFC 7230 §9.4 Разделение запроса и §9.5 Контрабанда ответов указывают только на два потенциальных риска, связанных с приемом несовместимых сообщений запроса, в то время как RFC 7230 §3.5 «Надежность синтаксического анализа сообщений» определяет риски принятия неясных пробелов и форматирования сообщения запроса. С момента введения этой директивы все грамматические правила спецификации применяются в Strict рабочем режиме по умолчанию, а строгие пробелы, предложенные в разделе 3.5, применяются и не могут быть смягчены.

Риски безопасности Unsafe

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

Пример запроса, ведущего к HTTP 400 со строгим режимом

# Missing CRLF
GET / HTTP/1.0\n\n

Инструменты командной строки и CRLF

Некоторые инструменты необходимо принудительно использовать CRLF, иначе httpd вернет ответ HTTP 400, как описано в приведенном выше примере использования. Например, для правильной работы OpenSSL s_client требуется параметр -crlf .

Директива DumpIOInput может помочь при просмотре HTTP-запроса для выявления таких проблем, как отсутствие CRLF.

Зарегистрированные методы | Мягкие методы

RFC 7231 §4.1 «Методы запроса» «Обзор» требует, чтобы исходные серверы отвечали кодом состояния HTTP 501, когда в строке запроса встречается неподдерживаемый метод. Это уже происходит при LenientMethods использовании параметра, но администраторы могут захотеть переключить RegisteredMethods параметр и зарегистрировать любые нестандартные методы с помощью RegisterHttpMethod директивы, особенно если Unsafe параметр был переключен.

Совместимость с прямым прокси

Этот RegisteredMethods параметр не следует переключать для передающих прокси-хостов, поскольку методы, поддерживаемые исходными серверами, неизвестны прокси-серверу.

Пример запроса, приводящего к HTTP 501 в режиме LenientMethods

# Unknown HTTP method
WOW / HTTP/1.0\r\n\r\n

# Lowercase HTTP method
get / HTTP/1.0\r\n\r\n

Разрешить0.9|Требовать1.0

RFC 2616 §19.6 «Совместимость с предыдущими версиями» рекомендовал HTTP-серверам поддерживать устаревшие запросы HTTP/0.9. RFC 7230 заменяет это «Ожидание поддержки запросов HTTP/0.9 было удалено» и предлагает дополнительные комментарии в RFC 7230, Приложение A. Параметр Require1.0 позволяет пользователю удалить поддержку Allow0.9 поведения параметра по умолчанию.

Пример запроса, ведущего к HTTP 400 с режимом Require1.0

# Unsupported HTTP version
GET /\r\n\r\n

Просмотр сообщений ErrorLog , зарегистрированных на LogLevel debug уровне , может помочь идентифицировать такие ошибочные запросы вместе с их источником. Пользователи должны обратить особое внимание на 400 ответов в журнале доступа для недействительных запросов, которые были неожиданно отклонены.

  RU            EN