Adobe Flex 3 ヘルプ

アセットのロード

開発者が実行する最も一般的なタスクで、セキュリティの知識が必要なものは、外部アセットのロードです。

データとコンテンツとの比較

Flash Player セキュリティモデルでは、コンテンツのロードと、データのアクセスおよびロードを区別しています。コンテンツは、表示メディアを含む、オーディオ、ビデオ、または SWF ファイルなど、Flash Player が表示できるビジュアルメディアとして定義されています。データは、ActionScript コードでのみ操作できるものとして定義されています。

データは、ロードされたメディアコンテンツからのデータの抽出、または、外部ファイル(XML ファイルなど)やソケット接続からのデータの直接のロードのいずれかの方法でロードできます。BitmapData.draw() メソッド、Sound.id3 プロパティ、または SoundMixer.computeSpectrum() メソッドを使用して、ロードされたメディアからデータを抽出できます。データをロードするには、SWFLoaderURLStreamURLLoaderSocketXMLSocket などのクラスを使用します。

Flash Player セキュリティモデルは、コンテンツのロードとデータのアクセスに様々な規則を定義しています。コンテンツのロードでは、データへのアクセスよりも制限が少なくなります。一般に、SWF ファイル、ビットマップ、MP3 ファイル、およびビデオなどのコンテンツはどこからでもロードできますが、コンテンツがロードする側の SWF ファイルのドメイン以外のドメインにある場合は、別々のセキュリティサンドボックスに分割されます。

リモートアセットのロード

リモートまたはネットワークアセットのロードは、次の 3 つの要素に依存しています。

  • アセットのタイプ。ロード対象のアセットがイメージファイルなどのコンテンツアセットである場合、そのアセットを Flex アプリケーションにロードするために、ロード対象ドメインから許可を受ける必要はありません。XML ファイルなど、ロード対象のアセットがデータアセットの場合は、このアセットにアクセスするためにロード対象ドメインによる許可が必要です。アセットのタイプの詳細については、データとコンテンツとの比較を参照してください。
  • ロード対象ドメイン。データアセットを異なるドメインからロードしている場合は、ロード対象ドメインは crossdomain.xml ポリシーファイルを提供する必要があります。このファイルには、アクセスが許可されている URL と URL パターンのリストが含まれます。呼び出し元のドメインは、そのリストの URL または URL パターンのいずれかと一致していなければなりません。crossdomain.xml ファイルの詳細については、クロスドメインポリシーファイルの使用を参照してください。ロード対象アセットが SWF ファイルの場合は、loadPolicyFile() メソッドを呼び出して、ロード対象 SWF ファイル内部の別のポリシーファイルをロードすることにより、許可を与えることもできます。詳細については、クロスドメインポリシーファイルの使用を参照してください。
  • SWF ファイルのサンドボックスのロード。ネットワークアドレスからアセットをロードするには、SWF ファイルが、リモートサンドボックスまたは local-with-networking サンドボックス内に置かれている必要があります。ネットワークを通じて SWF ファイルがアセットを確実にロードできるようにするには、Flex アプリケーションのコンパイル時に、use-network コンパイラオプションが true に設定されている必要があります。これはデフォルトの設定です。use-networkfalse に設定された状態でアプリケーションをローカルファイルシステムからロードすると、アプリケーションは local-with-filesystem サンドボックスに格納されるため、リモート SWF ファイルからはロードできなくなります。

制御していないリモートの場所からアセットをロードすると、ユーザーが危険にさらされるおそれがあります。例えば、リモート Web サイト B に、Web サイト A によってロードされる SWF ファイルが含まれるとします。この SWF ファイルは、通常は広告を表示します。ただし、Web サイト B のセキュリティが侵害され、その SWF ファイルが、ユーザー名とパスワードの入力を求めるファイルに置き換えられると、ユーザーがログイン情報を入力してしまうおそれがあります。このようなケースにおけるデータの送信を防ぐために、ローダーには allowNetworking というプロパティがあり、デフォルト値に never が設定されています。

クロスドメインポリシーファイルの使用

異なるドメインの SWF ファイルでデータを使用できるようにするには、「クロスドメインポリシーファイル」を使用します。クロスドメインポリシーファイルは XML ファイルであり、サーバーはこれを使用して、別のドメインにある SWF ファイルがサーバーのデータやドキュメントを利用できるかどうかを示します。SWF ファイルが存在するドメインが、サーバーのポリシーファイルに指定されていれば、その SWF ファイルはサーバーのデータやアセットにアクセスすることができます。

Flash ドキュメントが別のドメインのデータにアクセスしようとすると、Flash Player は、そのドメインからポリシーファイルのロードを試みます。データにアクセスしようとしている Flash ドキュメントのドメインがポリシーファイルに含まれている場合は、データへのアクセスが自動的に許可されます。

デフォルトのポリシーファイルは crossdomain.xml という名前で、データを提供するサーバーのルートディレクトリにあります。次に示すポリシーファイルの例では、foo.com、friendOfFoo.com、*.foo.com、および 105.216.0.40 から提供される Flash ドキュメントに対するアクセス許可が付与されます。

<?xml version="1.0"?>
<!-- http://www.foo.com/crossdomain.xml -->
<cross-domain-policy>
    <allow-access-from domain="www.friendOfFoo.com"/>
    <allow-access-from domain="*.foo.com"/>
    <allow-access-from domain="105.216.0.40"/>
</cross-domain-policy>

crossdomain.xml ファイルでポートを設定することもできます。crossdomain.xml ポリシーファイルの詳細については、『ActionScript 3.0 のプログラミング』を参照してください。

loadPolicyFile() メソッドを使用すると、デフォルト以外のポリシーファイルにアクセスできます。

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート