2011-01-07 85 views
0

可能顯示的文件的:
When (if ever) is eval NOT evil?
when is eval evil in php?風險使用PHP的eval

由於我發現從外部文件作爲代碼執行串的沒有別的辦法,我使出利用eval()函數。我沒有特別詢問任何代碼,因爲我的用例場景中的示例很簡單 - 我想知道的是在PHP代碼中使用eval有什麼危險。

我做了一些關於這個問題的研究,但我無法找到一個能夠滿足我的好奇心任何回答。我所能找到的只是諸如「執行惡意代碼」,「濫用注射」等等。沒有例子,也沒有詳細解釋爲什麼這是一種很糟糕的做法。

人照顧回答這個一點點深入?

謝謝。

+1

除了安全問題之外,你通常不需要它。您想做什麼? – delnan 2011-01-07 23:36:31

+1

你不會想要評估用戶提供的任何東西。 – dqhendricks 2011-01-07 23:37:45

回答

0

針對存在的問題,看到這個鏈接:

http://www.google.com/search?q=php+why+eval+is+bad

但你不應該需要使用eval 。開發人員確實應該像eval不存在一樣行事。也許你可以更清楚地解釋你的情況?問題,如你在哪裏得到的代碼文件,爲什麼你不能使用include

0

只要你可以信任你與eval()調用的代碼的來源,你將是安全的。

如果隨機用戶提供你打電話eval()的字符串,那麼你是某人的風險爲您提供這樣的惡字符串:

exec("rm -rf /"); 

eval將愉快地運行這個字符串,並根據權限,它將刪除文件系統上的所有內容。

0

如果你是,你(或你信任的人)寫道,是不能公開訪問則是不超過定期執行PHP代碼更危險eval ING服務器端代碼。問題出在您依賴用戶輸入來執行評估,因爲它可能是惡意的。