加固PHP環(huán)境(轉(zhuǎn))
發(fā)表時(shí)間:2024-02-18 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]作者:Albert PHP作為Apache的模塊運(yùn)行時(shí),Apache本身的安全起主導(dǎo)作用,因此如果配置正確的話,PHP應(yīng)該是一個(gè)十分安全的環(huán)境,但是如果PHP是以CGI方式來運(yùn)行的話,就沒有這么安全了。 本文中提到的操作,對Unix和Windows都適用。 一、作為Apache模塊來運(yùn)...
作者:Albert
PHP作為Apache的模塊運(yùn)行時(shí),Apache本身的安全起主導(dǎo)作用,因此如果配置正確的話,PHP應(yīng)該是一個(gè)十分安全的環(huán)境,但是如果PHP是以CGI方式來運(yùn)行的話,就沒有這么安全了。
本文中提到的操作,對Unix和Windows都適用。
一、作為Apache模塊來運(yùn)行
因?yàn)橐话阏f來,Apache會以“nobody”或者“www”來運(yùn)行,所以,PHP作為模塊是十分安全的。
如果PHP在虛擬主機(jī)環(huán)境下,可能會產(chǎn)生用戶能瀏覽其他用戶文件的危險(xiǎn)。一個(gè)簡單的腳本如下:
// 假定文檔根位于 /usr/local/websites/mydomain
$location = ../; // 到上一級目錄
$parent = dir($location);
// 顯示當(dāng)前目錄: /usr/local/websites
while($entry = $parent->read()) {
echo $entry .
;
}
$parent->close();
?>
這樣,只要修改$location,用戶就可以瀏覽虛擬主機(jī)上所有其他用戶的文件了。為了減少這樣的危險(xiǎn),我們需要看一下php.ini ,修改其中的safe_mode, doc_root和usr_dir 參數(shù),把用戶限制在他自己的虛擬主機(jī)環(huán)境下:
safe_mode = On
doc_root = /usr/local/apache/htdocs
user_dir = /home/albertxu/htdocs
二、作為CGI
把PHP以CGI方式運(yùn)行需要十分小心,可能會泄露你不想讓人知道的信息。
第一件事情要注意的就是一定要把執(zhí)行文件放到文檔根目錄以外的地方。例如/usr/local/bin,因此所有的CGI文件開頭必須帶有:
#!/usr/local/bin/php
防止用戶直接調(diào)用CGI的辦法是在Apache中強(qiáng)迫CGI重定向:
Action php-script /cgi-bin/php.cgi
AddHandler php-script .php
這會把下面的URL
http://example.com/mywebdir/test.htm
轉(zhuǎn)換為:
http://example.com/cgi-bin/php/mywebdir/test.htm
在以CGI方式編譯PHP時(shí),最好采用下面的選項(xiàng):
--enable-force-cgi-redirect
本文討論的是有關(guān)PHP的安全問題,詳細(xì)的安全信息可以參考PHP老家上手冊中關(guān)于安全的
http://www.php.net/manual/en/security.php
那一章。