Re: Об одной малоизвестной уязвимости в веб сайтах
Валентин Бартенев
vbart at nginx.com
Wed Jun 18 07:54:59 UTC 2014
On Tuesday 17 June 2014 18:05:15 S.A.N wrote:
> Валентин Бартенев Wrote:
> -------------------------------------------------------
> > Как уже неоднократно в этой ветке говорилось, nginx в параметрах
> > HTTP_* пишет
> > ровно то, что от него требуется: заголовки, пришедшие от клиента, в
> > том виде,
> > в котором они получены.
>
> Nginx так и должен делать, если запрос валидный, а инвалидные запросы на
> бекенд передавать не имеет никакого смысла, они не несут в себе полезной
> нагрузки (payload) для бекенда.
[..]
Вы подменяете понятия. Пока ещё никто из дискутирующих не смог привести
аргументов за то, что такие запросы не являются валидными.
Попытки ссылаться на требования к клиенту и склонять спецификацию так,
как того хочется - результата точно не принесут.
Это с точки зрения вашего конкретного бэкенда запрос не валиден, nginx
же вполне справляется с его обработкой, как в общем-то и многие другие
сервера.
Можете предложить исправить "баг" на ietf.org:
$ netcat ietf.org 80
HEAD http://www.ietf.org/ HTTP/1.1
Host: example.com
Host: example.org
HTTP/1.1 200 OK
Date: Wed, 18 Jun 2014 07:49:22 GMT
Server: Apache
Last-Modified: Thu, 05 Jun 2014 15:47:35 GMT
ETag: "884603a-49c4-4fb18a9ec37a4"
Accept-Ranges: bytes
Content-Length: 18884
Vary: Accept-Encoding
Content-Type: text/html
или на apache.org:
$ netcat apache.org 80
HEAD http://www.apache.org/ HTTP/1.1
Host: example.com
Host: example.org
HTTP/1.1 200 OK
Date: Wed, 18 Jun 2014 07:49:57 GMT
Server: Apache/2.4.9 (Unix) mod_wsgi/3.4 Python/2.7.5 OpenSSL/1.0.1h
Last-Modified: Sun, 15 Jun 2014 09:10:45 GMT
ETag: "a250-4fbdc492d0221"
Accept-Ranges: bytes
Content-Length: 41552
Vary: Accept-Encoding
Cache-Control: max-age=3600
Expires: Wed, 18 Jun 2014 08:49:57 GMT
Content-Type: text/html; charset=utf-8
или на google.com в конце-концов:
$ netcat google.com 80
HEAD http://google.com/ HTTP/1.1
Host: example.com
Host: example.org
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Location: http://www.google.ru/?gfe_rd=cr&ei=wkShU4e1GM-A4AS4poHoDg
Content-Length: 258
Date: Wed, 18 Jun 2014 07:50:26 GMT
Server: GFE/2.0
Alternate-Protocol: 80:quic
> По этому, мы разработчики бекенда хотели бы чтобы Nginx не передавал нам
> инвалидные запросы, а отдавал 400 статус.
>
[..]
Список "инвалидных запросов" в студию. Завтра придут просить запретить
запрос к /private/, поскольку с точки зрения некоторого бэкенда он не
валиден.
--
Валентин Бартенев
Подробная информация о списке рассылки nginx-ru