Ajaxのセキュリティは、各ブラウザのAjax実装である「XMLHttpRequest」で対策が行われています。それらのうち、今回は「SSLによる暗号通信」と「クロスドメインの制限」についてご紹介したいと思います。
通常のWebページへのアクセスと同様、AjaxにおいてもSSLを利用した暗号通信を行い、ネットワーク上のデータ盗聴に対して備えることができます。Ajaxのプログラミング上では、URIのプロトコル「HTTP」を「HTTPS」に変更するのみでSSLによる暗号通信となります。しかし、Ajaxアプリケーションのロード後に、プロトコルを「HTTP」から「HTTPS」、もしくは「HTTPS」から「HTTP」へといった変更はできません。
Ajaxアプリケーションは、A)HTML部/B)JavaScript部/C)XML部(データ部)という大きく3つのリソースから構成されます。それらのサーバへの配備方法を組み合わせとして示したのが図9となります。Ajaxの動作原理からいえば、1〜5のすべてのパターンで動作してもおかしくはありませんが、Ajax対応のWebブラウザ実装で共通して実際動作する形態は「1のみ」となります。これは、上記3つのリソースを別サーバと通信する場合に、セキュリティ上の信頼性が低下するため、制限が掛けられているからです。この制約が、「クロスドメイン制限」です。
ID | Sever 1 | Server 2 | Server 3 |
---|---|---|---|
1 | HTML / JS / XML | -- | -- |
2 | HTML | JS / XML | -- |
3 | HTML | JS | XML |
4 | HTML / JS | XML | -- |
5 | HTML / XML | JS | -- |
【凡例】 HTML : JavaScriptのロード元になるHTMLファイル JS : XMLHttpRequest(XHR)を生成するJavaScriptファイル XML : XHRが入出力するデータ群(XMLとは限らない) 図9 クロスドメインの組み合わせパターン |
今回は、「セキュリティ」という言葉に注目して、Ajaxおよび関連技術の実態を確認してきました。Ajaxは、ユーザーの利便性向上のために利用すれば、効果的なWebアプリケーションを作成することができます。一方、悪意を持った開発者がユーザーの各種情報を収集するために利用する可能性も否定できません。このような場合に収集されるデータは、「個人のプライバシー」に直結する情報かどうかまでは断定できません。
しかし、「ユーザーが無意識のうちにデータ収集されてしまう」ということは、不用意に個人情報にアクセスされる危険性を含んでいると考えられます。必要以上に警戒する必要もないと思いますが、現時点では各ユーザーがリスクを意識するのがスタート地点だと考えています。
次回以降の記事では、Ajaxベースの開発に利用できるフレームワークを紹介していきたいと考えていますので、ぜひご期待ください。
株式会社NTTデータ
技術開発本部 ソフトウェア工学推進センタ
シニアエキスパート
木村 利幸
同社の研究開発部門にて、国内でインターネットが本格的に普及する以前から、Webシステム開発を数多く手掛ける。近年では、JAX-WS (Java API for XML-Based Web Services) 2.0やJAXB(Java Architecture for XML Binding) 2.0のJava言語仕様の策定に関与する傍ら、アパッチソフトウェア財団の開発メンバの一員(Committer)として、オープンソースのWebサービス・ミドルウェア「Apache Axis」の開発にも携わる。そのほか、Java Technology Conference 2004(JTC 2004)、J2EEカンファレンス、オープンソースカンファレンス、JavaOne Tokyo 2005などでの講演を実施。
Copyright © ITmedia, Inc. All Rights Reserved.