Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

DZ5.5版的20090818这个补丁有问题(发生在cache.func.php中)含临时解决方法

[复制链接]
mfd 发表于 2009-8-23 22:34:02 | 显示全部楼层 |阅读模式
本帖最后由 mfd 于 2009-8-24 19:54 编辑

这是cache.func.php第90行的代码(原文件和补丁文件中都是这样的):
                                                $cachedata .= ($key == $cachename) ? getcachearray($cachename, $script) : getcachevars(array("_DCACHE['$key']" => $val));

这是20090818补丁增加的代码段:
                if(!preg_match("/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/", $key)) {
                        continue;
                }

问题很明显了:getcachevars(array("_DCACHE['$key']" => $val))是不可能有正确结果返回的。
因为正则中不包含'[]三个字符的匹配。

我不知道该次漏洞的具体表现,不敢贸然提供修正代码,希望官方尽快给予解决。

这个问题只在5.5版中存在,其他版本经过简单检查,没有发现。


******************************************
20090824 19:44补充:
鉴于官方还没有对该问题进行处置,我提供一个临时修改,以暂时应急使用。我不知道这次补丁针对的问题,也不保证这个修改能达到补丁预期的效果,用与不用大家自己斟酌,本人不对此承担任何责任。只针对5.5版,其他版本不一定适用。
将官方补丁中cache.func.php文件的这段:
                if(!preg_match("/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$/", $key)) {
                        continue;
                }
修改为:
                if(!preg_match("/^(_DCACHE\[')?[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*('\])?$/", $key)) {
                        continue;
                }
即可,其他按照官方补丁中提供的做。

评分

1

查看全部评分

bzzdzy 发表于 2009-8-23 22:47:49 | 显示全部楼层
 
回复

使用道具 举报

20080926 发表于 2009-8-23 23:03:55 | 显示全部楼层
千成别说是官方的问题。。。有些人要喷你的。。。。小心啊!!!!!!!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

 楼主| mfd 发表于 2009-8-23 23:08:31 | 显示全部楼层
哈哈,大家手上不知有多少份原来下载的补丁了,想喷我的人自喷吧
回复

使用道具 举报

20080926 发表于 2009-8-23 23:10:24 | 显示全部楼层
楼主,我支持你。。。我对你的佩服就像滔滔江水。。。。。
回复

使用道具 举报

 楼主| mfd 发表于 2009-8-24 13:41:49 | 显示全部楼层
顶起,希望官方尽快解决。
回复

使用道具 举报

选峰工作室 发表于 2009-8-24 14:43:19 | 显示全部楼层
本帖最后由 选峰工作室 于 2009-8-24 14:48 编辑

“因为正则中不包含'[]三个字符的匹配。”
在正则中[和] 所代表的含义是什么?
回复

使用道具 举报

huihui0103 发表于 2009-8-24 15:02:41 | 显示全部楼层
“因为正则中不包含'[]三个字符的匹配。”
在正则中[和] 所代表的含义是什么?
选峰工作室 发表于 2009-8-24 14:43


  建议楼主学习一下正则表达式的 符号含义 否则 我写个"."来匹配  你又说肯定不包括"."来匹配
回复

使用道具 举报

 楼主| mfd 发表于 2009-8-24 16:39:51 | 显示全部楼层
楼上两位测试一下那个正则是否支持匹配"_DCACHE['$key']"这种格式再发表意见吧。
回复

使用道具 举报

??? 发表于 2009-8-24 17:02:13 | 显示全部楼层
我也是5。5 更新以后
论坛便不时的在论坛最顶部出现以下代码:
Warning: Invalid argument supplied for foreach() in /home/xxxx/domains/xxx.com/public_html/bbs/forumdisplay.php on line 82

症状:1、显示上面的代码,在论坛最顶部(游客状态下看不到,但是版主以上都可以看到)
      2、论坛二级版面,不显示了,点了一级版面,进去以后看不到2级版面,不过通过下拉列表那里到是可以找到2级版面名称。(这个游客、管理人员都出现的一个问题)
      3、论坛等级不显示(游客状态下显示正常,但是版主以上登陆就显示不正常)



更新缓冲以后,可以消失一段时间,不过等一会就又会出现.
求助,该如何解决这样的情况
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-15 01:29 , Processed in 0.138141 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表