2010-06-14 56 views
9

爲了保護php文件的敏感性,我已經看到了一些建議,將一些或所有的php包含文件存儲在web文檔根目錄(username/public_html)信息(如數據庫連接和登錄信息),如果Web服務器打嗝並停止保護php文件,並且他們對知道去哪兒看的外部人員變得「可見」。在web根目錄以外存儲腳本文件

對我來說,這似乎有點偏執,但我猜測人們之前已經燒得不好,所以我願意繼續。該建議通常採用包含文件的形式,如'../include_files/',因此它不直接位於文檔根目錄中,並且不能通過Web服務器直接訪問外部人員。

我的問題是:這種方式之間的安全性存在顯着差異,只需將'include_files'目錄放在文檔根目錄下並在其中粘貼.htaccess文件(使用適當的條目)?將..htaccess文件放在'../include_files/'中會有什麼重大改進那裏

TIA,

回答

13

使用.htaccess增加開銷,因爲Apache有另一個項目,它需要檢查和處理。

保持文件脫離web根目錄不是偏執狂,這是一個很好的做法。如果有人直接訪問其中一個「包含」文件會發生什麼情況,並且由於所有先決條件文件未被加載而拋出顯示錯誤?

每個文件需要自己的安全檢查,以確保它在預期的環境下運行。網絡可訪問區域中的每個可執行文件都是潛在的安全漏洞。

+0

+1用於指出.htaccess的性能下降(另外,如果指定AllowOverride None,Apache甚至不會查找該文件)。同意你的其他要點,以保持文件不在文檔根目錄下;需要花費幾分鐘時間(尤其是使用__autoload/spl_autoload_register),那麼爲什麼不這樣做呢? – 2010-06-14 02:05:32

+0

問題是:你不能在許多/大多數共享主機中做到這一點。沒有? – docesam 2016-08-21 21:43:09

+0

根據我的經驗,共享主機會爲您提供一個目錄,其中包含一個設置爲公開的www目錄。 – 2016-08-23 19:54:18

4

這真的取決於你在你的include_files什麼。最重要的是你把任何憑證放在文檔根目錄之外(數據庫登錄等)。其他一切都是次要的,並不重要。

如果你不希望任何人竊取你的源代碼,然後嘗試按照Zend的約定信息:

application 
library 
public 

的DocumentRoot指向public和只包含媒體文件,JS/CSS文件。 HTML /視圖,數據庫邏輯,conf/credentials在application。第三方庫位於library

0

理論上,如果您只是在文件夾中粘貼.htaccess文件,您仍然可以直接調用.php文件。

將它們帶出服務器根目錄;但是,由他人瀏覽您的網站時,他們不會訪問有史以來

相關問題