站点公告+ 发布

截至年底"某"之领域、"雪"下小屋等二次元站倒了 。我们aixgame稳定不倒,请放心前来 。另外感谢catbox提供的视频存储,现在开始,里番/3D/动画/同人/cosplay,支持低清播放预览(高清需要下载)
11-16 19:58
支付二维码已恢复显示,放心购买,如果你没有显示,刷新一下浏览器 如果没有到账联系客服邮箱或者QQ 如果不记得网址发送邮箱到[email protected](这是自动发送地址邮箱,请勿回复)
11-07 15:11
注册或者已经注册的邮箱必须有效,系统会自动清理无法收到邮件的论坛用户,比如邮箱拒收(拒收的不恢复旧账号金币)或注销的情况。如果取回密码显示不存在就说明被系统注销删除了,这时请联系客服。
10-27 12:12
网站内容鼠标悬浮窗已上线,可以按住自动复制,全选自动复制所有秒传链接,很方便。另外响应不在大陆网友要求,没有支付宝、微信的情况,经过几天的调整修改,PAYPAL已经在网站完成部署,可以支付了。
06-10 02:11
05-28 10:40
04-20 18:44
空间有限,目前不接受非赞助注册,邀请码只是提前充值5元,主机空间都在涨价,别说开论坛免费发邀请码 ,我不信,那都是有广告商赞助,论坛资源会持续更新,其他论坛已关闭注册 ,已经是会员的也可以购买发送邀请码给他人 ,无限制时间请关注官网微博。
04-20 14:30
论坛域名已更改为aixgame.top,永久发布页将会在2022年6月6日更改为aixgame.cc(域名我已经提前买下来了,你们访问不了,是因为我没有解析。原来的aixiagame.cc最多支持到2022年12月22日),aix更好记住,请提前知晓
04-04 22:09
多逛论坛,渡过疫情。验证码总错误 ,重置wifi路由器恢复出厂 。取回密码若提示邮箱不存在或错误 ,联系客服(提供首次充值记录)。 移动网速慢的时候,可换联通电信广电等 。所有网盘压缩包请勿在线解压,只可以下载到本地。
03-30 22:58
请大家減少不必要的刷新,以免加重服务器负担。邮箱前面不需要加www。欢迎优秀作者入驻本站,每月有A币鼓励。最后,祝AI之魂熊熊燃烧,如愛一般永不灭!我们的口号是:愛下一会,你就知道。
03-30 22:58
查看: 164|回复: 0

[教程] 【aixiagame教程】Discuz X3涂鸦板不能正常使用的完美解决方法

[复制链接]
等级

成就
A币
1
主题
15
精华
0
回帖
22
在线时间
936 小时

发表于 2020-6-25 13:35:08 | 显示全部楼层 |阅读模式
现象:


调查思路:
浏览器F12或右键查看Flash展示处的html源码:
  • <embed width="438" height="304"
  • src="static/image/common/doodle.swf?fid=a_magic_doodle&oid=comment_message&from=&config=http%3A%2F%2Fbbs.tsingfun.com%2Fhome.php%3Fmod%3Dmisc%26ac%3Dswfupload%26op%3Dconfig%26doodle%3D1"
  • quality="high" wmode="transparent" allowscriptaccess="always" type="application/x-shockwave-flash">

config参数url解码后:http://域名/home.php?mod=misc&ac=swfupload&op=config&doodle=1
访问可以看到是一些配置项,包括上面按钮本应显示的文字。

由此可以初步判定,Flash没有正确加载url中的配置项。

doodle.swf进行反编译,查看加载配置相关的代码,如下:
  • internal function loadConfig():void
  •         {
  •             var loc1:*=new RegExp("^(https?|ftp|gopher|news|telnet|mms|rtsp):\/\/", "i");
  •             if (this.configURL.match(loc1) === null && this.configURL.indexOf("://") == -1)
  •             {
  •                 this.xmlRequest = new flash.net.URLRequest(this.configURL);
  •                 this.xmlLoader = new flash.net.URLLoader(this.xmlRequest);
  •                 this.xmlLoader.addEventListener(flash.events.Event.COMPLETE, parseConfig);
  •             }
  •             return;
  •         }

上面这个if逻辑是:url不以http开头且不包含“://”字符串才能解析,但是外面config传值又是以“http://”开头的,这里不得不吐槽一下Discuz团队,是否是两个小组的人员没有商量好接口,还是判断逻辑有误呢?

由于修改Flash代价稍高,因此笔者决定修改config传值,去掉前面的“http://”:
修改source\class\magic\magic_doodle.php
$config = urlencode(getsiteurl().'home.php?mod=misc&ac=swfupload&op=config&doodle=1');
改为:
$config = urlencode('home.php?mod=misc&ac=swfupload&op=config&doodle=1');

现在运行,如图:



不过,此时保存按钮功能还是有些问题,下次再细调了。

今天继续研究点击“保存”按钮没有任何反应的问题。

分析思路:
没错,继续反汇编doodle.swf调试as源代码,别无他法了。
我们跟踪数据post后的响应数据:
  • internal function makeComplete(arg1:flash.events.Event):void
  •         {
  •                         trace("makeComplete");
  •             var event:flash.events.Event;
  •             var result:XML;
  •             var msg:String;
  •             var loader:flash.net.URLLoader;
  •             var request:flash.net.URLRequest;
  •             var variables:flash.net.URLVariables;
  •             var loc1:*;
  •             result = null;
  •             msg = null;
  •             loader = null;
  •             request = null;
  •             variables = null;
  •             event = arg1;
  •             try
  •             {
  •                                 trace(event.currentTarget.data);
  • ......

结果是一个html文件,效果如下:


继续查找错误原因,发现是由于post数据中没有带hash值,_xss_check()失败导致。
这里,再次吐槽Discuz团队,你们做了充分测试了吗?
还是之前那句话,修改Flash源码代价蛮高,笔者不想弄。
临时去掉xss检验解决问题。
home.php 顶部加上一个定义就ok了,代码如下:
  • if ($_GET['mod'] == 'misc' && $_GET['ac'] == 'swfupload' && $_GET['op'] == 'doodle') {
  •         define('DISABLEXSSCHECK', '1');
  • }
最后就解决了。

原文:http://bbs.tsingfun.com/thread-457-1-1.html
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|aix论坛 |Sitemap

GMT+8, 2024-12-27 07:45 , Processed in 0.151622 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Cloud.

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