Назад | Перейти на главную страницу

Запретить nginx выполнять изображения как скрипт PHP

Мой веб-сайт был взломан пользователем, который загрузил изображение с PHP-кодом. Этот код позволяет загружать файлы, и он загружает вредоносный скрипт PHP.

Он смог вызвать свой «image-php» с помощью GET по этому URL:

http://mypwnedwebsite.com/image.jpg/.php

Как я могу настроить nginx, чтобы предотвратить такое поведение? Я имею в виду, с простым /.php, он действует так, как будто все было PHP, что, с моей точки зрения, неверно.

На самом деле у меня "классическая" конфигурация nginx 1.6.2, и я думаю, что эта часть наиболее актуальна:

location ~ \.php$
    {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_read_timeout 120;
        include /etc/nginx/fastcgi_params;
    }

Это должно сработать.

location ~ \.php$
    {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_read_timeout 120;
        include /etc/nginx/fastcgi_params;
        try_files $uri $uri/ /404.html;
    }

Он пытается найти $ uri, если не папку, если нет, то выдается ошибка 404.