Maxim Dounin
January 28, 2021 01:08PM
Hello!

On Thu, Jan 28, 2021 at 07:37:17PM +0300, Иван wrote:

> Здравствуйте!
>
> Вопрос коротко: является ли
>
> rewrite ... redirect на 100% безопасным при использовании if внутри
> location.
>
>
> Подробнее:
>
> В https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/
>
> > The only 100% safe things which may be done inside if in a location
> > context are:
> >
> > * return
> > <https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return>
> > ...;
> > * rewrite
> > <https://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite>
> > ... last;
> >
> то есть единственным вариантов rewrite на 100% безопасным с if в
> location написан rewrite с last. Учитывая написанное в статье далее и
> моё понимание nginx предполагаю, что rewrite можно не только с last, но
> так же с redirect и permanent, так как исключают выполнение других
> директив в рамках этого локейшена.
>
> "Возможно опасными" тут могут быть только break и, вероятно, отсуствие
> флагов rewrite так как оставляют возможность выполнения других директив
> не из модуля rewrite.
>
> Я прав?

Не совсем.

Там, собственно, кто-то бред написал про "100% safe", да останется
это на совести того, кто полез править написанную мной статью, не
понимая её. Не бывает "100% безопасного" использования if'а
внутри location'а, в лучшем случае бывает просто безопасное
использование.

Возвращаясь к исходному вопросу про безопасность "rewrite ...
last", то ответ тут длинный. В случае if'а безопасность
достигается ровно одним способом: обработка запроса не должна
происходить внутри неявного location'а, созданного if'ом.
Это бывает в случае "rewrite ... last", а также почти бывает в
случае "return", если по этому return'у nginx куда-то уходит в
рамках error_page.

Если же речь идёт о том, что клиенту возвращается ответ - как в
случае "return" без соответствующего error_page или "rewrite ...
redirect" - то мы уже попадаем на отдельную конфигурацию, в рамках
которой этот ответ возвращается. Каких-либо известных проблем в
подобных ситуациях - нет, по крайней мере со стандартными
модулями. Да и со сторонними скорее всего тоже - там будет простое
наследование конфигурации, накосячить сложно. Но таки никто не
гарантирует, что прооблем нет совсем.

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

Is if evil with rewrite ... redirect?

Иван January 28, 2021 11:38AM

Re: Is if evil with rewrite ... redirect?

Maxim Dounin January 28, 2021 01:08PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 262
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