我玩的一款允许用户上传内容的网页游戏在人们使用 navigateToURL 功能将玩家发送到随机网站时遇到了很多问题。我很好奇是否有一种方法可以使用 Actionscript 2 或 3 禁用此功能。我已经看到了一种使用 HTML 嵌入的方法,但我没有对该网站的管理访问权限。
1 回答
在做了更多研究之后,我得出了一个可靠的答案:您应该在服务器端使用 PHP 和名为 swfdump 的可执行文件的组合来验证用户上传的内容。
swfdump 是一个 exe 文件,位于 Flex SDK 的 bin 文件夹中。您可以使用 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 会容易得多。一旦您确定 tha 存在,您就可以向最终用户生成错误通知。
因此,使用此方法,您可以找到并拒绝任何使用导航到 URL 的 swf。您甚至可以创建一个批处理来运行和使任何存在此问题的断言无效。
有关使用字节码的更多信息: http ://code.google.com/p/redtamarin/wiki/ABC
关于反编译 ASbytecode: http ://dougmccune.com/flex/FOTB_Decompiling_Doug_McCune.pdf