2009-01-31 39 views
12

真的有辦法做到這一點嗎?從服務器檢索原始.php文件(除了進入服務器的FTP帳戶)?這就是爲什麼有工具/腳本來加密php源代碼的原因嗎?PHP安全:從服務器檢索PHP文件,未處理

如果這是真的,那麼如何防範呢? (不使用php源代碼加密)

編輯:服務器提到了PHP運行,例如。 apache-php-mysql,您的標準託管服務器配置。

回答

15

如果你在談論別人的服務器,那麼簡短的回答是否定的。如果第三方可以閱讀你的PHP源代碼,那將是一個相當大的安全漏洞,因爲PHP文件傾向於包含數據庫密碼,哈希鍵,專有算法和其他你不想落入壞人之手的好東西。

如果您正在談論您自己的服務器(即您自己有權訪問),那麼可以在服務器上放置簡單的腳本,以便您指定服務器上任何文件的路徑,以及它以純文本的形式返回。 但是,由於上面提到的原因,您從來沒有想過要在生產服務器上放置這樣的腳本。

+0

明白了。那麼唯一的方法就是將上述腳本上傳到服務器並運行它。那是你在說什麼? – andyk 2009-01-31 09:08:53

0

如果文件是從啓用了php解釋的web服務器提供的(通過HTTP),那麼它將被處理。你會得到未經處理的代碼的唯一方法是如果PHP被禁用了。

+0

umm ..不,服務器有php運行。但是,如果這是唯一的情況,是否真的有辦法修改服務器以禁用PHP或什麼? – andyk 2009-01-31 08:59:46

+0

不,什麼?我不明白。你說過我做過的同樣的事情。有人遠程無法禁用PHP,除非他們有權訪問配置文件。 – 2009-01-31 09:01:02

5

一般而言,您無法訪問遠程源代碼。 PHP模塊必須被禁用才能發生。

但作爲一個思想實驗,這會發生什麼?

除了可以訪問整個文件系統的批發漏洞之外,想象一下如果應用程序中存在允許您將行插入.htaccess文件的安全漏洞。鑑於httpd進程可寫入的.htaccess對於Wordpress等應用程序非常有用,因此不會太奇怪。

如果添加此:

php_value engine off 

源文件現在已經成爲下載!

4

如果服務器配置不正確,PHP文件不能像這樣處理。

一些例子:

  • 某些服務器配置爲顯示highlighted source code of a PHP file當作爲.phps代替請求。
  • 有些開發人員使用.inc來打算使用includerequire包含的文件。如果服務器沒有配置爲將它們作爲PHP處理,那麼它們將在直接請求時以純文本的形式提供。

但是開發者也可能是漏洞的來源。例如,當他使用腳本從服務器下載文件時,該腳本幾乎可以接受每個輸入而無需驗證。

0

我曾經遇到一個配置錯誤的Web服務器,它有一臺虛擬主機通過PHP解釋器正確設置到服務器PHP文件。有第二個虛擬主機指向相同的目錄,但沒有啓用PHP。這意味着像'config.php'這樣的東西可以用作純文本顯示的多個應用程序。衆所周知,典型的config.php具有數據庫認證憑證和其他不應該知道的事情。

因此,瞭解您的Web服務器設置非常重要,並確保您沒有做一些愚蠢的事情。