880 Star 3.6K Fork 1.5K

Discuz / DiscuzX

 / 详情

后台禁止用户时增加对个人空间最近访客等的清空操作

已完成
创建于  
2021-07-12 08:50

目前有利用空间最近访客在禁言等操作时不清空的漏洞,将名字显示在他人的个人空间中。同时还存在多处不清空的漏洞。
主要涉及以下代码中的表及记录(个别漏洞前期已提交修补,但大部分依旧存在),希望能优化解决方案:
目前代码修改方案:
1、upload/source/admincp/admincp_members.php

<li style="width: 8%;"><input type="checkbox" value="profile" name="clear[profile]" class="checkbox">&nbsp;$lang[members_ban_delprofile]</li>

下增加

<li style="width: 8%;"><input type="checkbox" value="visitorall" name="clear[visitorall]" class="checkbox">&nbsp;$lang[members_ban_delvisitorall]</li>
if(in_array('profile', $_GET['clear'])) {

上增加

			//start by xingke
			if(in_array('visitorall', $_GET['clear'])) {
				DB::delete('home_visitor', "uid = ".$member['uid']." OR vuid = ".$member['uid']);
				DB::delete('home_friend_request', "uid = ".$member['uid']." OR fuid = ".$member['uid']);
				DB::delete('home_follow', "uid = ".$member['uid']." OR followuid = ".$member['uid']);
				DB::delete('home_feed', "uid = ".$member['uid']);
				DB::delete('home_notification', "authorid = ".$member['uid']." OR from_id = ".$member['uid']);
				DB::delete('home_poke', "uid = ".$member['uid']." OR fromuid = ".$member['uid']);
				DB::delete('home_pokearchive', "uid = ".$member['uid']." OR fromuid = ".$member['uid']);
				DB::delete('ucenter_pm_lists', "authorid = ".$member['uid']);
				DB::delete('ucenter_pm_members', "uid = ".$member['uid']);
				DB::delete('ucenter_pm_messages_0', "authorid = ".$member['uid']);
				DB::delete('ucenter_pm_messages_1', "authorid = ".$member['uid']);
				DB::delete('ucenter_pm_messages_2', "authorid = ".$member['uid']);
				DB::delete('ucenter_pm_messages_3', "authorid = ".$member['uid']);
				DB::delete('ucenter_pm_messages_4', "authorid = ".$member['uid']);
				DB::delete('ucenter_pm_messages_5', "authorid = ".$member['uid']);
				DB::delete('ucenter_pm_messages_6', "authorid = ".$member['uid']);
				DB::delete('ucenter_pm_messages_7', "authorid = ".$member['uid']);
				DB::delete('ucenter_pm_messages_8', "authorid = ".$member['uid']);
				DB::delete('ucenter_pm_messages_9', "authorid = ".$member['uid']);
				DB::delete('home_friend', "uid = ".$member['uid']." OR fuid = ".$member['uid']);
				DB::delete('home_notification', "uid = ".$member['uid']);
				DB::delete('forum_promotion', "uid = ".$member['uid']);
			}
            //end by xingke

2、 upload/source/language/lang_admincp.php

'members_ban_delprofile' => '用户资料',

下增加

'members_ban_delvisitorall' => '最近访客等',

以上方案请优化后提交更新。

评论 (7)

水逸寒风 创建了任务
水逸寒风 关联仓库设置为Discuz/DiscuzX
水逸寒风 修改了描述
展开全部操作日志

建议您使用需求模板,不过也很感谢您的反馈,后续做一下。

删号删除私信得考虑一下,别的感觉还好

谢谢老周的回复和关注。刚刚对发布的信息做了修改以方便阅读,以后采用需求模板。

水逸寒风 修改了描述

测试了,应该没有什么问题

是不是可以考虑把消息也删除了啊?

回头再想想 晚点回复您

老周部落 通过Discuz/DiscuzX Pull Request !1214任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
1773794 laozhoubuluo 1594507411
PHP
1
https://gitee.com/Discuz/DiscuzX.git
git@gitee.com:Discuz/DiscuzX.git
Discuz
DiscuzX
DiscuzX

搜索帮助