2013-02-07 38 views
0

我無法在計算器上找到正確答案。但也許這只是我愚蠢。如何檢查上傳的文件(或通過文本框中的文本)是否包含PHP代碼?

我有一個用戶表單,用戶可以上傳文本文件。我們正在做一些明智的事情,例如保存外部htdocs並重命名文件 - 但是,如何檢查上傳的文件是否包含一些可能有害的PHP代碼段?還有一個文本框被保存爲文本文件,我們想檢查用戶是否也提交了php代碼。

與檢查「<?php」一樣愚蠢嗎?這可以重新寫入某種形式的字節形式,這將使此檢查無用。

請注意,文件可能包含有效的「<」和「>」字符作爲輸入的一部分 - 我不想逃避這些因爲那麼我的數據處理應用程序將無法在此消毒表單上工作。

回答

2

不應該有任何需要你這樣做:你只需要注意在PHP代碼可以執行的上下文中從不使用輸入。

如果您收到表格數據,請確保您不是eval()某些時候的內容。除此之外,你應該沒問題。

如果您收到文件,請確保將它們存儲在PHP解釋器無法執行的位置。見例如Prevent execution of uploaded php files?也確保你永遠不會include() ing用戶上傳的文件 - 如果他們是你需要顯示某些點的文件,使用file_get_contents()(並且不要忘記消毒他們的HTML輸出)。

+0

但是,如果你必須測試一個文件是否包含可運行的PHP代碼,你會怎麼做? – MalteseUnderdog

+0

@Maltese爲什麼你需要測試一下,你的用例是什麼? –

-1

使用文件名和擴展名之間的下劃線替換該點。

相關問題