Всем добрый день
Возможно это боян и только я не знаю как так получается. Но столкнулся с интересной вещью.
Есть сайт, туда пользователи могут загружать картинки. И загружают. Но, если вместо картинки, под видом картинки, они загрузят 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, ведь тут есть обычный слэш?
--
Best regards,
Anton Kiryushkin