<div dir="ltr">Всем добрый день<div><br></div><div>Возможно это боян и только я не знаю как так получается. Но столкнулся с интересной вещью.</div><div>Есть сайт, туда пользователи могут загружать картинки. И загружают. Но, если вместо картинки, под видом картинки, они загрузят php-код, то, казалось бы, и черт с ним. Сервер его не обработает. Но нашли ведь лаз обращаться к файлу так:</div>
<div>ff9cf78666f326226e5328cd01e82e53804d7a44.png/.php<br></div><div><br></div><div style>В location nginx прописано тоже вроде бы корректно:</div><div style><br></div><div style><div> location ~ "^(.+\.php)($|/)" {</div>
<div> set $script $uri;</div><div> if ($uri ~ "^(.+\.php)($|/)") {</div><div> set $script $1;</div><div> }</div><div> if ($uri ~ "^(.+\.php)(/.+)") {</div>
<div> set $script $1;</div><div> }</div><div> fastcgi_index index.php;</div><div> fastcgi_split_path_info ^(.+\.php)(.*)$;</div><div> fastcgi_param PATH_INFO $fastcgi_path_info;</div>
<div> fastcgi_pass fpm-backend;</div><div> include fastcgi_params;</div><div> fastcgi_param SCRIPT_NAME $script;</div><div> fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;</div>
<div>}</div></div><div><div><br></div><div style>То есть все, что оканчивается на .php. Соблюдается. Но ведь файла нет. Я имею ввиду ".php". Почему nginx считает файлом ff9cf78666f326226e5328cd01e82e53804d7a44.png/.php, ведь тут есть обычный слэш?</div>
<div><br></div>-- <br><div>Best regards,</div>Anton Kiryushkin<br>
</div></div>