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


Posted in PHP onNovember 12, 2009

当时觉得这跟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安全配置的经验,欢迎分享交流。

PHP 相关文章推荐
一个简洁的多级别论坛
Oct 09 PHP
php 5.3.5安装memcache注意事项小结
Apr 12 PHP
基于PHP静态类的原罪详解
May 06 PHP
如何使用PHP计算上一个月的今天
May 23 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
淘宝ip地址查询类分享(利用淘宝ip库)
Jan 07 PHP
微信支付开发订单查询实例
Jul 12 PHP
Laravel学习教程之本地化模块
Aug 18 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
Laravel学习教程之View模块详解
Sep 18 PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 PHP
php $_SERVER当前完整url的写法
Nov 12 #PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 #PHP
计算一段日期内的周末天数的php代码(星期六,星期日总和)
Nov 12 #PHP
php 分库分表hash算法
Nov 12 #PHP
PHP 面向对象实现代码
Nov 11 #PHP
超级简单的php+mysql留言本源码
Nov 11 #PHP
PHP 远程关机实现代码
Nov 10 #PHP
You might like
分页显示Oracle数据库记录的类之一
2006/10/09 PHP
快速开发一个PHP扩展图文教程
2008/12/12 PHP
php漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
js前台判断开始时间是否小于结束时间
2012/02/23 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
javascript实现数组中的内容随机输出
2015/08/11 Javascript
jQuery实现进度条效果代码
2015/12/17 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
微信小程序实现带放大效果的轮播图
2020/05/26 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
在Django的上下文中设置变量的方法
2015/07/20 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
利用Python将文本中的中英文分离方法
2018/10/31 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
如何用Python 加密文件
2020/09/10 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
接口的多继承会带来哪些问题
2015/08/17 面试题
2013年大学生的自我鉴定
2013/10/24 职场文书
文化与传播毕业生求职信
2014/03/09 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
房屋买卖协议样本
2014/11/16 职场文书
电话营销开场白
2015/05/29 职场文书
导游词之杭州西湖
2019/09/19 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python
pytorch实现ResNet结构的实例代码
2021/05/17 Python