魅力博客

魅力Linux|魅力空间|魅力博客|学习Linux|ubuntu日记|电脑教程|手机软件

在window中phpStudy的PHP环境中限制每个站点的目录范围,防止跨站目录浏览



在window中phpStudy的PHP环境中限制每个站点的目录范围,防止跨站目录浏览。

我在windows xp下用phpstudy运行了一个网站。一早就知道php中能跨站目录浏览,能访问网站所在的盘符的所有目录文件,能跳出网站安装目录随意浏览其他文件。因为phpstudy是默认能访问所有网站所在盘符的目录与文件的,对此需要修改一下php.ini中的参数。这个相对于用windows的服务器环境来说尤为严重。为了保证网站所在盘符的目录文件安全。

在网络上寻找了很久,都没有相对应于phpstudy的这个跨站目录文件浏览的对应设置,参考了"nginx+php 限制每个站点的目录范围,防止跨站"这样的设置。

以下操作:

phpStudy软件界面中打开:>其他选项菜单>打开配置文件>php.ini>

phpstudy1.png

修改第299行的“;open_basedir = ”为:“open_basedir = D:\phpStudy\WWW;

注意:

将前面的分号去掉,等号后面加上你的phpstudy的安装路径下的网站根目录绝对路径即可

phpstudy2.png

最后回到phpstudy软件,点击重启。至此,在windows xp 下的phpstudy设置防跨站目录浏览设置完成。

其实这个是个很简单的问题,只不过对于我这样的菜鸟级别的人,就有点要记录的必要了。呵呵。


---------------------最后附上nginx+php下的设置------------------

1.在php脚本中可以访问服务器上任何目录。

2.php.ini中的open_basedir参数,设置这个参数即可限定php脚本的访问范围。

3.我们针对每个站点,需要php能够访问该站点所在目录以及/tmp/临时目录。

  open_basedir=/home/wwwroot/:/tmp/

  这样总行了,将php限制在所有站点的父目录,这样至少阻止了php访问服务器上web目录以外的目录。

  到了这里,还是有隐患的,只要wwwroot下任意一个站点被拿到webshell,那么其他站点将不能幸免.

4.真正解决方法:

    那就是在nginx 每个server下,加上

    fastcgi_param  PHP_VALUE  "open_basedir=$document_root:/tmp/"; 

    重启nginx,成功!你也可以把这行代码放到fastcgi.conf里,前提是你得在server{}中包含它。

    至此,nginx + php5.3 是没有问题了。

    然后我又在另外一台vps上,环境是php5.2 发现此方法不生效。




返回顶部

发表评论:

Powered By Z-BlogPHP 1.7.3


知识共享许可协议
本作品采用知识共享署名 3.0 中国大陆许可协议进行许可。
网站备案号粤ICP备15104741号-1