А вот интересно, от ботов тоже будем требовать соблюдения RFC? Я воспроизвел ситуацию, как создать бесполезную нагрузку на сервер при бесконечном редиректе. Правильно я делаю запрос или нет - в данном случае не важно. Важно то, что оно работает, и у сервера нет встроенных средств для корректной обработки такой ситуации. По большому счету, это называется уязвимостью. Дальше. господа разрабы, решать вам. Закрыть проблему или оставить все как есть и подождать, пока эту уязвимость начнут эксплуатировать.
Засим позволю себе откланяться, поскольку не имею времени продолжать бессмысленную дискуссию. Спасибо. >Понедельник, 7 августа 2017, 16:12 +03:00 от Валентин Бартенев ><vb...@nginx.com>: > >On Monday 07 August 2017 15:26:11 CoDDoC wrote: >> Ну, хорошо. Пусть в моем примере вообще нет хоста. >> Тогда что такое https://test.com ? Давайте назовем строкой запроса, суть >проблемы от этого не меняется. > >В вашем примере это аргумент командной строки, который не участвует в запросе. >В строке запроса он не передается. > > >> В документации так: >> " $host >> в порядке приоритета: имя хоста из строки запроса, или имя хоста >из поля “Host” заголовка запроса.....," >> >> Объясните мне, пожалуйста, что понимать как "имя хоста из строки запроса" и >"имя хоста из поля “Host” заголовка запроса". >> Желательно с примером для курла, как особо одаренному. > >Что такое строка запроса описано в RFC: >https://tools.ietf.org/html/rfc7230#section-3.1.1 > >Пример с curl: > >$ curl -ILH 'Host: www.nginx.org ' -x http://nginx.org:80/ http://nginx.org/ > > >> >> Далее, Вы приводите пример с netcat. Аналогично можно использовать telnet. >> Только ведь после получения Location ему нужно следовать. Полученный >Location: http://nginx.org/ куда возвращает? На HEAD http://nginx.org/ >HTTP/1.1. > >Первый пример netcat как раз содержит http://nginx.org/ в строке запроса >и как вы можете наблюдать - редиректа нет. > >Второй пример не содержит в строке запроса хоста, а в заголовке Host >содержится www.nginx.org и происходит редирект. > > >> >> То же самое, только не вводить построчно: >> >> curl -ILH 'Host: www.nginx.org ' https://nginx.org/ >> >> И точно такое же зацикливание. > >В данном случае отправляет запрос только с www.nginx.org в заголовке Host >и отсутствием хоста в строке запроса. Так работает curl. > >Зацикливания происходит только потому, что вы сами заставили curl >постоянно отправлять запрос с Host: www.nginx.org , о чем предупреждает >документация: > > >man curl: > > -H, --header <header> > > WARNING: headers set with this option will be set in > all requests - even after redirects are followed, > like when told with -L, --location. This can lead to > the header being sent to other hosts than the origi‐ > nal host, so sensitive headers should be used with > caution combined with following redirects. > > > >Если вы укажите заголовок Host так, как это правильно для curl, >то никаких проблем нет: > > curl -IL https://www.nginx.org/ > > >> Пусть мои примеры неверны. Но работают, и приводят к зацикливанию при >псевдо-валидном запросе. > >Ваши примеры демонстрируют неправильное использование команды curl, >о чем вас предупреждает документация. > >> По большому счету, меня интересует только, как это побороть. >> > >Использовать curl правильно. > >-- >Валентин Бартенев >_______________________________________________ >nginx-ru mailing list >nginx-ru@nginx.org >http://mailman.nginx.org/mailman/listinfo/nginx-ru
_______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru