Column
Ajaxのセキュリティ――悪用防止の5つの対策
Webアプリケーション内でAjaxを利用すると、その全体的な複雑性は大幅に増大し、サーバ側の各機能が攻撃者にとって新たなターゲットになる。こういった脅威を軽減するための5つの対策を示す。
グーグルのGmailは最近、Ajax(Asynchronous JavaScript and XML)の可能性をめぐってWeb開発者コミュニティーの間で関心を集めた。Ajaxは、ブラウザの機能を拡張するために組み合わせて用いられる技術セットであり、ユーザーとアプリケーションがコンテンツにアクセスし、それを共有、編集することを可能にする。このWeb開発手法は特に新しいものではないが、Web 2.0(次世代のWebサービス)の一部と見なされている。Ajaxはすべてのインターネットベースのサービスと同様、独自のセキュリティ問題を抱えている。Ajaxの仕組み、それを悪用する手口、そして攻撃を防ぐための対策をみることにしよう。
Ajaxの仕組み
Ajaxアプリケーションは基本的に、ユーザーのマシン上で実行される。これらのアプリケーションは、Webページ全体をリロードしなくても済むように、ユーザーに意識されることなくサーバと少量のデータをやりとりする。これにより、Webページに機能が付加され、応答性が高くなったように感じられる(その例としては、Gmailのリアルタイムスペルチェック機能などがある)。Ajaxは、CSS(Cascading Style Sheet)、DOM(Document Object Model)、DHTML(Dynamic HTML)などの技術を使用するが、その主要な原動力となっているのはJavaScriptのXMLHttpRequestオブジェクトである。XMLHttpRequestは陰で非同期に動作し、ユーザーのキー入力やタイマーなどのイベントによって起動するように設定することが可能だ。これはつまり、Webページ上のJavaScriptコードがユーザーから独立してWebサーバに接続し、クロスドメインコンテンツを取り込めることを意味する。
ハッカーがAjaxを悪用する方法
Webアプリケーションは一般に、同じオリジン(配信元)ポリシーを使用するため、ベースページを配信したサーバだけに接続するように制限されている。しかしこれはAjaxスクリプトには当てはまらないので、悪質なスクリプトや改ざんされたスクリプトは、cookieに保存されたデータを盗み出したり、配信元サーバに直接アクセスしたりすることができるのだ。例えば、攻撃者はクロスサイトスクリプティングの脆弱性をひそかに悪用する可能性がある。Ajaxを利用したアプリケーションは、複数のリクエストをバックグラウンドで実行でき、しかもユーザーには普通の機能のように見えるからだ。
Ajaxの悪用を防ぐには
Webアプリケーション内でAjaxを利用すると、その全体的な複雑性は大幅に増大し、サーバ側の各機能が攻撃者にとって新たなターゲットになる。こういった脅威を軽減するための5つの対策を以下に示す。
1. クライアントを信用しない
クライアントを決して信用してはならないというコーディングの基本原則はAjaxにも当てはまり、セキュリティコントロールはすべてサーバに実装すべきであり、決してユーザーがコントロールできるようにしてはならない。
2. アプリケーションは単純に
最初はアプリケーションを単純なものにしておく。Ajaxコールを削減し、簡素化すれば、セキュリティテストの際に、Webページまたはアプリケーションによって生成される可能性があるすべてのタイプのリクエストを評価するのが容易になる。
3. アプリケーションの動作を文書化する
アプリケーションがサーバとどのように通信し、サーバから受け取る応答をどう処理するかに関する説明を文書化する。センシティブな情報用のSLLコネクションなどの問題も含めること。
4. オンライン化前に必ずセキュリティテストを
アプリケーションをオンラインに移行する前に、セキュリティテストを完了する。テストでは、アクセスコントロールと入力内容の検証にかかわる欠陥のチェックを特に重点を置く。
5. 常に情報収集を
Web Application Security Projectのサイトにアクセスし、セキュアなAjaxアプリケーションの開発に役立つ情報を得る。
忘れてはならないのは、XMLHttpRequestのセキュリティモデルは、長期的にはWe b2.0アプリケーションで生き残れないということだ。このため、クロスドメイン問題を解決する可能性がある新たなソリューションの動向を常に注視することが重要である。例えば、JSONRequest(JavaScript Object Notation Request)は、リクエスト時にcookieのやりとりを許可しないのに対し、アドビのFlex ActionScriptでは、どのサイトがスクリプトでクロスドメイン操作を可能にするかをサーバ側でコントロールできるようにしている。
最後に、アプリケーションのセキュリティ評価を自動化するツールを探しているのであれば、Ajaxを使用するWebアプリケーションをサポートするものを選択すべきだ。こういったツールとしては、センジックのHailstormやSPIダイナミクスのWebInspectなどがある。
本稿筆者のマイケル・コッブ氏は、データセキュリティおよび解析に関するトレーニングやサポートを提供するITコンサルティング会社、コッブウェブアプリケーションズの創業者兼マネージングディレクター。CISSP-ISSAP(公認情報システムセキュリティプロフェッショナル―情報システムセキュリティアーキテクチャプロフェッショナル)の資格を持つ。共著書として「IIS Security」があり、主要なIT出版物に多くの技術記事を寄稿している。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
新着ホワイトペーパー PR
-
技術文書・技術解説
[ネットアップ合同会社] 金融庁ガイドラインから読み解く、「次世代データレジリエンス」の在り方 -
製品資料
[ネットアップ合同会社] 製造DXでデータ活用ニーズが拡大 分散データ活用とAI活用をどう実践する? -
製品レビュー
[ネットアップ合同会社] AIで使いたいデータが内外に点在、研究におけるAI活用を阻む“真の課題”とは -
製品資料
[株式会社kickflow] 稟議・承認作業の「脱オンプレ・脱Excel・ペーパーレス化」を一気に進める方法 -
製品レビュー
[株式会社kickflow] ワークフローシステムのクラウド化 “みんなが不幸になる”事態を避けるには?
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「契約業務のAI活用」に関するアンケート
-
2
なぜ人はいるのにDXが進まない? ライオンも直面した“老害”レガシーシステム
-
3
半数がブルーカラー転向を視野に? ベテランエンジニアを追い込む“54歳の壁”
-
4
「データ活用とAI活用の実態」に関するアンケート
-
5
PHP脆弱性「PHP2Shell」で2260万件に影響 情シスの緊急チェックリスト
-
6
「年1回の外部診断」が限界に 大手小売が脆弱性管理を内製化・一元化した方法
-
7
障害対応に「余裕なし」が9割超 運用担当316人調査で見えた「運用赤字」
-
8
「Windows」の不要なファイルを安全に消して容量を空ける方法
-
9
被害額は過去最高額 それでも「サイバー犯罪者が捕まらない」3つの理由
-
10
IT製品の導入に関するアンケート「セキュリティ」編
ホワイトペーパーランキング PR
-
1
AI駆動攻撃にどう対抗する? 超速の攻撃からエンドポイントを保護する方法
-
2
2026年のサイバーセキュリティには何が必要か? 最新データに学ぶ傾向と対策
-
3
経験豊富な即戦力人材に直接アプローチできる、「攻めの採用」への転換術
-
4
「IT史に名を残すシステム障害」8選
-
5
最速72分でデータが流出? 最新の脅威トレンドや侵入手法から分かった防衛策
-
6
10G回線の真価をフルに享受するには? 導入前にチェックしたいポイント
-
7
AI駆動開発のスピードと安全性を両立 「品質・セキュリティ管理」の実践ガイド
-
8
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
-
9
「標的型攻撃メール」事例・サンプル集
-
10
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー