Nginx

防止 nginx 將圖像作為 PHP 腳本執行

  • January 13, 2017

我的網站已被上傳包含 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;
   }

這應該有效。

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 錯誤。

引用自:https://serverfault.com/questions/826045