2013-07-26 53 views
3

我正在開發一個PHP項目,爲其他程序員開發模板引擎。這個想法很簡單:將會有一個帶有模板的模板文件夾和一個帶有頁面的頁面文件夾,php會去獲取模板並使用當前的URL插入頁面。幾年前,我已經完成了這個沒有面向對象的項目,但現在我正在試着做一個面向對象的焦點。如何保護PHP中的配置文件?

我面臨的問題是關於配置。在原始系統中,我有一個配置爲硬編碼的PHP文件(包含文件夾,JavaScript,頁面等的文件夾的名稱)。在新的一個我想用XML存儲這些數據,但問題是,在這裏搜索Stackexchange我發現this的問題,如果我理解正確,如果我使用重寫解決方案,它甚至不會被訪問PHP腳本,所以我沒有辦法保護配置文件不被直接在瀏覽器中讀取。

我該如何處理這個問題?有比使用XML更好的解決方案嗎?我也避免使用數據庫,因爲這太簡單了,無法涉及到mysql連接等等。我非常肯定,有一種方法可以讓XML只能從服務器內部讀取,但我不確定這是否是最好的解決方案。

有人可以告訴我如何在這種情況下進行?

非常感謝!

+4

包含的文件系統不會被web服務器重寫,所以你在那裏安全。您也可以將配置文件保存在文檔根目錄之外。 – Orangepill

+0

如果數據庫是一個選項,然後探索該選項。我知道一些連接數據庫的應用程序僅用於幾個運行時配置 –

+1

使用不是'.php'格式的「配置文件」時要小心。如果直接訪問此文件,客戶端將看到整個內容,包括數據庫密碼以及您可能擁有的所有其他敏感參數。即使您配置了某些配置以保護其訪問權限,我也不建議您這樣做。當涉及到安全時,總是儘可能地結合儘可能多的技巧,以確保訪問限制將不會被繞過,即使某些因某種原因無法保護訪問權限也是如此。 – Havenard

回答

5

最簡單的解決方案是將xml文件放在比/ htdocs /或/ www /目錄更高的目錄中。這仍然可以通過PHP訪問,但不能通過HTTP連接訪問。

如果您希望使文件可以訪問某些外部HTTP請求,您可以使用.htaccess文件保護目錄,但我不建議將其作爲企業級解決方案。或者或者另外,您可能能夠將文件chmod改爲66(4)(而不是5 ..對不起),這應該足以限制文件訪問。

+1

chmod 664可能是要走的路。我不認爲配置文件需要可執行 – DeeDee

+1

+1。在web根目錄之外。如果你不想通過http直接訪問文件,那麼把它放在一個無法通過http訪問的地方。就那麼簡單。 – Spudley