阻止外部访问swf

时间:2017-03-20 12:27:24

标签: actionscript-3 flash

我已经实现了一个SWF应用程序,我将其托管到我的网站并使用object和embed标签加载它。

我发现外部网站使用上述html标记引用了相同的SWF文件。有没有办法阻止这些引用?

我尝试将X-Frame-Options设置为SAMEORIGIN,但它没有用。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果他们窃取你的SWF将其放在他们的域名上,请使用VC.One的建议。然后,如果他们正在将它链接起来......让我们做一些魔法。

当SWF加载相对网址时,请求(幸运的是)通过浏览器和浏览器检索相对于最顶层文档框架的网址。

无论如何,您的SWF仍然属于您的域,因此其安全沙箱会这样做。

将您的SWF分成两部分(让我们将它们命名为Outer和Inner,Outer首先启动,然后加载Inner),这些部分在彼此之间无法工作(共享classess,访问彼此的显示列表等)。 Domain将它们锁定到您的域,因此它们都不会从其他域启动。最后一步:让Outer通过 relative url加载内部。

  • 如果邪恶的家伙将两个SWF放在他们的网站上,他们就不会通过域名锁定开始。
  • 如果邪恶的人热链外面的SWF,它会尝试从错误的地方加载内部SWF。
  • 如果邪恶的人将Inner复制到他们的网站,那么Outer会通过相对链接加载它,Inner和Outer会有安全违规,试图访问彼此的内容。

如果不能分割SWF,那么使用服务器端脚本仍然会有更复杂的解决方案。

<强> UPD

假设您的应用程序具有使用类B的类A.为了使上述技术工作,您需要仅使用类B编译Outer而仅使用类A编译内部,并且其中A使用B而不是编译时访问导入B 您应该使用运行时评估 B = getDefinition(&#34; B&#34;)作为类。如果真正的外部正确加载正版内部,那么getDefinition(&#34; B&#34;)确实会返回对B的类引用,并且所有B功能都可用。在任何其他情况下,getDefinition(&#34; B&#34;)将失败,A将无法正常运行。