防止 nginx 将图像作为 PHP 脚本执行

防止 nginx 将图像作为 PHP 脚本执行

我的网站已被一名用户入侵,他上传了一张包含 PHP 代码的图片。此代码允许上传文件,而他上传了一个恶意的 PHP 脚本。

他能够通过以下 URL 上的 GET 来调用他的“image-php”:

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;
    }

答案1

这应该可行。

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 错误。

相关内容