“ブートストラップ”アプリケーションSecurityDomainへのリモートswf(actionscript3)
-
03-07-2019 - |
質問
現在、My Flash(AS3 / AIR)アプリケーションは、(Flashアプリの)少し変わったアーキテクチャを使用して、実行時にロードされたコンテンツの特定の基本クラスを提供しています。外部コンテンツは、「スタブ」ベースクラスでパブリッシュされます。これは、ロード時に実行時に「実際の」ベースクラスによって隠されます。 Adobeがこれを bootstrapping ( pdf )、それは今まで私にとって非常にうまく機能しています。確かに言う資格はありませんが、私が信じているDLLアーキテクチャとは違いません。
これまで、ロードしていた外部コンテンツは同じ SecurityDomain
(同じサンドボックス)内からロードされていたため、子 ApplicationDomain コード>。残念ながら、私が知る限り、
SecurityDomain
にまたがる ApplicationDomain
は関連できません。つまり、あるSecurityDomのAppDomをAppDomの子にすることはできません。別のSecurityDomから。
ただし、この外部コンテンツをアプリケーションサンドボックスの外部から読み込む必要があります。 SecurityDomain
間の通信を実現する方法はたくさんあります-それらのほとんどは非常に限られていますが、AIRの sandboxBridge
APIはおそらく最も強力です。残念ながら、これらの通信方法では、このブートストラップアーキテクチャを実現できません。
LoaderContext
オブジェクトには securityDomain
プロパティがありますが、Flashセキュリティは「ローカルswfs」がそれに触れることを禁止しています( SecurityError
または同様)。
Flexの SWFLoader
には有望に見える trustContent
プロパティがありますが、 SecurityDomain
Loader
の LoaderContext
内。
再設計する必要があると思いますが(これは簡単ではありませんが)、研究で何かを見逃していないことをここで確認したいと思いました。
だから...アイデアや知恵の真珠?セキュリティモデルに取り組んでいるAdobeの誰かが決定的な「はい/いいえ、できません/できません」を仕掛けることができるなら、私は特にそれが大好きです。...
事前に感謝します!
補遺:その後、ブートストラップがすべて外部ドメインで行われるように、アーキテクチャを再設計することにしました。しかし、私の質問は好奇心からまだ立っています。
解決 2
執筆時点では、AIRを使用している場合でも、別のドメインからの SecurityDomain
に ApplicationDomain
をロードできないと判断しました。
設計上、推測されます。
他のヒント
技術的に言えば、AIRアプリケーションで外部SWFをアプリケーションディレクトリ内に保存し、そこからロードして同じセキュリティサンドボックスに配置することはできませんか?
ただし、これが悪いカルマになる理由はいくつかあります。そのため、ローカルアプリケーションコンテンツとリモートの信頼されていないコンテンツを同じアプリケーションドメインに配置するのが適切なアーキテクチャアプローチであるかどうかは、どのソリューションでも必ず疑問が生じるようです..?