第1回 Ajax技術の目に見えない通信内容をのぞいてみようでは、Ajaxの技術背景を解説しました。今回は、「セキュリティ」という観点でAjaxを見ていきたいと思います。
2回目の今回は、非常に幅広く、奥が深い「Ajaxの特徴に潜むセキュリティリスク」を、実際のサンプルアプリケーションの通信や、マウスの動きを動画で見ながら、理解しましょう。スパイウェアやキーロガーへの基本的な対策も解説します。
通常のWebアプリと異なるAjaxの特徴に潜むリスク
「Ajaxのセキュリティ」といきなりいっても、『Ajaxとはいえ、単なるWebブラウザで動作するアプリケーションなのだから、これまでのWebアプリケーションのセキュリティとあまり変わらないのでは?』と予想される方も多いでしょう。確かに、Webアプリケーションとして注意すべきセキュリティのポイントは、Ajaxにおいても共通して当てはまると考えて問題ありません。ただし、今回は、通常のWebアプリケーションとは異なり、Ajaxにおいて特徴的なポイントを取り上げ、説明を加えることにしたいと思います。
- 通信中のURIが表示されない
- 通信が任意のタイミングで発生する
- 通信の有無が確認しにくい
- JavaScriptが有効となっている
すでに、各ブラウザのAjax実装である「XMLHttpRequest」で対策が講じられているものもありますが、その前に上記の特徴に潜むセキュリティ上のリスクを確認しておきたいと思います。
通信中のURIが表示されない
皆さんは、どうやってWebアプリケーションの正当性(正しいサイト・コンテンツであるかどうか)を見分けているでしょうか? 恐らくほとんどの方が、Webブラウザの「アドレス欄」に表示されるアドレス(URI)を信じ、判断していると思います。
Ajaxの場合は、JavaScriptのプログラム内にアドレス情報が埋め込まれているため、単にアドレス欄を見ているだけでは、実際どのURIにアクセスしているかまでは正確に知ることができません。
通信が任意のタイミングで発生する
これまでのWebアプリケーションでは、例えば「リンク選択」「Submitボタンの押下」などのユーザー操作がトリガとなって画面遷移がスタートするため、サーバとの通信タイミングは、一目瞭然で非常にシンプルな形でした。
しかし、Ajaxでは、ユーザーが一切操作しない場合であっても、JavaScriptによって通信が起動されることがあり、無意識のうちにサーバ通信が発生することも考えられます。
通信の有無を確認しにくい
これまでのWebアプリケーションでは、Webブラウザがサーバと通信し、データをダウンロード中である場合、「ステータスバーに通信状態を表示」したり「ロゴアイコンがアニメーション」したりするため、通信の有無をユーザーが意識しやすい形になっています。
一方Ajaxでは、(Webブラウザの種別にもよりますが)ユーザーから通信状態が見えにくい(もしくは全く見えない)状態となります。
JavaScriptが有効になっている
これまでのWebアプリケーションでは、セキュリティ上の問題を発生するリスクが高まるという理由で、「JavaScript」は無効化することが推奨されてきていました。しかし、Ajaxの台頭によって「JavaScript」が復権を果たし、JavaScriptを有効とすることを求めるサイトも増えてきています。その裏側では、セキュリティ上のリスクにさらされている危険性があります。
ここまでご説明した内容は、「このような問題があるからAjaxは怖い」と恐怖心をあおるのが目的ではなく、セキュリティ上で注意すべきポイントがどこにあるのかを確認するためのものです。以降で、セキュリティが低下する事例や対策状況などについてご紹介したいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.