我的Flash (AS3/AIR)应用程序目前正在使用一种稍微不寻常的架构(对于Flash应用程序)来为运行时加载的内容提供特定的基类。外部内容与'stub‘基类一起发布,这些类在加载时在运行时被'real’基类所掩盖。我听说过Adobe (pdf格式),到目前为止,它一直很适合我。我相信,这与DLL体系结构并没有什么不同,尽管我没有资格肯定地说。
到目前为止,我加载的外部内容都是从同一个SecurityDomain (相同的沙箱)中加载的,这允许我轻松地将内容加载到子ApplicationDomain中。不幸的是,据我所知,跨SecurityDomains的SecurityDomains不能关联--也就是说,我不能将一个SecurityDom的AppDom从另一个SecurityDom变成AppDom的子级。
但是现在我需要从我的应用程序沙箱外部加载这个外部内容。实现跨SecurityDomain通信的方法有很多--尽管其中大多数方法非常有限,但AIR的sandboxBridge API可能是最强大的。不幸的是,这些通信方法都不允许我实现这种引导架构。
我注意到LoaderContext对象有一个securityDomain属性,但是Flash禁止‘本地swfs’触摸它(它抛出一个SecurityError或类似的)。
Flex的SWFLoader有一个看起来很有前途的trustContent属性,但我倾向于假设它与在Loader's LoaderContext中设置SecurityDomain具有相同的限制。
我怀疑我将不得不重新设计(这并不容易),但我想我只是在这里检查一下,我没有遗漏我的研究。
所以..。有什么想法或智慧之珠吗?如果一个从事安全模型工作的Adobe的人能给我一个明确的“是/不可以/不能做”,我会特别喜欢.
提前感谢!
增编:我决定重新设计这个体系结构,这样所有的引导都发生在外部域上。然而,出于好奇,我的问题仍然存在。
发布于 2009-09-02 03:04:47
在编写本报告时,我确定如果ApplicationDomain来自另一个域,即使使用AIR,也不能将它加载到您自己的SecurityDomain中。
我想是故意的。
发布于 2008-10-23 05:57:49
从技术上讲,您的AIR应用程序不可能简单地将外部SWF保存在应用程序目录中,并从其中加载它们,以便它们驻留在同一个安全沙箱中吗?
然而,有一些非常明显的原因,这将是不好的因果报应,所以似乎任何解决方案都必然提出这样的问题:尝试将本地应用程序内容和远程不受信任的内容放到同一个应用程序域中是否是正确的体系结构方法。
https://stackoverflow.com/questions/224422
复制相似问题