PHP是一種非常流行之網站指令碼語言,但是它本身所固有之安全性是非常薄弱。本文講述了PHP增強計劃(Hardened-PHP project)和新之Suhosi計劃,Suhosin提供了增強之PHP之安全配置。
PHP是帶有爭論地但又是最流行之一種網站指令碼語言。它之所以流行,是因為它低廉之價格,然而,這低廉之價格導致用PHP寫之網站應用程式越來越多 之同時也越來越多之展現出PHP本身在安全上之脆弱,這種安全特性顯示出PHP是極不可靠,不過同時對這個指令碼語言本身而言它又是非常靈活之,使用它就能 很容易之實現程式碼,不過這些程式碼都是臃腫之且不安全之,雖然是這樣它還是一直都擁有很多之使用者。你可以根據實際情況來假設,一次又一次,各種應用軟體都 體現了這種脆弱性:容易受到SQL注入、跨站指令碼、任意執行指令等等之攻擊。
因為象safe_mode和open_basedir這樣內建之PHP安全措施將被忽略,PHP增強計劃建立之PHP更具有安全性,同時也對PHP 進行校驗檢查。最初,這些是由增強之PHP補丁完成之,這些補丁需要修補並重新編譯PHP自身。最近,PHP增強計劃釋出了一個名為Suhosin之新工 程。
Sohosin包括有兩部分:第一部分是PHP之補丁,這個補丁強化了Zend引擎自身,以免可能產生緩衝溢位,也可以防止相關之弱點。第二部分是 Suhosin之擴充套件,這是一個PHP之獨立使用模組。這兩部分可以一起工作,或者是擴充套件部分單獨工作。
開發人員不希望為了達到安全性而總去維護他們自己之PHP安裝設定和他們當然更喜歡直接使用銷售商提供之Linux分佈系統上PHP,使用擴充套件模組 能提供更多PHP本身所不能具有之安全特點。
擴充套件模組很容易安裝;它也能透過PECL安裝,或者是下載後透過編譯安裝:
$ tar xvzf suhosin-0.9.17
$ cd suhosin-0.9.17
$ phpize
$ ./configure
$ make
$ sudo make install
為了使用suhosin,還需要增加/etc/php.ini,如下所示:
extension=suhosin.so
對於大部分人來說預設之配置選項已經足夠了。為了加強設定,可以在/etc/php.ini中增加相應之值。網站中詳細地介紹了有關之各種配置選 項,這些說明可以幫助你進行初始化配置。
使用Suhosin,你可以得到一些錯誤日誌,你能把這些日誌放到系統日誌中,也可以同時寫到其他任意之日誌檔案中去;它還可以為每一個虛擬主機創 建黑名單和白名單;可以過濾GET和POST請求、檔案上載和cookie。你還能傳送加密之會話和cookie,可以設定不能傳送之儲存上線等等。它不 像原始之PHP強化補丁,Suhosin是可以被像Zend Optimizer這樣之第三方擴充套件軟體所相容之。
下面是我寫的一個操作方法:
wget -c http://soft.vpser.net/web/suhosin/suhosin-patch-5.2.10-0.9.7.patch.gz
gzip -d ./suhosin-patch-5.2.10-0.9.7.patch.gz
cd php-5.2.10
patch -p 1 -i ../suhosin-patch-5.2.10-0.9.7.patch
編譯的時候
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-discard-path --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --with-mime-magic --enable-suhosin
把suhosin編譯進去就好了
PHP是一種非常流行之網站指令碼語言,但是它本身所固有之安全性是非常薄弱。本文講述了PHP增強計劃(Hardened-PHP project)和新之Suhosi計劃,Suhosin提供了增強之PHP之安全配置。
PHP是帶有爭論地但又是最流行之一種網站指令碼語言。它之所以流行,是因為它低廉之價格,然而,這低廉之價格導致用PHP寫之網站應用程式越來越多 之同時也越來越多之展現出PHP本身在安全上之脆弱,這種安全特性顯示出PHP是極不可靠,不過同時對這個指令碼語言本身而言它又是非常靈活之,使用它就能 很容易之實現程式碼,不過這些程式碼都是臃腫之且不安全之,雖然是這樣它還是一直都擁有很多之使用者。你可以根據實際情況來假設,一次又一次,各種應用軟體都 體現了這種脆弱性:容易受到SQL注入、跨站指令碼、任意執行指令等等之攻擊。
因為象safe_mode和open_basedir這樣內建之PHP安全措施將被忽略,PHP增強計劃建立之PHP更具有安全性,同時也對PHP 進行校驗檢查。最初,這些是由增強之PHP補丁完成之,這些補丁需要修補並重新編譯PHP自身。最近,PHP增強計劃釋出了一個名為Suhosin之新工 程。
Sohosin包括有兩部分:第一部分是PHP之補丁,這個補丁強化了Zend引擎自身,以免可能產生緩衝溢位,也可以防止相關之弱點。第二部分是 Suhosin之擴充套件,這是一個PHP之獨立使用模組。這兩部分可以一起工作,或者是擴充套件部分單獨工作。
開發人員不希望為了達到安全性而總去維護他們自己之PHP安裝設定和他們當然更喜歡直接使用銷售商提供之Linux分佈系統上PHP,使用擴充套件模組 能提供更多PHP本身所不能具有之安全特點。
擴充套件模組很容易安裝;它也能透過PECL安裝,或者是下載後透過編譯安裝:
$ tar xvzf suhosin-0.9.17
$ cd suhosin-0.9.17
$ phpize
$ ./configure
$ make
$ sudo make install
為了使用suhosin,還需要增加/etc/php.ini,如下所示:
extension=suhosin.so
對於大部分人來說預設之配置選項已經足夠了。為了加強設定,可以在/etc/php.ini中增加相應之值。網站中詳細地介紹了有關之各種配置選 項,這些說明可以幫助你進行初始化配置。
使用Suhosin,你可以得到一些錯誤日誌,你能把這些日誌放到系統日誌中,也可以同時寫到其他任意之日誌檔案中去;它還可以為每一個虛擬主機創 建黑名單和白名單;可以過濾GET和POST請求、檔案上載和cookie。你還能傳送加密之會話和cookie,可以設定不能傳送之儲存上線等等。它不 像原始之PHP強化補丁,Suhosin是可以被像Zend Optimizer這樣之第三方擴充套件軟體所相容之。
下面是我寫的一個操作方法:
wget -c http://soft.vpser.net/web/suhosin/suhosin-patch-5.2.10-0.9.7.patch.gz
gzip -d ./suhosin-patch-5.2.10-0.9.7.patch.gz
cd php-5.2.10
patch -p 1 -i ../suhosin-patch-5.2.10-0.9.7.patch
編譯的時候
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-discard-path --enable-magic-quotes --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --with-curlwrappers --enable-mbregex --enable-fastcgi --enable-fpm --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --with-mime-magic --enable-suhosin
把suhosin編譯進去就好了