異なるドメインのコンテンツ間のスクリプト作成

Adobe AIR 1.0 およびそれ以降

AIR アプリケーションは、インストール時に特殊な権限を付与されます。アプリケーションに含まれていないリモートファイルやローカルファイルなどの他のコンテンツに同じ権限情報が流出しないようにすることが重要です。

AIR サンドボックスブリッジについて

通常、他のドメインのコンテンツで、他のドメインのスクリプトを呼び出すことはできません。

メインの AIR アプリケーションが、リモートドメインのコンテンツに対してメインの AIR アプリケーション内のスクリプトへの制御付きアクセス権を持っていることを要求する場合や、その逆の場合もあります。これを実現するために、ランタイムには、2 つのサンドボックス間のゲートウェイとして機能する、 サンドボックスブリッジ メカニズムがあります。サンドボックスブリッジを使用すると、リモートサンドボックスとアプリケーションセキュリティサンドボックス間で明示的な操作を実行できます。

サンドボックスブリッジは、読み込まれる側のスクリプトと読み込む側のスクリプトの両方がアクセスできる 2 つのオブジェクトを公開します。

  • parentSandboxBridge オブジェクトを使用すると、読み込む側のコンテンツは読み込まれる側のコンテンツのスクリプトにプロパティと関数を公開できます。

  • childSandboxBridge オブジェクトを使用すると、読み込まれる側のコンテンツが読み込む側のコンテンツのスクリプトにプロパティと関数を公開できます。

サンドボックスブリッジによって公開されるオブジェクトは、参照ではなく値によって受け渡されます。すべてのデータは直列化されます。つまり、ブリッジの片側で公開されたオブジェクトはもう一方の側で設定できず、公開されたそのオブジェクトはすべて型指定されません。また、公開できるのは単純なオブジェクトと関数だけで、複雑なオブジェクトは公開できません。

子コンテンツが parentSandboxBridge オブジェクトのプロパティを設定しようとすると、ランタイムによって SecurityError 例外がスローされます。同様に、親コンテンツが childSandboxBridge オブジェクトのプロパティを設定しようとすると、ランタイムによって SecurityError 例外がスローされます。

サンドボックスブリッジの例(HTML)

HTML コンテンツで、 parentSandboxBridge プロパティと childSandboxBridge プロパティが子ドキュメントの JavaScript の window オブジェクトに追加されます。HTML コンテンツでのブリッジ関数の設定方法の例については、 サンドボックスブリッジインターフェイスの設定 を参照してください。

API 公開の制限

サンドボックスブリッジを公開する場合は、高度なレベルの API を公開してそれらが悪用されない程度まで制限することが重要です。ブリッジ実装を呼び出しているコンテンツは(コードの挿入などにより)改ざんされる可能性があることに注意してください。例えば、 readFile(path) メソッド(任意のファイルのコンテンツを読み込むメソッド)をブリッジを通じて公開すると、悪用されやすくなります。この場合はパスを取得せずに特定のファイルを読み込む readApplicationSetting() API を公開する方が安全です。アプリケーションの一部が改ざんされた後でもアプリケーションで実行できる、より意味のある方法によって、損害の広がりを抑えることができます。