この情報は、米国アドビシステムズ社が提供している情報をもとにローカライズし、作成したものです。

日本語環境での動作保証はしておりませんのでご了承ください。

 

 

問題点 (Issue)

 

 

Adobe Flash Player 9,0,115,0 で、Flash Player ムービー(SWF)ファイルがホストの HTML ページと異なるドメインにあるか、あるいは HTML パラメータの AllowScriptAccess が [never] に設定されている場合、getURL(または ActionScript 3.0 での navigateToURL)関数でウィンドウ名に「_self」「_parent」「_top」のいずれかを指定すると、SWF からのリンクが機能しません。

 

これは、いくつかの SWF ファイルにおいて、ユーザが参照している Web ブラウザのロケーションを変更する機能を妨げる可能性があります。また、SWF ファイルによって、ホストページ、またはページ内のその他のフレームで、JavaScript 形式の URL を実行する試みも妨げられる可能性があります。

 

 

理由 (Reason)

 

 

場合によっては、HTML ページの作成者が SWF ファイルを信頼しないようにして HTML ページに埋め込むことがあります。この「信頼」とは、SWF ファイルが他者の制御下に置かれ、HTML ページを操作されたり、データを抽出されるのを HTML 作成者が防ぐことを意味します。例えば、広告の Flash コンテンツを含む HTML ページや、HTML のディスカッションフォーラムで投稿者が投稿内容に Flash を埋め込む場合に起こり得ます。

 

Flash Player 9 以降では、「_self」「_parent」「_top」 を追加した getURL(または navigateToURL)の呼び出しは、同じホスト内の HTML ページのみを対象として作用していましたが、Flash Player 9,0,115,0 以降では、「_blank」を除くターゲットのすべての呼び出しが有効となります。これらの変更により、HTML ページに埋め込まれた信頼されていない SWF ファイルが警告を表示することなくブラウザを誘導し、ユーザが第三者の Web サイトに訪問するのを防ぐと共に、すべての HTML フレーム全体でクロスドメインスクリプティングを制限します。

 

信頼されていない SWF ファイルから HTML ページを保護するために、Flash Player では Flash コンテンツを表示する <object> タグおよび <embed> タグ内の HTML パラメータ AllowScriptAccess をサポートしています。

AllowScriptAccess では、以下の 3 つの値を指定することができます。

- [always] : すべてのケースにおいて、SWF ファイルは HTML ページと通信することが可能です。

- [sameDomain] : SWF ファイルと HTML ページが同一ドメインに配置される場合のみ、SWF ファイルは HTML ページと通信することが可能です。Flash の初期設定で、HTML パブリッシュのテンプレートが出力する HTML コードの AllowScriptAccess は [sameDomain] に設定されています。これがセキュリティ上、望ましい設定です。

- [never] : すべてのケースにおいて、SWF ファイルは HTML ページと通信することができません。

 

最新の Flash Player では、getURL(または navigateToURL)の呼び出しは、AllowScriptAccess パラメータによって制御されます。AllowScriptAccess は [always] または [sameDomain] に設定し、HTML ページと SWF ファイルを同じドメインに配置することを推奨します。それ以外の状況では、getURL(または navigateToURL)は機能しません。

 

これは、セキュリティモデルに対応するために Flash Player 9 で導入され、Flash Player 9,0,115,0 で強化された新しい動作で、すべてのバージョンの SWF に影響を及ぼします。弊社では、この変更が Flash Player 9 のリリース以前に作成されたいくつかの SWF メディアの動作に影響を及ぼすことを認識しております。この問題によってご不便が生じることにつきましてお詫びいたします。

 

 

解決方法 (Solutions)

 

 

SWF ファイルから getURL(あるいは navigateToURL)が呼び出され、それが上記の理由によって失敗している場合には、いくつかの回避方法があります。

 

A. HTML ページを修正します

もっとも簡単な修正方法は、以下の例のように AllowScriptAccess パラメータを「always」と明示することです。

 注意 : AllowScriptAccess パラメータは、HTML コード内では allowScriptAccess と記述します。

 

<object

classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"

codebase=" http://fpdownload.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"

width="550" height="400" align="middle">

<param name="movie" value="http://otherdomain.com/exampleContent.swf">

<param name="allowScriptAccess" value="always">

<embed

type="application/x-shockwave-flash"

pluginspage="http://www.adobe.com/go/getflashplayer"

width="550" height="400" align="middle"

src="http://otherdomain.com/exampleContent.swf"

allowScriptAccess="always">

</embed>

</object>

 

AllowScriptAccess パラメータの値を [always] に設定することで、ウインドウまたはフレームを誘導する際に getURL または navigateToURL の許可する範囲を超えた他の影響を与える可能性があります。SWF ファイルの作成者が信頼できる場合のみ、AllowScriptAccess を [always] に設定してください。これによって SWF ファイルが HTML ページまたはフレームにおける JavaScript コードの実行を許可します。

 

B. SWF ファイルを修正します

SWF ファイルを埋め込む HTML ページの内容を制御できない場合は、ターゲットとして「_blank」を使用するために getURL、または navigateToURL を変更することができます。これによって getURL(または navigateToURL)は新しいブラウザウィンドで URL を開きます。このオプションは、AllowScriptAccess の値にかかわらず、Flash Player 9 で動作します。

アドビコミュニティフォーラムをご利用下さい

この文章はお役に立てましたでしょうか?さらに情報をお探しになる場合には、アドビスタッフがお届けし ている解決事例やメンバー同士での活発な意見交換をチェックできるコミュニティフォーラム をご利用下さい。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー