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 相关文章推荐
提升PHP性能的21种方法介绍
Jun 25 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
php获取根域名方法汇总
Oct 28 PHP
PHP面向对象之后期静态绑定功能介绍
May 18 PHP
CodeIgniter配置之SESSION用法实例分析
Jan 19 PHP
linux下为php添加iconv模块的方法
Feb 28 PHP
PHP Laravel 上传图片、文件等类封装
Aug 16 PHP
laravel5 Eloquent 实现事务方式
Oct 21 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
Feb 10 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
Jul 08 PHP
php swoft框架实例用法
Dec 22 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
ASP知识讲座四
2006/10/09 PHP
PHP无刷新上传文件实现代码
2011/09/19 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
PHP基于面向对象实现的留言本功能实例
2018/04/04 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
jquery密码强度校验
2015/12/02 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
jQuery实现简单的下拉菜单导航功能示例
2017/12/07 jQuery
vue配置请求本地json数据的方法
2018/04/11 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
2019/03/07 jQuery
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python实现代理服务功能实例
2013/11/15 Python
详解Python2.x中对Unicode编码的使用
2015/04/03 Python
Python里disconnect UDP套接字的方法
2015/04/23 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
导游的职业规划书范文
2013/12/27 职场文书
物流专业大学生职业生涯规划书范文
2014/01/15 职场文书
开业庆典答谢词
2014/01/18 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书