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 相关文章推荐
一个ftp类(ini.php)
Oct 09 PHP
php jquery 多文件上传简单实例
Dec 23 PHP
PHP临时文件的安全性分析
Jul 04 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
两种设置php载入页面时编码的方法
Jul 29 PHP
PHP文件缓存内容保存格式实例分析
Aug 20 PHP
详解PHP对象的串行化与反串行化
Jan 24 PHP
9个比较实用的php代码片段
Mar 15 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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
模拟OICQ的实现思路和核心程序(一)
2006/10/09 PHP
使用字符串函数输出整数化的PHP版本号
2006/10/09 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
extjs ColumnChart设置不同的颜色实现代码
2013/05/17 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
jQuery仿gmail实现fixed布局的方法
2015/05/27 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
nodejs搭建本地服务器并访问文件的方法
2017/03/03 NodeJs
Vue iview-admin框架二级菜单改为三级菜单的方法
2018/07/03 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
让python json encode datetime类型
2010/12/28 Python
Python获取脚本所在目录的正确方法
2014/04/15 Python
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
Python基于smtplib协议实现发送邮件
2020/06/03 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
优秀班主任主要事迹材料
2014/12/16 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
Python如何利用正则表达式爬取网页信息及图片
2021/04/17 Python
python基础之匿名函数详解
2021/04/21 Python
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang