我想知道PHP文件如何確保安全。即使確切的位置是已知的,爲什麼不能下載php文件?如何保護PHP文件
當我上傳一個php文件到我的網絡服務器,讓我們說到domain.com/files,我打電話到domain.com/files頁面,我可以清楚地看到php文件和它的實際大小。然而,下載文件會導致一個空文件。
現在的問題是:安全機制是如何工作的?
我想知道PHP文件如何確保安全。即使確切的位置是已知的,爲什麼不能下載php文件?如何保護PHP文件
當我上傳一個php文件到我的網絡服務器,讓我們說到domain.com/files,我打電話到domain.com/files頁面,我可以清楚地看到php文件和它的實際大小。然而,下載文件會導致一個空文件。
現在的問題是:安全機制是如何工作的?
Web服務器的職責是將PHP腳本傳遞給PHP解釋器,該解釋器將HTML(或其他)輸出發送回Web服務器。
錯誤配置的Web服務器可能無法正確處理PHP腳本,並以原始形式將其發送到請求的瀏覽器,這將使得可以直接訪問PHP腳本。
你的虛擬主機可能有一個機制來列出目錄的內容,但除非它提供了一個下載機制來爲PHP腳本提供純文本頭(而不是HTML),而無需將其交給PHP解釋器,它將以PHP身份執行而不是傳送。
爲了能夠下載原始的PHP文件,服務器必須做一些額外的工作(可能通過另一個PHP腳本),它從磁盤讀取PHP文件並將其內容以純文本發送到瀏覽器頭。
簡短回答:由於服務器配置爲執行PHP文件並返回結果,您將永遠無法從外部訪問PHP源代碼。所有代碼都由服務器立即執行。所以,要回答你的問題:
安全機制是.php文件在請求時由服務器自動執行。
當您申請domain.com/files時,您的Web服務器設置爲顯示該目錄中的所有文件。
當您請求實際的php文件時,Web服務器執行它並將結果返回給您 - 而不是源代碼。
當然,以上兩者都可以配置。您可以切換目錄列表並禁用php文件的解析,以便輸出實際的文件內容/源代碼。
它通常是關閉目錄列表的好習慣。
當您首次在您的服務器上安裝PHP時,它會重新配置Apache,以便在請求.php文件時,Apache將處理轉移到PHP。 PHP然後處理文件中的代碼,並將PHP代碼echo
ed或print
的任何文本返回給Apache,然後通過網絡將其發回給請求PHP文件的人員。
「安全性」的好處在於Apache不會簡單地爲PHP文件提供服務,而是將其交給PHP處理器執行。如果Apache配置不正確,或者您使用的服務器軟件不能識別PHP,則原始PHP文件將發送給客戶端。
這是一個巨大的誤解。當您嘗試通過端口80訪問PHP文件時,您的請求可能會通過網絡服務器運行,該服務器會對文件執行某些操作。在PHP的情況下,它通過PHP解釋器運行該文件,該文件會導致該文件創建一些輸出,而即是發送給您的內容。
通過刪除該文件類型的解釋器,您可以輕鬆地允許下載PHP文件。如果Web服務器沒有任何特別的東西,並且不理解該文件,它只會讓客戶端下載它。
是的,我打算關閉目錄列表,但不知怎的,它似乎不工作。我的httpd.conf文件如下所示:http://pastebin.com/b6rgh15h我做錯了什麼? – cherrun 2012-02-14 18:30:18
杜!沒有所有的目錄標籤... – cherrun 2012-02-14 18:47:09