Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: nginx + php-fpm
- To: nginx-ru@xxxxxxxxx
- Subject: Re: nginx + php-fpm
- From: Maxim Dounin <mdounin@xxxxxxxxxx>
- Date: Thu, 11 Apr 2013 15:17:47 +0400
- In-reply-to: <CAM_jxg1K8-qcnzGPLJ2pF3iq+C0qSTtN5k-hLEKAkYv=+k+2eQ@mail.gmail.com>
- References: <CAM_jxg1K8-qcnzGPLJ2pF3iq+C0qSTtN5k-hLEKAkYv=+k+2eQ@mail.gmail.com>
Hello!
On Thu, Apr 11, 2013 at 02:11:18PM +0400, Anton Kiryushkin wrote:
> Всем добрый день
>
> Возможно это боян и только я не знаю как так получается. Но столкнулся с
> интересной вещью.
> Есть сайт, туда пользователи могут загружать картинки. И загружают. Но,
> если вместо картинки, под видом картинки, они загрузят php-код, то,
> казалось бы, и черт с ним. Сервер его не обработает. Но нашли ведь лаз
> обращаться к файлу так:
> ff9cf78666f326226e5328cd01e82e53804d7a44.png/.php
>
> В location nginx прописано тоже вроде бы корректно:
>
> location ~ "^(.+\.php)($|/)" {
> set $script $uri;
> if ($uri ~ "^(.+\.php)($|/)") {
> set $script $1;
> }
> if ($uri ~ "^(.+\.php)(/.+)") {
> set $script $1;
> }
> fastcgi_index index.php;
> fastcgi_split_path_info ^(.+\.php)(.*)$;
> fastcgi_param PATH_INFO $fastcgi_path_info;
> fastcgi_pass fpm-backend;
> include fastcgi_params;
> fastcgi_param SCRIPT_NAME $script;
> fastcgi_param SCRIPT_FILENAME
> $document_root$fastcgi_script_name;
> }
>
> То есть все, что оканчивается на .php. Соблюдается. Но ведь файла нет. Я
> имею ввиду ".php". Почему nginx считает файлом
> ff9cf78666f326226e5328cd01e82e53804d7a44.png/.php, ведь тут есть обычный
> слэш?
Потому что nginx вообще ничего не считает, файла вообще может не
быть, или он может быть на другой машине. Если вы хотите, чтобы
nginx проверял существование файла, то добавьте try_files - и будет
проверять.
В данном случае, однако, правильное решение - это не городить
костыли в nginx'е, а исправить поведение php, чтобы он открывал
ровно то, что сказали, а не пытался придумать правильное имя файла
сам. AFAIK, выключить cgi.fix_pathinfo - помогает.
--
Maxim Dounin
http://nginx.org/en/donation.html
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|