2010-10-15 59 views
0

昨晚我做了一些管理員更改到我的網絡服務器。我使用PHP。更新後,php處理器失敗,如果有人訪問我的主頁,php頁面將簡單地下載並向任何訪問的人顯示專有代碼和密碼。所以我想知道是否有辦法阻止任何形式的使用.htaccess的PHP文件下載 - 但仍然允許正常查看文件。如何保護php文件與.htaccess從php5下載崩潰

回答

5

在開發過程中遵循的一個很好的模式是使用一個最小的初始化文件,它調用駐留在webroot之外的實際應用程序。這樣,只有一個沒有關鍵信息的最小存根被暴露在這樣​​的情況下。

簡單的例子:

/ 
    /app 
    critical_code.php 
    /webroot 
    .htaccess <- rewrites all requests to index.php 
    index.php <- invokes ../app/critical_code.php (or other files as requested) 
3

這裏的問題在於,.htaccess正在向用戶提供文件,或者它不是。您無法通過它來拒絕對.php文件的訪問,因爲在正常使用期間訪問也將被拒絕。 PHP處理器沒有後備行爲,只是沒有正確運行。

也許在做這樣的大事時暫時移動web根目錄指向「維護中」網站,儘可能降低風險。

+3

此外,將密碼保存在文檔根目錄下的包含文件中始終是一個好主意,正是由於此風險。 – Andrew 2010-10-15 02:31:05

+0

@Andrew:哦,我甚至沒有注意到提到密碼。我認爲他只是擔心人們看到他的代碼。是的,嗨。 – Matchu 2010-10-15 02:32:55

1

假設你使用Apache,你的.htaccess文件看起來是這樣的。

<FilesMatch ".*\.php"> 
    Order allow,deny 
    Deny from all 
    Satisfy All 
</FilesMatch> 
<IfModule php5_module> 
    <FilesMatch ".*\.php"> 
     Allow from all 
     Satisfy All 
    </FilesMatch> 
</IfModule> 

第一條規則拒絕訪問所有.php文件。默認情況下,用戶將看到403(禁止)錯誤。

如果PHP5模塊成功加載,則第二個規則將生效,並授予訪問權限。