discuz3.4,关于安装dev8133插件(购买帖子内容),在论坛对用户组开启评分功能后,用户一点击评分,确定提交后,短暂的将dev8133标签内隐藏的内容暴露了。
漏洞修补方案一:后端措施
在source/module/forum/forum_misc.php文件中,$post = C::t('forum_post')->fetch('tid:'.$_G['tid'], $_GET['pid']);//这一步调用大C的静态方法t()从表forum_post中根据tid和pid共同查询出当前要评分的帖子主体内容
对此处查询出来的$post数据直接后端进行匹配删除,匹配到[dev8133开始的字符串直接将其删除,然后前端就根本没有数据可言。
所以说,一般漏洞修补改后端代码安全性最高。唯一利弊就是加重后端服务器的运算能力。
漏洞修补方案二:前端手段
在common.js中,对从后端ajax请求后得到的数据,回来进行判断,如果包含[dev8133字符串,则在if语句里面执行location.reload();刷新当前页面。
discuz它的做法是,先删掉本楼的帖子所有内容,然后用innerhtml重新绘制,没有刷新当前整个页面,这导致[dev8133标签放在“”这个里面当成字符串处理了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!