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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

【解决方法】X2.5 4月13日版本升级后ajax弹出框单击x无法关闭

[复制链接]
翎Ling 发表于 2012-4-15 13:31:58 | 显示全部楼层 |阅读模式
本帖最后由 翎Ling 于 2012-4-16 00:03 编辑

问题出现在4.13升级之后,论坛ajax弹出的框框无法隐藏,但是双击弹出框的边缘还是能够关闭.
看了下代码,发现升级后的hideWindow();函数获得不到需要隐藏的div 的id了..
         升级前:可以获得id
  
         升级后:无法获得id

找到生成弹出框的js:

发现k(也就是id)可以弹出,但是页面中无法获得.     

  手工写入id:
  
发现页面中可以获得手工写入的id:"ling"

再次手工写入id:
  
发现页面又无法获得id了.

这样问题就锁定在:带'_'的参数被dz过滤了

找到源文件:source\class\discuz\discuz_application.php的282行:

发现参数用ctype_alpha过滤了,只允许字母

查看下x2.5正式版 3.14号未升级之前的源文件:


升级后增加过滤了" 数字 和 下划线"...这导致含有这2中字符的参数会被过滤掉

目前解决办法:照着老版的改回去- -
将source\class\discuz\discuz_application.php的282行代码改为:
$_GET['handlekey']= !empty($_GET['handlekey']) && preg_match('/^\w+$/', $_GET['handlekey']) ? $_GET['handlekey'] : '';

OK,测试问题解决....

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
熬笑红尘々君 发表于 2012-4-15 13:39:27 | 显示全部楼层
同样的问题,我只是修改了source\class\discuz\discuz_application.php

这个文件就可以了呀!
回复

使用道具 举报

 楼主| 翎Ling 发表于 2012-4-15 13:40:50 | 显示全部楼层
熬笑红尘々君 发表于 2012-4-15 13:39
同样的问题,我只是修改了source\class\discuz\discuz_application.php

这个文件就可以了呀!

是只改一个文件就可以了...之前发的图是问题的分析过程...
回复

使用道具 举报

熬笑红尘々君 发表于 2012-4-15 13:42:35 | 显示全部楼层
翎Ling 发表于 2012-4-15 13:40
是只改一个文件就可以了...之前发的图是问题的分析过程...

哦,你们的确是高手啊!
回复

使用道具 举报

Forever. 发表于 2012-4-15 14:09:37 | 显示全部楼层
这样会增加安全问题,官方这样改肯定是发现了一个注入漏洞。我有一个方法,在static/common.js的
function showWindow()这个函数中增加一句
function showWindow(k, url, mode, cache, menuv) {
        mode = isUndefined(mode) ? 'get' : mode;
        cache = isUndefined(cache) ? 1 : cache;
        console.log(k.length);
        k = k.replace(/_/g,'');//这句是我增加的,这样安全上比楼主的方法好。
回复

使用道具 举报

 楼主| 翎Ling 发表于 2012-4-15 14:21:57 | 显示全部楼层
Forever. 发表于 2012-4-15 14:09
这样会增加安全问题,官方这样改肯定是发现了一个注入漏洞。我有一个方法,在static/common.js的
function ...

url += (url.search(/\?/) > 0 ? '&' : '?') + 'infloat=yes&handlekey=' + k;
ajaxget()通过这个url返回数据,你用js把k中的_过滤掉 传入的参数就是错的 ,依然无返回正常的id,依然无法关闭...
至于官方过滤参数,可能是由于注入的原因,但是同时也导致了需要传入带数字和_的参数的页面无法传参
回复

使用道具 举报

ding2006 发表于 2012-4-15 15:31:46 | 显示全部楼层
高手!!强!!!临时解决下,等官方修复
回复

使用道具 举报

钻石家族 发表于 2012-4-15 18:16:13 | 显示全部楼层
顶下 辛苦了
回复

使用道具 举报

中国在线社区 发表于 2012-4-15 23:32:39 | 显示全部楼层
测试成功
回复

使用道具 举报

m.king 发表于 2012-4-16 10:41:14 | 显示全部楼层
翎Ling 发表于 2012-4-15 13:40
是只改一个文件就可以了...之前发的图是问题的分析过程...

Discuz! X2.5 打补丁包后关闭不了弹窗问题,关闭不了弹窗解决方案
https://discuz.dismall.com/thread-2770443-1-1.html
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 20:41 , Processed in 0.036806 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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