« [書評]デザインのデザイン | メイン | RIAコンソーシアム設立 »

Flashのクロスムービースクリプティング問題

FlashがWebサービス対応。でも、問題ありに書いたのだが、Flash Player 7より、外部リソースへのアクセス権限管理が変更になっている。この件を、もうすこし詳しくレポートする。


クロスムービースクリプティングって何?
先日も紹介した、MacromediaのMacromedia Flash Player 7 のセキュリティモデルの変更を読むと、「クロスムービースクリプティング」という言葉が出てくる。この言葉でGoogleしてみると、どうやらPlayer 7用に開発した言葉のようだ。リソースがまったくない。Flash Article :Security Changes in Macromedia Flash Player 7では、

Security Restrictions for Cross-Movie Scripting

Cross-movie scripting occurs when one Flash movie loads another Flash movie using MovieClipLoader.LoadClip, loadMovie, or loadMovieNum, and then one of the movies uses ActionScript to examine or modify variables in the other movie, or calls functions or methods in the other movie.

というわけで、クロスムービースクリプティングというのは、あるFlash Movieが、他のMovieを呼び出し(MovieClipLoader.LoadClip, loadMovie, loadMovieNum)して、そのMovieを操作(変数の取得、追加、あるいはメソッドの呼び出しなど)することを指すと。

By default, cross-movie scripting is only permitted with movies that come from the same domain. Movies are always allowed to load other movies from anywhere they wish but security restrictions may prevent those movies from communicating with each other.

で、デフォルトでは、同じドメインから来る場合にだけ、これを許可する。

Cross-movie scripting also occurs when an HTML page uses JavaScript (or another scripting language) to script a Macromedia Flash movie - for example, by calling SetVariable or GetVariable. Macromedia Flash Player only permits this operation when the HTML page is from the same domain as the Macromedia Flash movie it attempts to script.

また、JavaScriptを利用して、SetVariableやGetVariableを行うことも含まれるので、同じドメインでないとだめ。


クロスムービースクリプティングを許すと、高レベルの詐称が可能に
クロスムービースクリプティングの問題点は、HTMLで言うところの、Frameを用いた詐称だ。例えば、Flashを用いたECサイトがあったとして、そのMoviehを悪意を持ったサイトがLoadできると、その悪意あるサイトに、ECサイトのMovieが表示されてしまう。しかも、Frameと異なり見破ることは不可能だ。Frameであれば右クリックでプロパティをみれば分かるが、Flashでは確認の手段がないためだ。これを利用して、顧客のデータ収集や、場合によって、ECサイトへの不正なアクセスも可能になってしまう。
もしくは、他にもいろいろな問題が考えられるのかもしれないが、僕がすぐに思いついたのは、この問題だ。


でも、Webサービスに適用するのはいかがなものか
これは、Movieを利用する際に発生する可能性がある問題だ。とはいえ、これをそのままWebサービスにも適用するのはいかがなものか。おかげで、Movieから、AmazonやGoogleなどの公的なサービスにアクセスすることができない。
そもそも、Webサービスは、誰もが利用できることが前提であり、サービスを提供する側がセキュリティを確保するというモデルになっている。それを無視してまで、Webサービスにこのルールを適用するのは、はっきり言って変だ。
また、このセキュリティを回避し、アクセスを可能にする方法として、Cross Domein Policyファイルが用意されている。しかし、以下のようなXMLファイルを、ルートに置くことしかできない。

<cross-domain-policy>
  <allow-access-from domain="" />
</cross-domain-policy>

ようは、そのドメインのすべてのリソースは、一括でこのルールが適用されてしまう。クロスムービースクリプティングの問題があるから、Webサービスはいいけど、Movieはだめという指定ができるべきだ。せめて、「このURLだけ」という指定ができれば、配置するURLを換えることで対応できる。なぜ、ドメイン名だけに限定されるのか、まったく意味が分からない。

なお、Flashエンジニアは、Security Changes in Macromedia Flash Player 7 は、すべて目を通したほうが良いと思われる。他にも、データのロード、ローカルコネクション、シェアドオブジェクトなど、すべてのアクセスに変更が加わっている。これらを用いて処理を行っていると、動かない、もしくは「アクセス確認」のダイヤログが表示されてしまう。


どうなんだね、Macromediaさん
なんにせよ、セキュリティを厳しくしたという割には、あまりにもいい加減な対応ではないだろうか。もうちょっと、良いモデルを考えてから対応しても良かったはずだ。それに、あまりにも情報が少なく、記述が統一されていない(特に、日本語)。こういった点を改善していかないと、Flashの適用範囲が広がらない。会社的な問題なのかなぁ?


参考
laughing.stock さんで、この問題を試されたレポートがエントリされています。Flash Player 7のセキュリティ変更に関する雑感や、ポリシーファイル(実験)です。

トラックバック

このエントリーのトラックバックURL:
http://www.arclamp.jp/mt33/mt-tracback.cgi/1252

この一覧は、次のエントリーを参照しています: Flashのクロスムービースクリプティング問題:

» Flash2004MX:セキュリティ関係の変更点 送信元 Dragonfly's blog
アークランプ: Flashのクロスムービースクリプティング問題 ちょっと気になる内容だったのでメモ。 余裕が出来たら自分でも調べてみよう。... [詳しくはこちら]

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2003年11月04日 21:23に投稿されたエントリーのページです。

ひとつ前の投稿は「[書評]デザインのデザイン」です。

次の投稿は「RIAコンソーシアム設立」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type