開発者が実行する最も一般的なタスクで、セキュリティの知識が必要なものは、外部アセットのロードです。
Flash Player セキュリティモデルでは、コンテンツのロードと、データのアクセスおよびロードを区別しています。コンテンツは、表示メディアを含む、オーディオ、ビデオ、または SWF ファイルなど、Flash Player が表示できるビジュアルメディアとして定義されています。データは、ActionScript コードでのみ操作できるものとして定義されています。
データは、ロードされたメディアコンテンツからのデータの抽出、または、外部ファイル(XML ファイルなど)やソケット接続からのデータの直接のロードのいずれかの方法でロードできます。BitmapData.draw() メソッド、Sound.id3 プロパティ、または SoundMixer.computeSpectrum() メソッドを使用して、ロードされたメディアからデータを抽出できます。データをロードするには、SWFLoader、URLStream、URLLoader、Socket、XMLSocket などのクラスを使用します。
Flash Player セキュリティモデルは、コンテンツのロードとデータのアクセスに様々な規則を定義しています。コンテンツのロードでは、データへのアクセスよりも制限が少なくなります。一般に、SWF ファイル、ビットマップ、MP3 ファイル、およびビデオなどのコンテンツはどこからでもロードできますが、コンテンツがロードする側の SWF ファイルのドメイン以外のドメインにある場合は、別々のセキュリティサンドボックスに分割されます。
リモートまたはネットワークアセットのロードは、次の 3 つの要素に依存しています。
制御していないリモートの場所からアセットをロードすると、ユーザーが危険にさらされるおそれがあります。例えば、リモート 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() メソッドを使用すると、デフォルト以外のポリシーファイルにアクセスできます。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート