加固PHP环境_PHP教程
程序员文章站
2022-05-19 11:05:05
...
PHP作为Apache的模块运行时,Apache本身的安全起主导作用,因此如果配置正确的话,PHP应该是一个十分安全的环境,但是如果PHP是以CGI方式来运行的话,就没有这么安全了。
本文中提到的操作,对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
本文中提到的操作,对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
上一篇: MySql隐含的列说明改变_PHP教程
推荐阅读
-
[视频教程]PHP_LAMP兄弟连之PHP 7.7.继承性
-
创建XMLHttpRequest对象的方法_PHP教程
-
PHP 设计模式系列之 specification规格模式,specification模式_PHP教程
-
关于在 win2000 下安装 mysql 的一些问题!_PHP教程
-
高手传经 学习PHP重在坚持_PHP教程
-
将 SimpleXMLElement 对象转换为 PHP 数组_PHP教程
-
PHP 转义正则表达式字符: preg_quote_PHP教程
-
分享经常用到的21个PHP函数代码段(下)(1)_PHP教程
-
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置_PHP教程
-
php+xml编程之SimpleXML的应用实例,simplexml应用实例_PHP教程