
マクロメディア株式会社
コンサルタント
この記事では、Flash Player 8 の新しいセキュリティ機能について解説します。
Flash Player 8 では、ローカルファイルに関するセキュリティが強化されています。これにより、以前のバージョンのFlash Player 上では実行できたコンテンツでも、Flash Player 8 で実行すると、処理が中断され、警告のダイアログが表示されるケースがあります。これは、当該のコンテンツが潜在的に危険な操作を要求したと判断されたためで、Flash Player 8上でも従来のように閲覧できるようにするには対応が必要です。このドキュメントでは、Flash Player 8 の新しいセキュリティ機能の解説と、変更により影響を受けるローカルファイルを実行するための設定について説明を行います。
ローカルディスクから読み込まれたSWFに対して、Flash Player 8は、標準ではローカルとインターネット両方へアクセスすることを許可しません。これは、ローカルディスクに配置された悪意のあるSWFが、許可なく外部に情報を送信するといった状況が発生することを防ぐためです。通常、Flash Player 8では、ローカルSWFファイルの動作は、ローカルコンテンツのみのアクセスか、インターネットアクセスのみかのどちらかに制限されています。両方のリソースにアクセスが必要な場合には、該当するSWFファイルを、閲覧者の環境で、信頼できるファイルとして登録する必要があります。なお、この制限はどのバージョンでパブリッシュされたSWFファイルに対しても適用されます。
Flash Player 8 では、ローカルSWFファイルは、以下の3つのカテゴリーのいずれかに分類されます。

注:上の画面キャプチャは、英語版 Flash 8 です
ローカル SWF ファイルを3つ目の Trusted カテゴリーにするのは、以下のどちらかの方法で行うことができます。
# これはコメント行です C:\Program Files\Sample\swfs
Windows:<system>\Macromed\Flash\FlashPlayerTrust
(<system> の例 : C:\WINDOWS\system32)
Mac:<app support>/Macromedia/FlahsPlayerTrust
(<app support> の例 : /Library/Application Support)
2つ目の場所は、ユーザごとに固有の設定になります。
Windows<:app data>\Macromedia\Flash Player\#Security\FlashPlayerTrust
(<app data> の例 : C:\Documents and Settings\<user>\Application Data)
Mac:<app data> /Macromedia/Flash Player/#Security/FlashPlayerTrust
(<app data> の例 : /Users/ <user>/Library/Preferences)
全ての SWF ファイルは Flash Player のサンドボックス内で実行されます。インターネット上の SWF ファイルには、ドメインごとにそれぞれサンドボックスが用意され、他のドメインの SWF とは自由に通信できないようになっています。また、ローカルリソースへのアクセスも制限されています。ローカルの SWF ファイルについては、3つのカテゴリーごとに個別のサンドボックスが割り当てられます。これにより、異なるカテゴリーの SWF ファイル間の呼び出し、およびインターネットからロードされた SWF との通信はサンドボックスによって制限されています。 また、_global オブジェクトもカテゴリーごとに個別になります。従って、異なるカテゴリーの SWF ファイル間で _global を利用した変数の共有はできません。
Local-with-networking カテゴリーのローカル SWF ファイルは、専用の領域に共有オブジェクトを作成します。これは、他のカテゴリーのローカル SWF ファイルとは共有されないため、Untrusted カテゴリーのローカル SWF ファイルと連携して、ローカルのデータを外部に送信する手段としての使用はできないようになっています。一方、Untrusted カテゴリーと Trusted カテゴリーのSWFファイルは、Flash Player 7 以前のローカル SWF ファイルと領域を共有します。この仕様は、一見不思議に思えるかもしれませんが、外部にデータを送信できるのはTrusted カテゴリーの SWF ファイルだけであることと、Trusted カテゴリーのSWFファイルは自由なリソースアクセスを許されたファイルであることから理解できるかと思います。 なお、カメラやマイクの使用許可、ディスクの使用量などその他の設定は、全てのカテゴリーで共有されます。
Untrusted ローカルファイルは以下の操作を行うことが出来ません。
Untrusted ローカルファイルが上記のような処理を行おうとすると、処理が停止され、以下のようなダイアログが表示されます。

Local with networking カテゴリーのファイルは、ローカルファイルシステムへアクセスすることができません。
以下は実行できない処理の例です。
loadMovie(“file:///”), LoadVars.load (“file:///”)
また、UntrustedカテゴリーのSWFとのクロススクリプティングやローカル HTML 内のスクリプトの呼び出しも行うことができません。
一方、ネットワークアクセスについては、データ送信は自由にできるものの、サーバーからのデータの取得、あるいはネットワーク経由でロードされた SW Fとの通信には明示的な許可が必要になります。このために、新しく「*」(ワイルドカード、全てのドメインの意)によるアクセス許可が設定できるようになりました。Local with networking カテゴリーの SWF には、以下のように、操作に対する許可を与えることができます。
<allow-access-from domain=”*”/> System.security.allowDomain(“*”) を記述 LocalConnection.allowDomainメソッドが ‘localdomain‘ のドメインに対してtrueを返すように実装 allowScriptAccess = “always” を記述 (もしくはこのオプション自体を記述しない) なお、上記のように「*」によりドメインを指定すると、すべてのドメインからのアクセスを許可することになります。例えファイアーウォール内でも、重要なデータを管理しているサーバーにこの設定を行う際は、十分に安全性を検討してください。
Flash Player 8 のセキュリティ機能変更により、ローカルコンテンツがインターネットにアクセスしたり、JavaScript を呼び出そうとする度に警告が表示されるようになることがあります。この動作はセキュリティをより強化するためのものであり、必要な変更ではありますが、一方で閲覧するユーザにとっては煩わしいものでもあります。そのような場合には以下の方法で対応することが考えられます。
Flash Player 8のセキュリティ機能に関連する API についての詳細は以下のドキュメントに記述されています。
Security APIs Whitepaper* (PDF, 80K) http://www.macromedia.com/devnet/flashplayer/articles/fp8_security-related_apis.pdf
変更点を含む、Flash player 8 のセキュリティ機能全般についての情報は、以下のドキュメントをご参照ください。
Security Whitepaper (Clients)* (PDF, 888K)
http://www.macromedia.com/devnet/flashplayer/articles/flash_player_8_security.pdf