2009-08-07 27 views
0

例如,使用CodeIgniter,而沒有真正處理.php文件。目錄結構中的任何.php文件是否可讀?如果不是爲什麼不呢?爲什麼我無法瀏覽我的CI目錄中的config.php?它只是unix文件的權限?哪個php文件是安全的?

謝謝。

回答

1

我從'瀏覽器'的角度來看這個。如果你想看到目錄的立場,看看zombat的答案。


在笨具體而言,他們可能已經建立了一個.htaccess文件,指導所有的請求到一個腳本,使他們能夠在一個腳本,而不是2個腳本處理它。

由於PHP是'服務器端'編程語言,文件中的信息都不會被髮送到客戶端。這允許您使用任何方法生成您想要的HTML頁面,因爲客戶端永遠不會看到代碼。這兼作安全設備。

在大多數PHP情況下,開發人員會將庫和類構建到Document_Root(網站啓動的位置)上方的文件夾中,然後簡單地放入運行這些類的文件。這使得他們可以絕對確定一個人沒有機會找到他們的文檔結構,並使用該信息下載可以向他們提供關於如何破解系統的信息。

此方法還允許人們不關心服務器運行的語言。所有的網頁都是用HTML創建的,所以服務器需要生成一個HTML文件。無論他們使用Perl,Python,PHP還是其他語言,完全取決於開發人員。

0

linux/unix系統上的PHP文件遵循與其他所有文件相同的文件權限規則。如果您無法瀏覽到您的config.php文件,那麼是的,您登錄的用戶沒有相應的文件權限。

通常,您希望您對PHP項目的權限進行設置,以便運行您的Web服務器的uid具有適當的權限來讀取和執行Web結構中的文件。

對於我自己,我通常在我的LAMP系統上設置一個webdev組,並將apache用戶加入到這個組中。我在PHP文件結構上正確設置了所有組權限,以便Apache可以做它需要做的事情。這樣用戶可以擁有自己的所有Web文件,並且可以使用webdev組來控制對結構的任何其他訪問。這可以減輕多用戶系統中某人進入並讀取配置文件以獲取數據庫密碼的擔憂。

1

通常,像config.php這樣的文件沒有任何輸出。因此,他們可以被瀏覽器訪問,但用戶不會看到任何東西。

用戶從未看到您的.php文件的源代碼,如果這是您所擔心的。您的Web服務器將通過PHP處理器傳遞所有.php文件;只有您的.php文件生成的輸出纔會發送給用戶。

如果config.php與您的其他.php文件位於同一目錄(通常是),那麼沒有Unix文件權限或.htaccess事情正在進行。它只是一個不產生輸出的文件。

+0

因此,只要我有一個PHP處理器沒有辦法「讓」PHP文件顯示其來源? – johnny 2009-08-07 21:20:18

+0

正確。我能想到的唯一例外是如果你打開了'display_errors'或'display_startup_errors':它可能會顯示出現錯誤的代碼行。你通常關閉部署。 – Nate 2009-08-08 03:54:58

1

要回答你爲什麼不能在CodeIgniter中瀏覽到你的config.php的問題,這不是因爲Unix權限,也不是保護它的.htaccess文件。

所有的CodeIgniter PHP文件都在文件頂部有一行檢查常量「BASEPATH」。該常量只在您瀏覽框架時設置,因此當您嘗試訪問文件而不通過框架時,將不會設置「BASEPATH」,腳本將退出。

這是CodeIgniter的便攜式文件安全保護方式,因爲不是每個人都使用Apache(.htaccess文件)。