HTML コンテンツでは、主に JavaScript による動的に生成されるコードの作成機能のために、SWF ベースのコンテンツとは異なるセキュリティの考慮事項があります。
eval()
関数を呼び出すときに作成されるような、動的に生成されたコードがアプリケーションサンドボックス内で許可されると、セキュリティリスクが発生することがあります。例えば、ネットワークサンドボックスから読み込まれた文字列をアプリケーションで不用意に実行する可能性があります。また、その文字列には、ユーザーのコンピューターのファイルの削除または変更を行ったり、信頼できないネットワークドメインにローカルファイルのコンテンツを報告したりする悪質なコードが含まれている場合があります。
動的なコードを生成するには、次のような方法があります。
-
eval()
関数を呼び出します。
-
innerHTML
プロパティを設定するか、または DOM 関数を呼び出してスクリプトタグを挿入してリソース外のスクリプトを直接読み込みます。
-
innerHTML
プロパティを設定するか、または DOM 関数を呼び出して、(src を使用してスクリプトを読み込むのではなく)インラインコードを含む script タグを挿入します。
-
アプリケーションサンドボックス内のコンテンツについて、
script
タグの
src
を、アプリケーションリソースディレクトリ以外にあるファイルに設定します。
-
javascript
URL スキームを使用します(
href="javascript:alert('Test')"
など)。
アプリケーションセキュリティサンドボックス内のコードは、アプリケーションディレクトリからコンテンツを読み込んでいるときにのみこれらのメソッドを使用できます。 これによって、すべての AIR API にアクセスできるアプリケーションサンドボックス内のコードが、潜在的に信頼されないソースのスクリプトを実行することを防止できます。
非アプリケーションセキュリティサンドボックスのコンテンツは、これらのメソッドを使用して動的コードを生成できます。 ただし、直接 AIR API にアクセスできるわけではありません。 AIR のサンドボックスブリッジ機能によって、非アプリケーションセキュリティサンドボックス内のコードが、アプリケーションコードによって制限および決定された方法で、アプリケーションサンドボックス内のコードとやり取りするための手段が提供されます。
AIR アプリケーションは、 (ファイルやネットワークのソースから読み込むのではなく)HTML ストリング変数から HTML コンテンツを生成できます。ただしデフォルトでは、ストリングによって生成された HTML コンテンツには、アプリケーションサンドボックスの権限が付与されません。 これにより、潜在的に安全でないインターネットのソースから取得されるストリングコンテンツに、アプリケーションが不用意にアクセスしないようにします。
注意:
モバイルデバイスの AIR は、ホストオペレーティングシステムが提供する Web コントロールを使用します。このコントロールで実行するコンテンツは AIR API にアクセスできないので、アプリケーションセキュリティサンドボックスに読み込んだり、アプリケーションセキュリティサンドボックスで実行したりできません。
HTML セキュリティについて詳しくは、開発者向けドキュメントの「AIR のセキュリティ」を参照してください。