我玩的网页游戏允许用户上传的内容与使用navigateToURL功能将玩家发送到随机网站的人一起遇到很多问题。我很好奇是否有办法使用Actionscript 2或3禁用此功能。我已经看到了使用HTML嵌入的方法,但我没有对该网站的管理访问权。
答案 0 :(得分:1)
在做了更多研究后,我得出了一个可靠的答案: 您应该在服务器端使用PHP和名为swfdump的可执行文件的组合来验证用户上载的内容。
swfdump是位于Flex SDK的bin文件夹中的exe文件。您可以使用exec从PHP运行它。 它将读取swf的字节码并生成报告。从中您可以轻松找到包含navigateToURL()的文件并拒绝这些文件。
我使用swfdump -abc -out myfilereport.swfx myfile.swf测试了我自己的文件 在那个输出中我发现了这个:
findpropstrict flash.net:navigateToURL
findpropstrict flash.net:URLRequest
pushstring "http://www.plasticsturgeon.com"
constructprop flash.net:URLRequest (1)
callproperty flash.net:navigateToURL (1)
我使用的网址是“http://www.plasticsturgeon.com”。但是,消除包含flash.net.navigateToURL的任何swf将更加容易。一旦您确定存在,您就可以向最终用户生成错误通知。
因此,使用此方法,您可以查找并拒绝任何使用导航到URL的swf。你甚至可以创建一个批处理来运行并使这个问题无效。
有关使用字节码的更多信息: http://code.google.com/p/redtamarin/wiki/ABC
关于反编译ASbytecode: http://dougmccune.com/flex/FOTB_Decompiling_Doug_McCune.pdf