Maxim Dounin
September 17, 2012 01:24PM
Hello!

On Mon, Sep 17, 2012 at 11:19:02AM -0400, ruv wrote:

> День добрый!
>
> > > > *) Безопасность: теперь nginx/Windows игнорирует точку в конце
> > > > компонента URI и не разрешает URI, содержащие
> > > > последовательность ":$".
> >
> > Да, это связано именно с этим изменением. Под windows точка в
> > конце любого имени файла/каталога - не значащая, и такие uri нужно
> > либо отвергать, либо нормализовывать. В противном случае имеем
> > возможность обхода ограничений доступа. До 1.3.1 делалось
> > нормализация только для последнего компонента пути, сейчас - для
> > всех.
>
> Дело еще в том, что ведь далеко не каждый URI отображается на файловую
> систему.
> Поэтому, я думаю, при передаче бэкенду допустимо проводить нормализацию
> только если специально указано в конфиге (как например merge_slashes).
> Понимаю, тут возникает трудность в реализации. В location ведь сейчас
> сопоставляется нормализованный URI. Может быть тогда эту нормализацию тоже
> опцией отключать (будет полная аналогия merge_slashes)?

Нормализовывать (или отвергать) необходимо по умолчанию, ибо в
противном случае конфигурация вида

location /admin/ {
auth_basic ...
}

на виндах превращается в фикцию. В частности - при передаче
запросов бекенду, т.к. типичный бекенд (читай: php) открыват файлы
без каких-либо дополнительных проверок.

Сделать нормализацию отключаемой, снабдив надписью "берегись
леопарда" (a la merge_slashes), - можно, но не факт, что нужно.
Особенно с учётом того, что отключать это можно только для всех
виртуальных хостов на паре ip:port разом.

> > Если нужно проксировать без нормализации uri (в предположении, что
> > бекенд сам справится с этой проблемой, и/или он не на виндах) -
> > должно помочь написание директивы proxy_pass без URI, i.e.
> >
> > proxy_pass http://backend;
> >
> > без "/" в конце.
>
> Но, в таком случае не подменяется часть URI запроса, соответствующая
> location. И тоже получается несовместимость — придется править код на
> бэкендах, появится лишняя связаность и зависимость...

Ну как мнимум два пути решения проблемы очевидны: отказаться от
trailing dots или использовать proxy_pass без URI. И я совершенно
не уверен, что изобретать третий, притом не безопасный путь - это
хорошая идея.

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

nginx-1.3.1

Maxim Dounin June 05, 2012 10:32AM

Re: nginx-1.3.1

Михаил Монашёв June 05, 2012 11:54AM

Re: nginx-1.3.1

Maxim Dounin June 05, 2012 11:56AM

Re[2]: nginx-1.3.1

Михаил Монашёв June 05, 2012 12:06PM

Re: nginx-1.3.1

Maxim Dounin June 05, 2012 12:32PM

Re: nginx-1.3.1

Anton Yuzhaninov June 05, 2012 01:00PM

Re: nginx-1.3.1

Maxim Dounin June 05, 2012 02:36PM

Re: nginx-1.3.1

ruv September 14, 2012 06:42PM

Re: nginx-1.3.1

Maxim Dounin September 17, 2012 07:16AM

Re: nginx-1.3.1

Andrey Repin September 17, 2012 08:20AM

Re: nginx-1.3.1

Maxim Dounin September 17, 2012 09:06AM

Re: nginx-1.3.1

Andrey Repin September 17, 2012 10:02AM

Re: nginx-1.3.1

Maxim Dounin September 17, 2012 12:04PM

Re: nginx-1.3.1

ruv September 17, 2012 11:19AM

Re: nginx-1.3.1

Maxim Dounin September 17, 2012 01:24PM

Re: nginx-1.3.1

ruv September 17, 2012 06:17PM

Re: nginx-1.3.1

Maxim Dounin September 18, 2012 04:44PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 265
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready