2010-12-01 89 views
0

假設你有一個文件myfile.php它執行一些PHP代碼。如果它被命名爲myfile.php.xx,其中xx是任何字符,可以以何種方式(任何可能的方式)執行此文件?那麼myfile.phpxx?在同樣的情況下,其他類型的可執行文件(.pl,.exe,.dll等)怎麼辦?擴展名爲.php.xx的PHP文件可以作爲PHP執行嗎?

我正在使用正則表達式來檢查這些類型的文件的文件名的防火牆。檢查.php,.exe等文件的末尾是否足夠,還是應該檢查後面的內容?

+0

請問是什麼樣的防火牆?即將離任的?傳入?它應該保護什麼,一個Web服務器? – deceze 2010-12-01 06:35:01

+0

這是不可能的。文件擴展意味着什麼;您可以將.exe重命名爲任何您想要的,並且您可以告訴Web服務器將所有類型的文件解釋爲PHP。 – 2010-12-01 06:36:22

回答

8

完全是直到網絡服務器決定如何處理給定的URL。如果它想要在本月的第三個星期四下午2:35訪問一個20位數字的URL作爲PHP腳本,那麼這是它的特權。嘗試猜測Web服務器嚴格按照所請求的URL進行的操作是不可能的。

+3

+1隨機條件 – 2010-12-01 06:27:48

3

實際的PHP解釋器並不關心文件名或擴展名。你可以拋出任何文件,如果它包含有效的PHP代碼,它將被執行。

一個Web服務器默認扔.php(也可能是.php4.php5)文件的PHP解釋器,但可以做出這樣做與任何文件類型與適當的設置:

AddHandler php5-script .foobar 

它也可以默認使用Perl腳本,C#程序或擦除硬盤來處理以.php結尾的URL。

文件名的含義絕對是nothing