セキュリティ低下のサンプル
前述のとおり、Ajaxの実行環境では、原則としてJavaScriptの有効化が前提となっています。このため、JavaScriptによって収集可能なユーザー情報が、無意識なうちにサーバに転送されてしまう可能性も考えられます。つまり、悪意を持った開発者が作成したAjaxアプリケーションは、あなたのパソコンに送り込まれたスパイのように振る舞う「スパイウェア注1)」となっているかもしれません。スパイウェアには、さまざまな定義がありますが、ここでは以下のような振る舞いに着目して紹介することにします。
- 1) 情報漏えい……コンピュータ内のデータを勝手に転送
- 2) ユーザー操作監視……「キーロガー注2)」や「マウストラッカー注3)」
注1) スパイウェア:PCユーザーが気付かないうちに、ユーザーの情報を集め、特定の団体に送信するアプリケーション
注2) PCのキーボード入力を監視し記録するソフトウェア/ハードウェア
注3) キーロガーと同様に、ユーザーのマウス操作を監視して、それを記録するソフトウェア
参照記事「ネットの“あちら側”から迫り来るスパイウェアという見えない亡霊にどう対処する?」
クリップボードへのコピペ参照
まず、情報漏えいのサンプルとして、「クリップボード参照」について見ていきたいと思います。クリップボードとは、Windowsプラットフォーム上で「コピー&ペースト」の際に、データを一時的に保存しておくための格納領域です。Microsoft社のブラウザInternet Explorer(以下、IE)では、JavaScript(より厳密にいうとJScript)内からクリップボードデータを参照・更新することができます。このように書くと、非常に難しいプログラミングが必要なイメージを持たれる方も多いと思いますが、実はリスト1に示すたった1行のコードのみで実現できるのです(リスト1)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ここで注目すべきは、このプログラムで取得されるテキストデータが、Webブラウザ内でコピー&ペーストした値のみに限定されるのではなく、ほかのアプリケーションでコピーした情報も含まれるという点です。つまり、メールソフトやワープロソフトで文章を編集する際に、コピー&ペーストした値がクリップボードに保存されたまま上記プログラムを実行した場合、重要な情報がJavaScriptから参照されてしまいます。
これは、第三者に対する秘密情報の漏えいを引き起こす可能性があるということを示しています。上記の例では、サーバに転送する部分は実現していませんが、Ajaxを利用することによって、取得情報をWebサーバに送信するのは、全く難しいことではありません。さらに、詳しい説明は省略しますが、Ajaxを利用しなくても、取得情報を転送することは可能なのです。以上で、セキュリティ上のリスクについては、分かっていただけたでしょうか? 具体的なイメージまではわかないにしろ、少なくともデータを黙ってのぞき見られているような嫌な感覚は持っていただけたのではないかと思います。
次に、どうやってこのプログラムに対応すればよいのかについて、考えたいと思います。Webブラウザの起動前に、クリップボードの中身をクリアしてしまうという対応も考えられますが、完ぺきな対応とはいえないうえ、毎回繰り返して実行するのも非常に面倒です。そこで、より確実な方法を紹介します。このクリップボード参照機能は、IE限定の機能であるため、本機能を無効にするためのIEの設定変更手順を以下に示します。
設定変更手順
- [ツール]-[インターネットオプション]を選択 図1参照】
- [セキュリティ]タブを選択 図2参照】
- [レベルのカスタマイズ]ボタンを押下 図3参照】
- [スクリプトによる貼り付け処理の許可]の「無効にする」を選択 図4参照】
Copyright © ITmedia, Inc. All Rights Reserved.