[an error occurred while processing this directive]
日本語環境での動作保証はしておりませんのでご了承ください。
セキュリティの理由により、ブラウザ上で再生される SWF から、外部ドメインのデータにアクセスすることはできません。Flash Player 7 における機能強化として、読み込まれるデータは同一ドメイン内のみに制限されるようになりました。この変更により、親ドメインとサブドメイン間のデータ通信も制限されます。
Flash Player 7 フレームワークの異なる変更点として、クロスドメインポリシーファイルがあります。ポリシーファイルは単純な XML ファイルで、許可するドメインを Flash Player に指定することで、セキュリティのダイアログボックスを表示せずにアクセスすることができるようになります。ポリシーファイルをサーバ上に配置すると、Flash Player からそのサーバに直接アクセスすることが許可され、ユーザアクセス権限のメッセージが表示されないようになります。
Flash ムービーからはどのサーバでもアクセスすることができ、また同一ドメインである必要もありません。「crossdomain.xml」というファイル名のクロスドメインファイルはサーバのルートに配置します。ポリシーファイルにおけるドメイン名の指定にはワイルドカード(*)を使用することができます。さらに詳しい情報については、以下のポリシーファイルを使用する理由を参照してください。
注意 : ポリシーファイルを送信する際、クロスドメインリダイレクトを使用しないでください。あるいは、Flash Player はポリシーファイルを無視します。
loadVariables、XMLSocket オブジェクトメソッド、XML オブジェクトの send および sendAndLoad コマンドなど、データの送受信を行うすべての ActionScript コマンドまたはオブジェクトに適用されます。
Flash Player において、ドメインの互換性は明確なガイドラインが存在します。詳細は以下のドメイン比較表を参照してください。
以下の問題に対処するには、対応する回避策を行う必要があります。
- 異なるドメインから変数や XML データを Flash ムービー上に読み込むことができない
- 互換性の無いドメインから Flash ムービーにデータが返されない(Flash Player 6,0,47,0 以降)
- 互換性の無いドメインから読み込まれた Flash ムービーから、ActionScript のオブジェクトや変数にアクセスできない。(Flash 6 以降の SWF ファイル)
異なるドメインから変数や XML データを Flash ムービー上に読み込むことができない
例えば「http://www.yourserver.com/flashmovie.swf」から「http://www.yourserver.com/data.txt」にアクセスすることは可能です。テキストファイルと SWF ファイルが同一ドメインにあるため制限を受けません。
「http://www.NotMyServer.com/data.txt」の読み込みは行えず、エラーメッセージも表示されません。load アクションの場合は警告ダイアログが表示される場合があります。
ダイアログ表示に関する詳細については、Macromedia Flash movie fails to load data in Flash Player 7* (TechNote tn_18860)を参照してください。
この問題に対処する方法については、Loading data across domains* (TechNote tn_16520)を参照してください。
注意 : スタンドアロンプロジェクタ内の Flash ムービーについては、この問題の影響を受けません。
互換性の無いドメインから Flash ムービーにデータが返されない(Flash Player 6,0,47,0 以降)
互換性の無いドメインから Flash ムービーに返されるデータは無視される場合があります。そのため、サーバサイドのリダイレクトで他のドメインから返される値は失敗する可能性があります。
注意 : スタンドアロンプロジェクタ内の Flash ムービーについては、この問題の影響を受けません。
互換性の無いドメインから読み込まれた Flash ムービーから、ActionScript のオブジェクトや変数にアクセスできない。(Flash 6 以降の SWF ファイル)
2 つの Flash MX ムービーでオブジェクトや変数を共有する場合、2 つのファイルが同一ドメイン内に配置されている必要があります。異なるドメインのデータにアクセスすることはできません。
Flash 6 以降の SWF ファイルはこのセキュリティ制限の影響を受けます。Flash 4 および Flash 5 のムービーの場合、互いに異なるドメインにある場合でもオブジェクトや変数にアクセスすることができ、また同一ドメイン内の Flash 6 ムービーにもアクセスすることができます。一方、異なるドメインにあるムービーが Flash MX の場合、Flash 4 および Flash 5 のムービーからオブジェクトや変数にアクセスすることはできません。
Flash 6 ムービーから、異なるドメインの Flash 6 ムービーにアクセスできるようにセキュリティ設定を変更することが可能です。System.security.allowDomain コマンドを使用して、オブジェクトや変数にアクセスするためのドメインを指定します。
System.security.allowDomain は、指定先のドメインの管理者や編集者を信頼できる場合にのみ使用してください。このコードを使用することによって、ドメイン上のすべてのムービーにアクセスする権限が付与されます。
さらに詳しい情報については、Flash ヘルプ「System.security.allowDomain()」を参照してください。この項目を参照するには ActionScript ディクショナリがアップデートされている必要があります。アップデートに関する情報については、Macromedia Flash MX Documentation Update* (TechNote tn_16470)を参照してください。
注意 : スタンドアロンプロジェクタ内の Flash ムービーは、このセキュリティ機能の影響を受けます。プロジェクタは外部ドメインから読み込まれたムービーにアクセスしますが、アクセス権限が設定されていない場合、Flash ムービーはプロジェクタにアクセスすることができません。
ドメインの比較は IP アドレスではなくドメイン名に基づいて行われます。そのため、同一 IP アドレスでも複数のドメイン設定がされている場合は互換性がありません。
以下は、Flash Player 7 での互換性のあるドメインの例です。対応するドメインを隣の列に記載しています。
以下は、Flash Player 6 での互換性のあるドメインの例です。ドメイン名の規則に適合していないため、Flash Player 7 では互換性がありません。また、Flash Player 7 の新しい仕様で、HTTP 経由で HTTPS のデータにアクセスすることはできません。
以下は Flash Player 7 および Flash Player 6 の両方において互換性が無い組み合わせの例です。
ポリシーファイルを配置するのが望ましい環境がいくつか考えられます。ポリシーファイルを配置することで、ムービー自体に変更を加えることなく、以下のような問題に対処することができます。また、ポリシーファイルはメモ帳やシンプルテキストなどのエディタを使用して簡単に作成することができます。
- バージョン 6 以前のムービーから、HTTP 経由でサブドメインや HTTPS、その他特殊な URL にアクセスする場合。このような場合、Flash Player 7 では警告ダイアログが表示されます。
- バージョン 7 以降の SWF ファイルで同様の処理を行い、Flash Player 7 のセキュリティモデルの制限を受ける場合。
- Flash Player のクロスドメインアクセス制限の影響を受ける、Web サービスなどの公開サーバ上のコンテンツにリクエストを送信するムービー
サブドメイン上のデータアクセスに依存する Web サイト
法人の場合、多くのサブドメインで構成される大規模な Web サイトを運用していることがあります。通常、各サブドメインは、アプリケーションホストやデータベース、データ領域など、処理内容や目的によって分割されて運用されます。Flash Player 6 以前の場合、サブドメイン上のムービーは他のすべてのサブドメインに自由にアクセスすることができます。
ドメインの例
- http://www.company.com(Flash ムービーが存在するサブドメイン)
- http://remoting.company.com(Flash リモートサービスをホストするドメイン)
- http://info.company.com(データベースにアクセスするスクリプトを格納するサブドメイン)
- http://finance.company.com(金融部門で使用されるサブドメイン)
- http://ads.company.com(広告部門で使用されるサブドメイン)
Flash Player 7 では、6 以前のバージョンを指定してパブリッシュされたムービーで上記のようなサブドメインへのアクセスを行うと、エンドユーザに対して、処理を行う権限を確認する警告ダイアログが表示されることがあります。この場合、サイトの設計者が意図してそのようにムービーを作成しているため、エンドユーザが許可することは想定されますが、ユーザがダイアログの内容を理解できず、処理が許可されない可能性もあります。
以前は Flash ムービーからすべてのサーバへのアクセスが許可されていたため、特に法人においては Flash Player 7 以降でも同様に動作しなければならないシステムも存在します。ポリシーファイルを使用して必要なデータへのアクセスを許可することが可能です。テキストエディタを使用してポリシーファイルを作成し、上記の例では http://www.company.com 上の Flash ムービーからサブドメインのアクセスを許可することができます。
ポリシーファイルの例
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="www.company.com" /> </cross-domain-policy> |
ファイル名を「crossdomain.xml」として、アクセスする必要のある以下のすべてのサーバのサイトルートに保存します。
http://remoting.company.com、http://info.company.com、http://finance.company.com、http://ads.company.com
これにより、http://www.company.com 上のすべての Flash コンテンツは Flash Player 6 の場合と同様に動作するようになります。
注意 : この場合、ポリシーファイルは Flash ムービーが保存されているサーバではなく、アクセス先のサーバに配置してください。
特殊な URL に対してデータリクエストを行うムービー
法人によっては同一ドメイン上の Flash データを読み込む Web サイトを運用している場合もありますが、同一ドメイン上のファイルへのアクセスが制限される可能性があります。
この場合、Flash ムービーから http://company.com というアドレスにアクセスされている可能性があります。Flash Player 7 では「www.company.com」と「company.com」は全く異なる URL として認識されるため、アクセス制限の対象となります。ですが一方では、「company.com」とブラウザのアドレスに直接入力してムービーのページにアクセスすることも想定され、その場合は現象が発生せずに正常に動作します。
この問題に対処するには、両方の URL を許可するポリシーファイルを作成します。
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="www.company.com" /> <allow-access-from domain="company.com" /> </cross-domain-policy> |
ファイル名を「crossdomain.xml」として、Flash ムービーが保存されているサーバのサイトルートに保存します。このことにより、Flash Player 6 の場合と同様に動作するようになります。
すべてのサブドメインと相互にアクセスする Web サイト
法人の場合、複数のサブドメインでそれぞれに Flash コンテンツを配置することもあります。上記の対処を行うことでムービーはすべてのサブドメインに対してアクセスできるようになりますが、すべてのサブドメインに対してファイルを作成して保存する手間がかかり、また新しいサブドメインが追加された場合にはファイルを更新する必要があります。
この問題に対処するには、ワイルドカードを使用してすべてのサブドメインに対してアクセス許可を付与するポリシーファイルを作成します。
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*.company.com" /> </cross-domain-policy> |
ファイル名を「crossdomain.xml」として、www.company.com を含むすべてのサブドメインのサイトルートに保存します。
特定のサブドメインおよびローカルサーバにアクセスする内部 Web サイト
例えば「http://finance.company.com」というサブドメインで、外部からアクセスできない内部サーバアプリケーションを運用している場合を仮定します。
さらに http://hr.company.com、http://it.company.com という 2 つのサブドメイン上で Flash ビジネスアプリケーションを運用し、http://finance.company.com にアクセスする場合、また同時に他のサブドメインからのアクセスを許可しない場合は、ポリシーファイルを http://finance.company.com 上に配置し、2 つのサブドメインからのアクセスのみを許可します。
ここで考慮すべきは、内部サーバの「フレンドリーネーム」です。ユーザによっては、サーバの短い名前を入力してアクセスする場合があります。例えば「http://hr」または「hr」などです。DNS によって、URL は正しく解決されますが、Flash Player ではフレンドリーネームは全く別の異なるドメインとして認識されます。
この問題を解決するには、想定される両方の状況に対処するポリシーファイルを作成します。正しい URL と、内部用の短いフレンドリーネームの両方に対してアクセスを許可します。
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="hr.company.com" /> <allow-access-from domain="it.company.com" /> <allow-access-from domain="hr" /> <allow-access-from domain="it" /> </cross-domain-policy> |
ファイル名を「crossdomain.xml」として、finance.company.com のサイトルートに配置します。
注意 : このように、サーバがファイアウォール内部にある場合、ポリシーファイルは公開サーバに配置しないでください。
すべてのドメインからデータアクセスを許可する公開サーバ
ニュースフィードや Web サービスなど、不特定多数を対象としている場合、どのサーバからでもアクセスできるようにする必要があります。
通常、外部ドメイン上のデータへのアクセスは Flash Player および Web ブラウザによって許可されません。そのため、一般的な対処方法として、Flash ムービーが配置されているサーバに代理スクリプトを作成し、ムービーに返される前にサーバサイドでデータのリクエストを行います。
このような運用が一般的ではありますが、公開されているデータにアクセスするためのサーバサイドコードを Flash ムービーの作成者が準備する必要があります。公開サーバにポリシーファイルが配置されている場合、サーバサイドスクリプトを使用しなくても、Flash ムービーからのデータアクセスが可能になります。
すべてのドメインからのアクセスを許可するためには、ポリシーファイルで特定のドメインを指定せず、代わりにワイルドカードを使用します。
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy> |
ファイル名を「crossdomain.xml」として、公開サーバのサイトルートに配置します。
非セキュアなプロトコル経由からムービーへのアクセスを許可するセキュアサーバ
HTTPS コンテンツにおいて HTTP コンテンツからのアクセスを許可することは賢明ではありません。この対処を行うことにより、HTTPS 本来のセキュリティ機能が低下します。
ですが、HTTPS サイトにアクセスする旧 Flash コンテンツなど、対処が必要な例も想定されます。Flash Player 7 では初期設定でアクセスが許可されていません。HTTP 経由で Flash ムービーから HTTPS 上のデータにアクセスできるようにするためには、「allow-access-from」タグで secure 属性を使用し、false を指定します。
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> <cross-domain-policy> <allow-access-from domain="www.company.com" secure="false" /> </cross-domain-policy> |
ファイル名を「crossdomain.xml」として、HTTPS サーバのサイトルートに配置します。
追加情報 (Additional Information)
この文書に記載されているセキュリティ機能は、開発者の要望により Flash Player に追加されました。
このセキュリティ機能の強化によって、Flash ムービーにおけるデータ転送の潜在的な問題が修正されます。Flash Player 7 で追加されたセキュリティ機能の総括的なレビューについては、以下の弊社 Web サイト「Macromedia Flash Player 7 におけるセキュリティの変更について」を参照してください。
URL : http://www.adobe.com/jp/devnet/flash/articles/fplayer_security.html
[an error occurred while processing this directive]
最終更新 (Last Update): | 2008-03-19 |
---|---|
文書番号 (ID): | 233454 |
プラットフォーム (OS): | Macintosh, Windows |
http://go.adobe.com/kb/ts_233454_ja-jp |