2010-07-28 65 views
1

有沒有什麼辦法像HTML文件或JavaScript從Web瀏覽器中獲取PHP源文件?如果是這樣如何?如果不是爲什麼?PHP獲取PHP文件

+0

爲什麼我會投票? – denniss 2010-07-28 19:27:12

+1

不知道這是爲什麼關閉。無論如何,google爲'AddHandler application/x-httpd-php-source .phps',你會發現一些關於如何設置Apache返回PHP源代碼而不是PHP腳本輸出的文章。 – 2010-07-28 19:28:10

+1

也看到這個問題,這是相同的:http://stackoverflow.com/questions/498521/php-security-retrieving-php-file-from-server-un-processed – 2010-07-28 19:30:10

回答

2

不,這是不可能的。在之前將服務器端語言解釋並運行將輸出發送到瀏覽器。

+0

這是可能的,只是不容易。 – rook 2010-07-28 19:23:05

+0

正確...當服務器出現故障時,整個文本將被打印在網絡瀏覽器上是否正確?那麼PHP腳本如何被解釋? – denniss 2010-07-28 19:23:14

+0

是的,但這是依賴於糟糕的服務器端代碼,而不是客戶端的行爲。按需檢索服務器端代碼是不可能的。 – 2010-07-28 19:26:00

0

僅當Web服務器發生故障時。否則,不會,因爲所有代碼都在服務器上執行,只有結果正在發送到瀏覽器。

2

當然。但是,只有當Web服務器配置爲僅返回文件而不是首先解釋它。大多數託管PHP文件的Web服務器都沒有這樣配置。

3

爲了在遠程服務器上讀取PHP源代碼,用戶需要發現和利用遠程file disclosure vulnerability.這些最常發生在應用程序自身,並且可以通過使用網絡應用漏洞掃描器等w3af來檢測。

基於MySQL的sql注入可用於使用load_file()函數作爲described here讀取文件。

它是possilbe該httpd的很容易受到源代碼公開攻擊,如這一個在IIS

0

不,這會對MySQL密碼和其他敏感數據造成巨大的安全風險。

+0

是的...這就是爲什麼我很擔心。 – denniss 2010-07-28 19:25:12

+0

您將密碼*置於*您的代碼中?這本身就是一個巨大的安全風險。把它/它們放在一個配置文件中,把文件*放在網絡空間的外面,這樣服務器就不能發送它了。以非常嚴格的權限鎖定文件。不要將文件檢入版本控制。 – 2010-07-28 19:38:05

1

有辦法做到這一點 - 但你必須在Web服務器需要設置服務「的.phps」爲text/plain的,因爲我已經做了,從我的Web服務器演示代碼示例。但是,如果您試圖從運行php的網站上挖掘代碼,那真的不可能。不是來自網絡瀏覽器。

0
<?printf($f='<?printf($f=%c%s%c,39,$f,39);?>',39,$f,39);?> 

所以,是的。

+0

whaaat ?? 「$ f」到底是什麼,這個腳本應該完成什麼?你應該如何在一個不屬於你的服務器上執行它? – mpen 2010-07-28 19:30:49

+0

標記,此代碼打印自身。 – iandisme 2010-07-28 19:37:23