1

我玩的一款允许用户上传内容的网页游戏在人们使用 navigateToURL 功能将玩家发送到随机网站时遇到了很多问题。我很好奇是否有一种方法可以使用 Actionscript 2 或 3 禁用此功能。我已经看到了一种使用 HTML 嵌入的方法,但我没有对该网站的管理访问权限。

4

1 回答 1

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

于 2012-06-27T18:29:00.957 回答