首页
Portal
业界资讯
社区
BBS
我的家园
Space
个人空间
导读
Guide
登录
/
注册
用户名
Email
自动登录
找回密码
密码
登录
注册
搜索
搜索
本版
帖子
用户
本版
帖子
用户
帖子
好友
道具
勋章
收藏
任务
淘帖
门户
导读
设置
我的收藏
退出
腾讯QQ
微信登录
首页
›
≡≡网络技术≡≡
›
PHP语言
›
Veno-File-Manager (VFM4)云盘让登录用户可显示公共文件 ...
返回列表
CMS
Veno-File-Manager (VFM4)云盘让登录用户可显示公共文件夹方法
[ 复制链接 ]
灰儿
2022-8-29 17:18:47
Veno-File-Manager (VFM4)云盘让登录用户只显示用户私有文件夹(有读写权限)和公共文件夹方法
需实现功能:
1.用户登录后,显示用户私有文件夹和公共文件夹;
2.游客只能查看并下载公共文件夹内容,无权查看用户私有文件夹。
与解决此漏洞相关文件:
根目录/vfm-admin/class/class.dirs.php //检查当前用户目录权限类(重要)
根目录/vfm-admin/ajax/get-dirs.php //获取用户文件夹并列表显示
根目录/vfm-admin/template/list-folders.php //前端文件夹列表显示UI模板
根目录/vfm-admin/class/class.location.php //检查当前用户位置权限的类
根目录/vfm-admin/class/class.gatekeeper.php //验证当前网关(角色、用户、登录状态)权限的类
解决思路:
打开 根目录/vfm-admin/class/class.dirs.php 文件,查找如下代码:
$userpatharray = $gateKeeper->getUserInfo('dir') !== null ? json_decode($gateKeeper->getUserInfo('dir'), true) : false;
复制代码
此代码修改为:
$userpatharray = $gateKeeper->getUserInfo('dir') !== null ? json_decode($gateKeeper->getUserInfo('dir'), true) : false;
$public_dirs = $setUp->getConfig('public_dirs');
@$userpatharray = array_merge($userpatharray,$public_dirs);
复制代码
修改过后,发现用户访问公共目录(
public_dirs
)时,不显示子目录,但是手工输入子目录地址可以进入,解决方法如下:
再查找此文件中获取用户分配的文件夹的遍历语句,在此段语句增加一个 && !$this->location->readAllowed($relative) 判断条件,修改后如下:
if (is_array($content)) {
foreach ($content as $item) {
if (is_dir($item)) {
$mbitem = Utils::mbPathinfo($item);
$item_basename = $mbitem['basename'];
// get only users' assigned folders if any
if ($userpatharray
&& !in_array($item_basename, $userpatharray)
&& !$this->location->editAllowed($relative)
&& !$this->location->readAllowed($relative)) {
continue;
}
// Skip /vfm-admin/ if the main uploads dir is the root
if (!$hidefiles || ($hidefiles && !in_array($item_basename, $hidden_dirs))) {
$this->dirs[] = new Dir($item_basename, $this->location, $relative);
}
}
}
}
复制代码
另外根目录/vfm-admin/ajax/get-dirs.php 文件与此功能修改相关,但无需修改,与用户文件夹相关代码如下:
$thedirs = new Dirs($location, $fullpath, '../../');
$getdirs = $thedirs->dirs;
复制代码
获取 $getdirs 数组中的数据,并且显示在前端的代码如下:
$data = array();
$dirname = $dir->getName();
$normalized = Utils::normalizeName($dirname);
$dirpath = $fullpath.$dirname;
$dirtime = $setUp->formatModTime($dir->getModTime());
$nameencoded = $dir->getNameEncoded();
$locationDir = $location->getDir(false, true, false, 0);
$del = $locationDir.$nameencoded;
$delquery = base64_encode($del);
$cash = md5($delquery.$alt.$altone);
$thislink = $location->makeLink(false, null, $del);
$thisdel = $location->makeLink(false, $del, $locationDir);
$thisdir = urldecode($locationDir);
$dash = md5($alt.base64_encode($thisdir.$normalized).$altone);
if ($setUp->getConfig("show_folder_counter") === true) {
$quanti = $dir->countContents('../../'.$location->getDir(false, false, false, 0).$dirname);
$quantifiles = $quanti['files'];
$quantedir = $quanti['folders'];
$data['counter'] = '<a href="'.$thislink.'"><span class="badge rounded-pill bg-light"><i class="bi bi-folder"></i> '.$quantedir.'</span>
<span class="badge rounded-pill bg-light"><i class="bi bi-files"></i> '.$quantifiles.'</span></a>';
} else {
$data['counter'] = '';
}
复制代码
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
回复
(1)
灰儿
楼主
2022-8-29 17:19:24
http://www.admin365.cn/thread-46373-1-1.html
Veno-File-Manager (VFM4)云盘,添加仅限游客和用户访问公共目录
http://www.admin365.cn/thread-46386-1-1.html
Veno-File-Manager (VFM4)云盘让登录用户可显示公共文件夹方法
http://www.admin365.cn/thread-46442-1-1.html
Veno-File-Manager (VFM4)云盘,增加用户只读游客无权限公共目录
回复
支持
反对
使用道具
举报
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
回复
本版积分规则
回帖后跳转到最后一页
灰儿
管理员
9840篇
主题总数
7
总热度
提问
+关注
产品动态
2024-05-14
泛微E10(e-cology)文件存储位置与打开方式
2024-05-14
神州数码云科(DCN) DCME-320路由器关闭互联网22、23、53端口方法
2024-05-13
关于webapp与WEB-INF的记录
2024-05-13
泛微(weaver)e-cology_V10公文管理,上传套红模板教程
2024-05-13
防火墙指标:吞吐量、时延、新建连接速率、并发连接数
2024-05-13
核心路由器十项性能指标
2024-05-11
神州数码(DCN) DCME-320 路由器(linux软路由)常用命令详解
2024-05-10
泛微(weaver)e-cology_V10公文管理模块套红模板制作教程
热点推荐
1
泛微E10(e-cology)文件存储位置与打开方式
2
神州数码云科(DCN) DCME-320路由器关闭互联网22、23、53端口方法
3
关于webapp与WEB-INF的记录
4
泛微(weaver)e-cology_V10公文管理,上传套红模板教程
5
防火墙指标:吞吐量、时延、新建连接速率、并发连接数
6
核心路由器十项性能指标
7
神州数码(DCN) DCME-320 路由器(linux软路由)常用命令详解
8
泛微(weaver)e-cology_V10公文管理模块套红模板制作教程
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
产品动态
2024-05-14
泛微E10(e-cology)文件存储位置与打开方式
2024-05-14
神州数码云科(DCN) DCME-320路由器关闭互联网22、23、53端口方法
2024-05-13
关于webapp与WEB-INF的记录
2024-05-13
泛微(weaver)e-cology_V10公文管理,上传套红模板教程
2024-05-13
防火墙指标:吞吐量、时延、新建连接速率、并发连接数
2024-05-13
核心路由器十项性能指标
2024-05-11
神州数码(DCN) DCME-320 路由器(linux软路由)常用命令详解
2024-05-10
泛微(weaver)e-cology_V10公文管理模块套红模板制作教程
热点推荐
1
泛微E10(e-cology)文件存储位置与打开方式
2
神州数码云科(DCN) DCME-320路由器关闭互联网22、23、53端口方法
3
关于webapp与WEB-INF的记录
4
泛微(weaver)e-cology_V10公文管理,上传套红模板教程
5
防火墙指标:吞吐量、时延、新建连接速率、并发连接数
6
核心路由器十项性能指标
7
神州数码(DCN) DCME-320 路由器(linux软路由)常用命令详解
8
泛微(weaver)e-cology_V10公文管理模块套红模板制作教程
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。