歡迎光臨, 訪客. 請先 登入註冊一個帳號.
十一月 23, 2024, 12:09:55 下午
19595 文章 在 3865 主題 由 4579 會員
最新註冊會員: aa123aa1
  列出文章
頁: [1]
1  支援 / 安裝與設定 / 在PHP的safe_mode下安装plog问题多多 於: 七月 09, 2005, 01:54:37 下午
小结及提问

小结一下:
  我以前一直不敢把safe_mode  off,主要是因为有二个怕:
一怕被其它用户用fopen()打开其它用户的文件。这个问题现在可以通过在PHP.INI中设置open_basedir=. 得到解决。
二怕Linux上的用户在PHP程序中通过``执行script脚本。这个问题现在可以通过在PHP.INI中设置disable_functions = shell_exec, system, exec, passthru, show_source得到解决。


提问:
  那么我就又不太明白了,如果把safe_mode设为on与设置open_basedir=.和disable_functions=shell_exec, system, exec, passthru, show_source还有什么不同呢,safe_mode还有其它什么安全性吗,我看safe_mode的主要功能就是上面提到的二个啊。
2  支援 / 安裝與設定 / 在PHP的safe_mode下安装plog问题多多 於: 七月 06, 2005, 08:54:50 下午
感谢neoli的回复,但我认为safe_mode与open_basedir还是有很大区别的。
不错,当open_basedir=. 时。确实用fopen()无法打开自己帐号以外的文件了。但在php程序中,``命令还是可以被使用,所以我通过以下程序
<?
echo "<pre>\n";
echo `cat /etc/passwd`;
echo "</pre>\n";
?>

还是可以很方便的得到系统中所有用户的帐号,如果改成`cat $_GET[file]`还是可以看到别人帐号中的文件内容的。

不设置safe_mode 的LINUX系统管理员,不知是如何处理这种安全问题的?
3  支援 / 安裝與設定 / 在PHP的safe_mode下安装plog问题多多 於: 六月 27, 2005, 06:53:48 下午
我就是网站的系统管理员啊,如果我开放了safe_mode,则我可以放这么一个小程序上去就能看到目录中的文件名
<?
echo "<pre>\n";
echo `ls $dir`;
echo "</pre>\n";
?>

我再放这个程序上去,不是就可以看到其它帐号中的程序源代码了吗?
<html>
<head><title>显示HTML源代码</title></head>
<body>


<?php
$fp=fopen("$file","r") or die("打开文件$file 错");
while(!feof($fp)){
    $lines[]=fgets($fp,1024);

}
echo "共有".count($lines)."行<br><br>";
for($i=0;$i<count($lines);$i++){
    $lines[$i]=ereg_replace("<","&lt;",$lines[$i]);
    $lines[$i]=ereg_replace(">","&gt;",$lines[$i]);
    $lines[$i]=ereg_replace("\"","&quot;",$lines[$i]);
    echo $i.".  ".$lines[$i]."<br>";
}

fclose($fp);
?>
</body>
</html>
頁: [1]