Nginx, PATH_INFO и перезапись URL: я должен пропускать что-то

Можно использовать ebox-платформу, она имеет некоторые хорошие функции для управления пропускной способностью и качеством обслуживания.

2
задан 18 January 2011 в 19:31
1 ответ

Хорошо у Вас есть многочисленные проблемы, в первую очередь, Вы следуете поганому учебному руководству, которое сильно устарело. if (!-f обычно не рекомендуется с try_files, предлагаемым как лучшая замена.

Во-вторых, у Вас есть директивы в месте / контекст, который должен быть в контексте сервера, таким образом, можно избежать дублирования пути в переменной SCRIPT_FILENAME.

Во-вторых, Вы используете перерыв во флаге Ваш переписывать, это эффективно означает, что он не должен переоценивать соответствие местоположения. Это эффективно выполняет запрос, никогда не покидают местоположение / блок, и вместо этого рассматривается как статический запрос файла.

В-третьих. Взгляните на Ваш location ~ \.php$ {

Nginx соответствует местоположениям против URI, и Вы конкретно говорите Nginx только обрабатывать URIs, которые заканчиваются в .php, но если Вы перепишете к index.php/test/затем, то он не инициирует.

Наконец. Вы используете PATH_INFO, в то время как необходимо использовать REQUEST_URI. Различие - то, что, чтобы заставить PATH_INFO работать необходимо сказать Nginx передавать любой запрос с .php в нем к PHP, и PHP должен затем найти правильный файл.

Это означает, что Вы позволяете запросам как example.org/uploads/image.jpg/index.php быть отправленными в PHP, и Вы также позволяете PHP выполнять файл /uploads/image.jpg. Если злонамеренный пользователь загрузил тот файл с PHP в нем, у них теперь есть выполнение произвольного кода на Вашем сервере. Это - очень реальное использование, для которого я лично видел, что люди уязвимы.

Прекратите использовать случайным образом Погугленные учебные руководства, потому что 90% из них являются чрезвычайным мусором, вместо этого пойдите, читает Wiki. Это могла бы быть необходимость беспокойства на самом деле узнать о веб-сервере, который Вы используете, но альтернативе нужно было поставить под угрозу Ваш сервер.

3
ответ дан 3 December 2019 в 11:07

Теги

Похожие вопросы