通過對PHP一些伺服器端特性的配置加強PHP的安全

來源:互聯網
上載者:User

前面象Shaun Clowes和rfp等都比較具體的介紹了php、cgi程式在編程過程中碰到的問題,以及如何通過應用程式漏洞突破系統,這篇文章我們來通過對php的一些伺服器端特性來進行配置加強php的安全。寫cgi指令碼的時候我們的確一定注重各種安全問題,對使用者輸入進行嚴格的過濾,但是常在岸邊走哪有不濕鞋,吃燒餅哪有不掉芝麻,人有失蹄馬有失手,連聞名的phpnuke、phpMyAdmin等程式都出現過很嚴重的問題,更何況象我等小混混寫的指令碼。所以現在我們假設php指令碼已經出現嚴重問題,比如象前一陣子 phpnuke的可以上傳php指令碼的大問題了,我們如何通過對伺服器的配置使指令碼出現如此問題也不能突破系統。

1、編譯的時候注重補上已知的漏洞

從4.0.5開始,php的mail函數加入了第五個參數,但它沒有好好過濾,使得php應用程式能突破safe_mode的限制而去執行命令。所以使用4.0.5和4.0.6的時候在編譯前我們需要修改php源碼包裡ext/standard/mail.c檔案,禁止mail函數的第五參數或過濾shell字元。在mail.c檔案的第152行,也就是下面這行:

if (extra_cmd != NULL) {

後面加上extra_cmd=NULL;或extra_cmd = php_escape_shell_cmd(extra_cmd);然後編譯php那麼我們就修補了這個漏洞。


2、修改php.ini設定檔

以php發行版的php.ini-dist為藍本進行修改。

1)Error handling and logging

在Error handling and logging部分可以做一些設定。先找到:

display_errors = On

php預設是開啟錯誤資訊顯示的,我們把它改為:

display_errors = Off

關閉錯誤顯示後,php函數執行錯誤的資訊將不會再顯示給使用者,這樣能在一定程度上防止攻擊者從錯誤資訊得知指令碼的物理位置,以及一些其它有用的資訊,起碼給攻擊者的黑箱檢測造成一定的障礙。這些錯誤資訊可能對我們自己有用,可以讓它寫到指定檔案中去,那麼修改以下:

log_errors = Off

改為:

log_errors = On

以及指定檔案,找到下面這行:

;error_log = filename

去掉前面的;注釋,把filename改為指定檔案,如/usr/local/apache/logs/php_error.log

error_log = /usr/local/apache/logs/php_error.log

這樣所有的錯誤都會寫到php_error.log檔案裡。

2)Safe Mode

php的safe_mode功能對很多函數進行了限制或禁用了,能在很大程度解決php的安全問題。在Safe Mode部分找到:

safe_mode = Off

改為:

safe_mode = On

這樣就開啟了safe_mode功能。象一些能執行系統命令的函數shell_exec()和``被禁止,其它的一些執行函數如:exec(), system(), passthru(), popen()將被限制只能執行safe_mode_exec_dir指定目錄下的程式。假如你實在是要執行一些命令或程式,找到以下:

safe_mode_exec_dir =

指定要執行的程式的路徑,如:

safe_mode_exec_dir = /usr/local/php/exec

然後把要用的程式拷到/usr/local/php/exec目錄下,這樣,象上面的被限制的函數還能執行該目錄裡的程式。

關於安全模式下受限函數的具體資訊請查看php主站的說明:

http://www.php.net/manual/en/features.safe-mode.php

3)disable_functions

假如你對一些函數的危害性不太清楚,而且也沒有使用,索性把這些函數禁止了。找到下面這行:

disable_functions =

在”=“後面加上要禁止的函數,多個函數用”,“隔開。


3、修改httpd.conf

假如你只答應你的php指令碼程式在web目錄裡操作,還可以修改httpd.conf檔案限制php的操作路徑。比如你的web目錄是/usr/local/apache/htdocs,那麼在httpd.conf裡加上這麼幾行:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.