PHP 配置open_basedir 让各虚拟站点独立运行

 更新时间:2009年11月12日 21:55:12   作者:  
好几年前,我在抱怨Apache运行PHP的安全性不行,只要一个站点被人拿下,服务器上的其他站点就会跟着遭殃。
当时觉得这跟IIS相比,实在太差了,因为在IIS里,可以在安全性里设置一个站点甚至一个目录访问时使用的匿名账号,只要各个站点使用的账号不一样,站点间的安全就不会互相影响。这几天才发现,原来当时的想法是错的,在Apache下,也可以配置PHP来实现各站点间的相互独立运行,虽然不能详细控制以某个用户运行某个站点,但至少不会再出现整个服务器被拿下的局面。

通过配置PHP的open_basedir即可以实现该控制,这个配置在IIS下也有用,但这里只讲Apache下的配置。

open_basedir可将用户访问文件的活动范围限制在指定的区域,通常是其家目录的路径,也
可用符号"."来代表当前目录。open_basedir也可以同时设置多个目录, 在Windows中用分号分隔目录,在任何其它系统中用
冒号分隔目录。当其作用于Apache模块时,父目录中的open_basedir路径自动被继承。以下以Linux系统下的配置为例

方法一:在php.ini里配置
open_basedir = .:/tmp/

方法二:在Apache配置的VirtualHost里设置
php_admin_value open_basedir .:/tmp/

方法三:在Apache配置的Direcotry里设置
php_admin_value open_basedir .:/tmp/

关于三个配置方法的解释:
a、方法二的优先级高于方法一,也就是说方法二会覆盖方法一;方法三的优先级高于方法二,也就是说方法三会覆盖方法二;
b、配置目录里加了“/tmp/”是因为php默认的临时文件(如上传的文件、session等)会放在该目录,所以一般需要添加该目录,否则部分功能将无法使用;
c、配置目录里加了“.”是指运行php文件的当前目录,这样做可以避免每个站点一个一个设置;
d、如果站点还使用了站点目录外的文件,需要单独在对应VirtualHost设置该目录;

设置完成后,记得找个PHP网马(如:phpspy)来玩一玩,测试一下有没有问题,不出意外,权限应该是控制得相当好的。
大家还有什么PHP安全配置的经验,欢迎分享交流。

相关文章

  • 关于zend studio 出现乱码问题的总结

    关于zend studio 出现乱码问题的总结

    本篇文章是对zend studio出现乱码问题进行了详细的总结介绍,需要的朋友参考下
    2013-06-06
  • PHP简单获取随机数的常用方法小结

    PHP简单获取随机数的常用方法小结

    这篇文章主要介绍了PHP简单获取随机数的常用方法,结合实例形式分析了php实现指定范围随机数与指定字符序列随机数的简单实现技巧,需要的朋友可以参考下
    2017-06-06
  • 解决cPanel无法安装php5.2.17

    解决cPanel无法安装php5.2.17

    做国外生意的朋友换购一台服务器,需要重新安装cPanel,花了几十美元买来的cPanel不支持5.2.17,最低版本支持到5.3.27,最高5.5,这让人非常恼火,上官网找解决方法,如下为安装php5.2.17的方法。
    2014-06-06
  • PHP面向对象继承用法详解(优化与减少代码重复)

    PHP面向对象继承用法详解(优化与减少代码重复)

    这篇文章主要介绍了PHP面向对象继承用法,结合实例形式分析了php面向对象程序设计中继承的使用方法及代码优化处理与减少代码重复的相关操作技巧,需要的朋友可以参考下
    2016-12-12
  • php5.3/5.4/5.5/5.6/7常见新增特性汇总整理

    php5.3/5.4/5.5/5.6/7常见新增特性汇总整理

    这篇文章主要介绍了php5.3/5.4/5.5/5.6/7常见新增特性,整理总结了php5.3/5.4/5.5/5.6/7各种常见的新增特性,包括各种语法、关键字、函数、扩展等,需要的朋友可以参考下
    2020-02-02
  • php 数组的指针操作实现代码

    php 数组的指针操作实现代码

    php 数组的指针操作实现代码,数组在php编写中是非常重要的操作,学习php的朋友可以参考下。
    2011-02-02
  • php多线程并发实现方法

    php多线程并发实现方法

    这篇文章主要介绍了php多线程并发实现方法,结合实例形式分析了php模拟多线程并发的相关操作技巧,以及在Linux平台借助shell实现多线程并发的操作方法,需要的朋友可以参考下
    2016-09-09
  • php自动跳转中英文页面

    php自动跳转中英文页面

    当来访者浏览器语言是中文就进入中文版面 国外的用户默认浏览器不是中文的就跳转英文页面
    2008-07-07
  • php实现通过stomp协议连接ActiveMQ操作示例

    php实现通过stomp协议连接ActiveMQ操作示例

    这篇文章主要介绍了php实现通过stomp协议连接ActiveMQ操作,结合实例形式分析了stomp扩展安装及使用stomp扩展连接ActiveMQ具体操作技巧,需要的朋友可以参考下
    2020-02-02
  • php使用get_class_methods()函数获取分类的方法

    php使用get_class_methods()函数获取分类的方法

    这篇文章主要介绍了php使用get_class_methods()函数获取分类的方法,结合实例形式分析了get_class_methods()函数获取类中成员方法的使用技巧,需要的朋友可以参考下
    2016-07-07

最新评论