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這樣的第三方擴充軟體相容的。