網站安全中,對目錄的執行許可權是非常敏感的,一般來說,可以寫入的目錄是不能夠擁有指令碼的執行許可權的,像DedeCMS系統,可寫入的有兩個目錄data、uploads,data目錄主要是基本設定檔和快取資料,uploads則是附件上傳儲存的目錄,本篇將針對不同伺服器環境來介紹如何取消這兩個目錄的執行許可權,當然我們也建議使用者其他一些產生純靜態html的目錄,擁有可寫入許可權的也統統去除執行許可權,這樣系統會更為安全。
Windows下的IIS
IIS6.0
開啟IIS中網站,在網站uploads目錄、data目錄以及靜態html組建目錄點擊右鍵,菜單中選擇“屬性”,在目錄屬性面板選擇執行許可權為“無”即可。(如圖1)
(圖1)
IIS7
IIS7也類似於IIS6.0,選擇網站對應的目錄,data、uploads及靜態html檔案目錄,雙擊功能試圖面板中的“處理常式映射”(如圖2)
(圖2)
在“編輯功能許可權……”中,我們直接去除指令碼的執行許可權即可。(如圖3)
(圖3)
Apache下目錄指令碼的執行使用權限設定
外掛式主控件配置
在Apache中,沒有Windows 下IIS的圖形管理介面,我們需要手工修改下apache的設定檔,來進行目錄指令碼的執行許可權的設定。
首先我們找到apache的設定檔httpd.conf,通常情況下,該設定檔在apache安裝目錄下的conf檔案夾中(如圖4)。
(圖4)
開啟httpd.conf檔案,找到內容中如圖5的位置:
(圖5)
將需要限制執行指令檔的目錄配置添加到下方:
配置內容為:
1
2
3 Deny from all
4
5
配置內容中的DIR為需要限制執行指令檔的目錄,FilesMatch後的內容為需要限定的執行的指令碼尾碼名。例如:這裡需要禁止測試網站uploads檔案夾下的PHP,ASP,JSP指令碼的運行,則進行如下圖6配置:
(圖6)
在配置完成後,重啟一下apache,配置便生效!
在操作前,uploads檔案夾下我建立了一個index.php檔案,圖7為未作配置前訪問情況
(圖7)
圖8為重啟apache後訪問該頁面的效果。
(圖8)
虛擬機器主機/空間配置
在配置前需要確認你的空間是否支援.htaccess和rewrite,該方法基於.htaccess檔案中使用rewrite來達到禁止指定指令碼的運行效果。
規則內容如下:
1RewriteEngine on RewriteCond % !^$
2RewriteRule uploads/(.*).(php)$ – [F]
3RewriteRule data/(.*).(php)$ – [F]
4RewriteRule templets/(.*).(php)$ – [F]
針對uploads,data,templets 三個目錄做了執行php指令碼限制;
將如上內容儲存至到.hatccess檔案中,將該檔案存放到你的網站根目錄下,
這樣,目錄指令碼的執行許可權就控制好了,規則上傳前後的效果同圖7,圖8。