2012-01-10 52 views
3

在PHP中,可以通過$_GET,$_POST,$_COOKIE的輸入進行遠程文件包含。我知道這是不可能的,但是有可能(有可能)僞造$_SERVER的價值嗎?

我的意思是,即使在罕見的情況下,$_SERVER也可以成爲遠程文件包含的來源嗎?

+0

可能重複[哪些$ _SERVER變量是安全的?](http://stackoverflow.com/questions/6474783/which-server-variables-are-safe) – rook 2012-01-10 15:52:32

回答

3

$ _SERVER是用來訪問請求的路徑,標頭等等

甲數的值被直接設置和由用戶(如QUERY_STRING)操縱,因此它在潛在的易受攻擊含陣列信息與$ _GET和$ _POST完全一樣。這取決於你如何在你自己的代碼中使用這些值。

您是否有具體的索引$ _SERVER記住您不想僞造?

+0

我的重點是服務器定義值,如DOCUMENT_ROOT, SERVER_NAME,PHP_SELF等。這些可以用來定位'include'的本地php文件。 – Googlebot 2012-01-10 11:29:41

+0

PHP_SELF肯定不被信任。嘗試創建一個文件回顯並請求它。 「domain.com/phpselfecho.php/anyrandompieceoftext」。使用SCRIPT_NAME – 2012-01-10 11:58:46

+0

@Nick Downton要好得多:但這是一個XSS漏洞 – symcbean 2012-01-10 13:22:40

1

是的,可以操縱$ _SERVER中的一些值。

然而,LFI依賴於攻擊者能夠注入要執行的代碼的引用讓PHP執行該代碼。除非您打算忽略每個請求中發送的URL以外的所有內容(即,您正在運行一個靜態網站),否則您將更加關注如何調用變量引用的代碼。

相關問題