2011-06-01 60 views
3

幾天前我參加了一個研討會,他們討論的是「危險的」PHP功能。但是他們沒有說我們應該使用它們。他們命名爲eval()preg_match(),exec()等等。我應該怎樣或應該使用被認爲「危險」的php函數?

雖然我不使用它們,或者不經常使用它們,但有時我不得不使用它們。使用這些功能被認爲是不好的做法?即使我知道我在哪裏使用它們,用戶無法達到它?

編輯: 對於的preg_match()的問題,看看這個: preg_match() security hole

+0

他們提到了爲什麼'preg_match()很明顯,因爲它們允許你在主機上調用任意程序,但是這個對我來說並不明確。 – Kris 2011-06-01 07:49:36

+2

http://en.wikipedia.org/wiki/ReDoS – 2011-06-01 07:52:05

+2

'preg_replace'在你使用'e因爲它意味着''eval()'替換(view [view] [PCRE]上的修飾符部分(http://es2.php.net/manual/en/reference.pcre.pattern.modifiers.php))。但只適用於'preg_replace',不知道@edem是否意味着'preg_replace'而不是'preg_match',或者它對preg_match有一些我不知道的危險 – 2011-06-01 07:55:11

回答

11

所有主要允許注入代碼到你的系統上運行,如果你不保護反對那些方法。如果你在不知道危險是什麼的情況下使用它們,你有可能在腳下開槍自殺。如果你完全知道自己在做什麼,並且你別無選擇,只能使用這種方法,那麼在任何情況下你都無能爲力。

這個問題有可開發的功能非常全面的列表在PHP

Exploitable PHP functions

+0

謝謝你的名單。 – 2011-06-01 08:38:29

0

嗯......我不認爲preg_match是東西,所以「危險」。另一方面,evalexec有點不好。特別是exec甚至在託管服務器上大都被禁止,因爲它增加了真正巨大的安全風險。

+0

您可以使用正則表達式執行代碼! – 2011-06-01 07:52:14

+0

我說「這樣​​」,我沒有說它根本就沒有:)在preg_match上使用/ e很少用在代碼上,這種代碼不是寫入漏洞利用... Surly有很多人試圖找到任何可能的方式來傷害某人的網站,但比較'preg_match'到'exec',我不認爲'preg_match'是最糟糕的一個。爲了安全......好吧,很多PHP函數都是安全漏洞:) – RRStoyanov 2011-06-01 07:56:41

1

真的這是一個味道的問題。這真的只是有足夠的繩子掛上自己。只要您100%確定沒有用戶可以直接輸入evalexec聲明,您可能沒有問題,但很難說明不應該有一種不同的,更安全的方式來執行您的任務,重新嘗試。

1

如果您的服務器曾經受到攻擊,可能是來自一個安全性較差的表單或include()調用的代碼注入攻擊,那麼一些用處不大但功能非常強大的PHP函數會讓攻擊者通過exec對整個系統進行太多的控制(),所以你可以在你的ini文件中完全阻止這些函數。

報價的php.ini

;此指令允許你禁用某些功能安全 ; reasons.It收到一個逗號分隔的功能列表 ;名稱。此指令是不是受安全模式是否爲 ;打開或關閉。 disable_functions選項=

編輯 JohnP的鏈接列表,你應該警惕的

1

在這裏,所有的功能在這裏筆者問爲什麼EVAL是危險的帖子: http://blog.joshuaeichorn.com/archives/2005/08/01/using-eval-in-php/,請閱讀answears,在這裏另一個有趣和短小的文章: http://www.hardened-php.net/suhosin/a_feature_list:eval_black_and_whitelist.html

恕我直言,問題是,如果你使用像eval或exec這樣的函數,你需要100%知道什麼可變傳遞給t下襬。如果exec可以在你的操作系統中「插入」,它可能是真正的危險。

  • exec-Personaly我只對不依賴用戶輸入或不可信數據的作業使用exec。
  • eval-使代碼難以理解,難以開發並使用它,經過一段時間後,您可能會遇到真正的問題以發現潛在的問題。它的接縫也很難進行測試...
  • 唯一的preg_match-的問題,我知道的是在這裏:http://blog.php-security.org/archives/76-Holes-in-most-preg_match-filters.html

問候, 湯姆

2

有沒有這樣的事情「危險」的功能。有

誰不處理用戶輸入正確
  • 馬虎系統管理員誰不固定在系統層面他們的服務器
    • 馬虎的程序員

    每個PHP函數可以是「危險的」,如果你沒有采取適當的安全措施。這包括「回聲」(XSS),「郵件」(主要注入),文件功能(例如,讀取文件(/ etc/passwd)等。

  • +1

    *每個* php函數都可能是危險的,真的嗎? is_int()是危險的嗎? – 2013-01-16 10:56:37