duplicate Host header

Maxim Dounin mdounin на mdounin.ru
Вт Мар 24 12:51:09 UTC 2020


Hello!

On Tue, Mar 24, 2020 at 01:50:17PM +0500, Илья Шипицин wrote:

> вижу 400-ки на вот такое
> 
> 2020/03/24 09:43:55 [info] 22318#22318: *514553220 client sent duplicate
> host header: "Host: example.ru <http://diadoc-api.kontur.ru/>", previous
> value: "Host: example.ru" while reading client request headers, client:
> X.X.X.X
> 
> 
> хост в обоих случаях одинаковый.
> понятно, что, наверное, RFC тут не ночевало. с другой стороны, ну послал
> клиент два раза одинаковый хост. никто ж не умер. может пропускать такие
> запросы ? или есть какой-то риск ?

Есть какой-то риск, даже если хосты строго одинаковые.  Например 
такой, что "два раза одинаковый хост" - это по RFC то же самое, 
что "Host: example.ru, example.ru", что совсем не то же самое, что 
"Host: example.ru".

Ну и до кучи, отклонять такие запросы - прямое требованием RFC 7230:

   A server MUST respond with a 400 (Bad Request) status code to any
   HTTP/1.1 request message that lacks a Host header field and to any
   request message that contains more than one Host header field or a
   Host header field with an invalid field-value.

Если очень хочется, чтобы "может пропускать", то так было с nginx 
0.7.0 и до nginx 1.17.8 включительно.  Начиная с nginx 1.17.9 
такие запросы отклоняются.  Если есть какие-то самописные клиенты, 
которые нарушают RFC и шлют несколько заголовков Host - нужно 
исправить этих клиентов.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru