一個完整的網站絕對少不了檔案上傳的功能,但開放上傳檔案卻也可能成為系統的安全性漏洞。對一個 LAMP 伺服器而言,常見的攻擊手法之一就是上傳 PHP 惡意程式碼,透過 PHP 程式來破壞系統或存取機密資料 (例如存放在 MySQL 資料庫裡的資料表等),因此禁止「存放上傳檔案的目錄」執行 PHP 程式是很重要的。
「禁止特定目錄執行PHP」最簡單的做法就是直接在 Apache 伺服器的 Configuration File 裡針對該目錄設定 php_flag engine off。例如當網站根目錄為 /var/www,而存放上傳檔案的目錄為網站根目錄底下的 files/ 時,我們可以這樣設定,這麼一來這個目錄底下所有的 PHP 檔案都會改以直接下載的方式取代在伺服器上執行:
<Directory /var/www/files> AllowOverride None php_flag engine off Order allow,deny Allow from all </Directory>