Flash AS安全问题

时间:2011-03-09 06:15:28

标签: flash actionscript

我根本不知道Flash AS,我曾经在15岁时进行过实验,但现在还没有。无论如何,我想知道是否有办法让swf文件检查它们正在加载哪个域并做出相应的反应。

1 个答案:

答案 0 :(得分:1)

“他们从哪个域加载”你的意思是:

  1. SWF本身?
  2. 包含SWF的页面?
  3. 如果是#1,您可以从任何显示对象的root.loaderInfo.url属性轻松获取值。

    #2比较棘手。如果嵌入代码中的allowscriptaccess设置为true,则可以将Javascript与ExternalInterface调用一起使用。它位于document.location.hostdocument.location.hostname

    如果您无法访问Javascript(例如,如果您的SWF在Facebook帖子中),则需要进行一些设置,解决方案将取决于用户的浏览器行为。这是一种方法:

    设置SWF可以ping的服务器端脚本。此脚本应查找http“referer”标头,并在ping时将其发回。然后让您的SWF向此脚本发送URLRequest。数据将是嵌入网站。

    在PHP中,脚本只是echo $_SERVER["HTTP_REFERER"];。在大多数其他语言中它也同样简单。

    这是另一种方法: How do I get the domain of the page that's loading my swf when I don't have script access?

    如果您只想保护自己的SWF不被嵌入其他人的页面,那就更容易了。只需检查ExternalInterface.available即可。如果为false,则禁用SWF。如果是,请使用上述(#1)方法检查域,如果域错误则禁用SWF。