[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 安全技術 > 程序 > 正文
加固 PHP 環境
本文出自:http://www.freelamp.com 作者: 徐永久(albertxu@bigfoot.com) (2001-08-28 10:00:00)
PHP 作為Apache 的模塊運行時,Apache 本身的安全起主導作用,因此如果配置正確的話,PHP 應該是一個
十分安全的環境,但是如果 PHP 是以CGI方式來運行的話I,就沒有這安全了。
本文中提到的操作,對 Unix 和 Windows 都適用。

一、作為 Apache 模塊來運行

因為一般說來,Apache 會以 "nobody" 或者 "www" 來運行,所以,PHP 作為模塊是十分安全的。

如果 PHP 在虛擬主機環境下,可能會產生用戶能瀏覽其他用戶文件的危險。一個簡
單的腳本如下:


// 假定文檔根位 /usr/local/websites/mydomain

$location = '../'; // 到上一級目錄
$parent = dir($location);

// 顯示當前目錄: /usr/local/websites
while($entry = $parent->read()) {
echo $entry . '
';
}
$parent->close();
?>

這樣,只要修改$location,用戶就可以瀏覽虛擬主機上所有其他用戶的文件了。為了減少這樣的危險,我們需
要看一下 php.ini ,修改其中的 safe_mode, doc_root和 usr_dir 參數,把用戶限制在他自己的虛擬主機環境下:

safe_mode = On
doc_root = /usr/local/apache/htdocs
user_dir = /home/albertxu/htdocs

二、作為 CGI

把 PHP 以 CGI 方式運行需要十分小心,可能會泄露你不想讓人知道的信息。

第一件事情要注意的就是一定要把執行文件放到文檔根目錄以外的地方。例如 /usr/local/bin,因此所有的
 CGI 文件開頭必須帶有:

#!/usr/local/bin/php

防止用戶直接調用 CGI 的辦法是在 Apache 中強迫 CGI 重定向:

Action php-script /cgi-bin/php.cgi
AddHandler php-script .php


這會把下面的 URL 

http;//example.com/mywebdir/test.htm
轉換為:

http://example.com/cgi-bin/php/mywebdir/test.htm

在以 CGI 方式編譯 PHP 時,最好採用下面的選項:

--enable-force-cgi-redirect


本文討論的是有關 PHP 的安全問題,詳細的安全信息可以參考 PHP 老家上手冊中關安全的

http://www.php.net/manual/en/security.php

那一章。
(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
 

★  樊強制作 歡迎分享  ★