Re: специальные символы в запросах
Maxim Dounin
mdounin на mdounin.ru
Вт Апр 23 12:39:39 UTC 2019
Hello!
On Tue, Apr 23, 2019 at 04:59:38AM -0400, anatolr wrote:
> включаю debug как понять почему строку location не использует
>
> location: ~ "^(.*)/\<(.*)$" {
> return 404;
> }
>
> 2019/04/23 11:43:55 [debug] 2737#0: *23 test location: "/"
> 2019/04/23 11:43:55 [debug] 2737#0: *23 test location: "images/"
> 2019/04/23 11:43:55 [debug] 2737#0: *23 test location: ~ "^(.*)alert(.*)$"
> 2019/04/23 11:43:55 [debug] 2737#0: *23 test location: ~
> "^(.*)document(.*)$"
> 2019/04/23 11:43:55 [debug] 2737#0: *23 test location: ~ "\.php"
> 2019/04/23 11:43:55 [debug] 2737#0: *23 using configuration "\.php"
Когда речь идёт о location'ах, заданных регулярными выражениями -
используется первое совпавшее. В вашем случае это "location ~ \.php",
как ясно видно из debug log'а. Подробнее стоит почитать в
документации:
http://nginx.org/ru/docs/http/ngx_http_core_module.html#location
Отдельно отмечу, что location отвечает только за проверку
собственно URI запроса, без учёта аргументов. Соответственно
закрыть так наиболее типичные XSS-уязвимости - в аргументах
запроса - не получится, надо вместо этого использовать if'ы. И
там кроме этого - вылезет отдельная проблема с необходимостью
учитывать возможный URL encoding.
Но вообще, как вам уже совершенно верно сказали, подобный путь
решения проблем безопасности - крайне сомнителен.
--
Maxim Dounin
http://mdounin.ru/
Подробная информация о списке рассылки nginx-ru