Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 阻止对swf的外部访问_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 阻止对swf的外部访问

Actionscript 3 阻止对swf的外部访问,actionscript-3,flash,Actionscript 3,Flash,我已经实现了一个SWF应用程序,我将其托管到我的网站上,并使用对象和嵌入标记将其加载 我发现外部网站使用上述html标记引用了相同的SWF文件。有没有办法阻止这些引用 我尝试将X-Frame-Options设置为SameOrgin,但没有成功 提前谢谢你。如果他们窃取你的SWF并将其放在他们的域名上,请使用VC。个人建议。然后,如果他们正在热链接它。。。让我们做些魔术吧 当SWF加载相对的url时,请求(幸运的是)通过浏览器发送,浏览器检索相对于最顶端文档框架的url 不管怎样,您的SWF仍然属

我已经实现了一个SWF应用程序,我将其托管到我的网站上,并使用对象和嵌入标记将其加载

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

我尝试将X-Frame-Options设置为SameOrgin,但没有成功


提前谢谢你。

如果他们窃取你的SWF并将其放在他们的域名上,请使用VC。个人建议。然后,如果他们正在热链接它。。。让我们做些魔术吧

当SWF加载相对的url时,请求(幸运的是)通过浏览器发送,浏览器检索相对于最顶端文档框架的url

不管怎样,您的SWF仍然属于您的域,所以它的安全沙箱属于您的域

将SWF拆分为两个部分(分别命名为外部和内部,外部先启动,然后加载内部),这两个部分没有彼此就无法工作(共享类、访问彼此显示列表等)。域将它们锁定到您的域,这样它们就不会从其他域开始。最后一步:让外部通过relativeurl加载内部

  • 如果邪恶的家伙把这两个主权财富基金都放在他们的网站上,他们就不会通过域名锁启动
  • 如果邪恶的家伙热链接外部SWF,它会尝试从错误的地方加载内部SWF
  • 如果邪恶的家伙将内部复制到他们的站点,使外部通过相对链接加载它,那么内部和外部在试图访问彼此的内容时将发生安全冲突
如果不选择分割SWF,那么使用服务器端脚本还有更复杂的解决方案

UPD


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

你是说其他网站“窃取”了你的swf?浏览器应允许它不包含策略文件。可以使用
loaderInfo
在每次运行时检查SWF位置。其中
if(myUrl==”https://example.com“{startApp();}如果函数
startApp
kick启动应用程序的正常运行,则{showError();}
。它总是让我困惑。。。很久以前,我试图从
mydamainA.com
加载swf,并将其显示在
mydomainB.com
的页面中,但我做不到。我读了一些aobiut政策文件,但我不明白,老实说,到今天为止我还没有学会(除了“你需要使用政策文件”这句话,我找不到任何细节)现在,我从你那里了解到,我需要采取一些特殊的步骤来阻止这种情况的发生——我没有做任何事情,我自己买的东西就是为了阻止这样的事情,据我所知,我的意图是相反的;)谢谢,我真的需要坐一会儿。现在我甚至不需要做这样的事情,所以这只是好奇,所以不用担心。如果我没弄错的话,你描述的是由另一个swf加载swf,但我实际上是说我在
mydomainA
上只有一个.swf,它根本没有在
mydomainB
上的原始HTML页面中加载,但在
mydomainA
@PawełAudionysos上加载很好,我明白,这就是为什么我说你需要把你的SWF分成两部分,这样才能工作。我还说过,如果分割SWF不是一个选项,那么使用服务器端脚本还有一个更复杂的解决方案。现在我真的很困惑,我认为这是OP的解决方案,而我又如何解决。我们如何才能为两个相反的问题找到一个解决方案?:)@的确,我的错。对于您的情况,域B上的SWF必须有一行允许域a访问它的代码:基本上,您不能允许自己进入某人的SWF,除非该SWF明确允许您访问。