本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

Ajax のセキュリティー・ツール

Ajax アプリケーションに伴うセキュリティー問題を軽減、解決するためのリソース

Judith Myerson, Systems Engineer and Architect
Judith M. Myerson は、システム・アーキテクト兼システム・エンジニアです。オープンソース・ツール、ミドルウェア・テクノロジー、企業単位のシステム、データベース・テクノロジー、アプリケーション開発、ネットワーク管理、セキュリティー、パフォーマンス管理、RFID テクノロジー、そしてプロジェクト管理などの分野を得意としています。

概要: 悪意のあるハッカーは、Ajax アプリケーションに潜むいくつかの脆弱性をついて、アプリケーションを台無しにしてしまう恐れがあります。個人情報の盗難、保護されていない機密情報へのアクセス、ブラウザーのクラッシュ、Web アプリケーションの改変、DoS (Denial of Service: サービス拒否) の攻撃などは、Ajax アプリケーションに起こり得る惨事のほんの数例です。開発者は、Ajax 機能をアプリケーションに組み込むときに、このような事態を防ぐ対策を立てなければなりません。この記事では developerWorks でお馴染みの著者、Judith Myerson が Firefox のツールやアドオンをはじめとするアプリケーションのセキュリティー強化ツールを提案します。これらのツールを使って、Ajax アプリケーションのセキュリティー問題を軽減、あるいは解決してください。

日付:  2008年 5月 27日
レベル:  初級 この記事の原文:  英語
アクティビティー: 1627 ビュー
お気軽にご意見・ご感想をお寄せください: 


はじめに

私が前回書いた developerWorks の記事、「Ajax のパフォーマンス・ツール」では、ディスクの入出力問題を突き止められるように HTTP リクエストの数を減らすこと、ネットワーク・トラフィックを分析すること、過剰な呼び出しを検出すること、メモリー使用量を抑えることなど、パフォーマンスの問題を解決する方法について説明しました。

developerWorks の Ajax リソース・センター
Ajax resource center にアクセスしてください。ここは、Ajax アプリケーションを開発するための無料のツールやコード、そして情報が用意されたワンストップ・ショップです。また、Ajax のエキスパートである Jack Herrington がホストする活発な Ajax コミュニティー・フォーラムは、あなたが今まさに探している答えを持っているかもしれない開発者仲間と交流する手段となります。

今回の記事で説明するのは、Ajax のセキュリティー・ツールです。これらのツールは、SQL インジェクションとクロスサイト・スクリプティングに対する脆弱性のスキャン、マスターパスワードの設定、そしてクラッシュ後の全ウィンドウ状態の復元に使用します。アプリケーション内でリンクされている Web サイトがブロック・リストに載っていないことを確実にしたり、ハッカーがブラウザーの機能を改変したり、Web アプリケーションを改ざんして目的の悪事を実現できないようにするためのツールとユーティリティーを紹介します。この記事ではユーティリティーを 3 つのタイプに分け、アプリケーションのセキュリティーを強化するためのツール、Firefox ツール、そして Firefox アドオンの順に説明します。

セキュリティー強化ツール

このセクションでは、チャットとブログをセキュアにするための aSSL (Ajax Secure Service Layer)、ソース・コードと画像ファイルを盗む目的でアクセスする訪問者から Ajax Web ページを保護するための HTMLProctector、そして SQL インジェクションとクロスサイト・スクリプティングが原因の問題をスキャンして修正するための Acunetix Web Vulnerability Scanner を紹介します。さらに Ajax ページ上から他の Web サイトにリンクする前に、そのリンクが Web サイトのブロック・リストに載っていないことを確実にするための AjaxDNS ツール、そしてあらゆる IP スプーフィング手法 (「参考文献」を参照) を検出するために使用するとよい、オープンソースのコマンドライン・アンチスプーフィング検出ユーティリティー Despoof も紹介します。

aSSL

aSSL は、MIT ライセンスの元で配布されるオープンソースのライブラリーです。このライブラリーは SSL の Ajax バージョンで、HTTPS は含まれていません。HTTP はセキュアでないことから、aSSL では SSL のようにブラウザーで SSL 証明書をチェックすることができません。代わりに aSSL は RSA アルゴリズムを使用して、クライアントが 1 つ以上のサーバーと 128 ビットのランダムな鍵をネゴシエーションできるようにします。接続が確立されると、この Ajax ツールは AES アルゴリズムによってデータの送受信を行います。チャットやブログなど、ファイアウォールを介してアクセスされるけれどもさほど重要性の高くないサイトには SSL 証明書は必要ないため、これらのサイトをセキュアにするには aSSL が適しています。

aSSL がそのプロセスを開始するのは、ブラウザーがサーバーを呼び出した時点です。呼び出しを受け取ったサーバーは、サーバーの RSA モジュラスを返します。するとブラウザーは 128 ビットのランダムな交換鍵を生成し、サーバーの公開鍵を使って暗号化した上で、その鍵をサーバーに渡します。暗号化された交換鍵を受け取ったサーバーは、サーバーの秘密鍵で暗号化を解除します。最後に、ブラウザーがセッション継続時間を受け取り、接続を維持する期間をタイムアウトによって設定します。

HTMLProtector

ファイアウォールの枠を超えたこのツールは、サーバー上で実行する Web サイトのコンテンツを保護する手段となります。このツールでは、クライアント・サイドで保護しなければならない対象を決めてから、保護されたWeb ページをサーバーに送信することができます。HTMLProtector の利点は以下のとおりです。

  • 訪問者がソース・コードを表示したり、出力できないようにします。
  • ハッカーがスパム・メールを送信するために使用する恐れのある E メール・アドレスを、スパム・ロボットがページから抽出することを防ぎます。
  • 訪問者が自動ダウンロード・プログラムを使用して Web サイト全体をハード・ディスクにダウンロードすることを阻止します。
  • 訪問者が Web サイトで E メールへのリンクにマウスを重ねたときに、リンクがステータス・バーに表示されないようにします。ページの BODY セクションまたは HEADER セクションのいずれか一方だけを保護することも、両方のセクションを保護することも可能です。

しかも HTMLProtector では、ページをパスワードで保護することもできます。ただし、ページへのアクセスを許可する訪問者には必ず、アクセスを許可しない訪問者から推測されにくいパスワードを提供してください。アクセス許可のない訪問者が不正なパスワードを使ってアクセスしようとした場合の措置としては、空白ページを表示する、別の URL にリダイレクトする、または前のページを再表示するという方法を選択することができます。また、ブラウザーがページをローカル・キャッシュに入れられないようにして、ますますハッカーのやる気をそぐという手もあります。

AWVS (Acunetix Web Vulnerability Scanner) Free Edition

AWVS Free Edition は、アプリケーション内の SQL インジェクションとクロスサイト・スクリプティングに対する脆弱性を調べ、このようなスクリプトが実行される前に問題を修正するツールです (SQL インジェクションについては、ハッカーがその脆弱性を利用して SQL コマンドを変更し、データベース内のデータにアクセスする可能性があります。クロスサイト・スクリプティングの攻撃では、ハッカーが訪問者のブラウザーで悪意のあるスクリプトを埋め込み、それからそのスクリプトを実行してデータを集めることができます)。

AWVS Free Edition はさらに Web サイトでクロールされたコンテンツに対して Google のハッキング・データベース・クエリーを起動して、機密データ、あるいは不正利用が可能なターゲットを特定します。クエリーの結果によってデータが不正に利用可能であることがわかった場合には、必ず問題を修正して、検索エンジン・ハッカーがそのデータを見つけて悪用できないようにしてください (必ず、本番環境でなくテスト環境テストしてください)。

Acunetix には、Web アプリケーションのセキュリティー・チェックを微調整する際に役立つ 3 つの高度な侵入テスト・ツール、HTTP Editor、HTTP Sniffer、そして HTTP Fuzzer があります。以下に、それぞれのツールでテスターが実行可能な内容を説明します。

ツール説明
HTTP EditorHTTP/HTTPS リクエストを作成し、Web サーバーのレスポンスを分析します。
HTTP Snifferすべての HTTP/HTTPS トラフィックのインターセプト、ロギング、および変更を行い、Web アプリケーションによって送信されたすべてのデータを明らかにします。
HTTP Fuzzerバッファー・オーバーフローおよび入力の検証を目的とした高度なテストを行います。ルール・ビルダーによる数千の入力変数テストを行います。

スキャナー・ツールを使用することで、ハッカーが以下のような悪事を行おうとする気をくじかせたり、あるいはその目的の達成を阻止することができます。

  • 個人情報のの盗難
  • 機密情報または部外秘情報へのアクセス
  • 有料コンテンツへの無料アクセス
  • ブラウザー機能の改変
  • Web アプリケーションの改ざん
  • DoS 攻撃
  • 公けでの個人または企業に対する中傷

AjaxDNS Tools

AjaxDNS ツールは、Ajax アプリケーションのなかでリンクされている Web サイトのセキュリティーを素早くチェックするのに重宝します。以下に、これらのツールとそれぞれのツールで実行可能な内容とを併せてリストに記載します。

ツール説明
WhoisSearchドメイン名の所有者に関する情報を取得します (この情報の表示が許可されている場合)。
RBL SearchRBL (Reputation and Block Lists) を実行しているサーバーで Web サイトを検索し、Ajax アプリケーション内でリンクされているサイトがこれらのリストに含まれていないことを確認します。
Pingパケットがホストに到達するまでの所要時間に関する情報を取得します。ping がホストのファイアウォールを通過できない場合、そのホストには到達できません。

コマンドライン・オプションを利用するには、Microsoft® から Whois をダウンロードします。Linux®/UNIX® システムでは who コマンドを使用してください。

Despoof

もう 1 つのセキュリティー・ツールである Despoof はネットワークで Ajax アプリケーションを流出させるために使われる偽造パケットを検出するために使うことができます。偽造が疑われるパケットを受信した場合、パケットの実際の TTL (Time-to-Live) を判別して、受信したパケットの TTL と比べてください。

Despoof ツールをインストールする前に、お使いのマシンに libpcap 0.4 と libnet 1.0 (または最新バージョン) の両方があることを確認してください。その上で、リスト 1 のコマンドを使用してファイルを解凍し、despoof ディレクトリーに移動して Despoof をインストールします。


リスト 1. Despoof のインストール
                
#tar xvzf despoof*tgz
#cd despoof*
#gcc 'libnet-config-defines' -o despoof despoof.c -lnet -lpca 

Despoof を実行するにはリスト 2 のコマンドを入力します。


リスト 2. Despoof の実行
                
#. /despoof -h


Firefox ツール

Firefox ツールでは、マスターパスワードとプライバシー・オプションを設定することができます。

マスターパスワードの設定方法

保存済みパスワード、ならびに保存されている Web フォームのデータと秘密鍵にアクセスするにはマスターパスワードを入力しなければなりません。新しいマスターパスワードを割り当てるには、以下のステップに従ってください。

  1. 「ツール」メニューの下にあるオプションをクリックします。
  2. オプション」ダイアログのセキュリティ・タブにある「パスワード」セクションを表示します。
  3. 「マスターパスワードを使用」チェック・ボックスにチェック・マークを付けます。
  4. 「マスターパスワードの変更」ダイアログで新しいパスワードを入力し、確認のためにもう 1 度そのパスワードを入力します。

新しいパスワードの各文字を入力するごとに、「パスワード品質レベル」のバーに緑のブロックが追加されていくはずです。パスワードが推測しにくいものであればあるほど、バーがブロックで埋められる範囲は大きくなっていきます。バー全体が緑のブロックで埋まった場合、そのパスワードは最強だということになります。

入力されたパスワードが一致していることをシステムが確認すると、メッセージ・ボックスに「マスターパスワードが正常に変更されました。」というメッセージが表示されます (マスターパスワードは必ず覚えておいてください。マスターパスワードを忘れてしまうと、そのパスワードによって保護されている一切の情報にアクセスできなくなります)。

プライバシー・オプションの設定方法

次に、cookie およびプライバシー情報の消去の例外設定について説明します。「ツール」メニューの下にある「オプション」をクリックし、「プライバシー」タブにアクセスしてください。Cookie セクションでは、すべてのサイトから送られてきた cookie を受け入れことも、あるいは cookie を受け入れるサイトを制限することもできます。「例外サイト」をクリックして、cookie の使用を常に許可するサイト、許可しないサイトを指定します。管理対象とするサイトの正確なアドレスを入力し、「不許可」、「現在のセッションのみ」、または「許可」のいずれかをクリックしてください。設定が完了したら、「閉じる」ボタンをクリックします。

Firefox にサイトからの cookie を受け入れさせる場合、cookie の保存期間を選択できます。cookies の有効期限が切れるまで、または Firefox を終了するまで保存するように設定するか、あるいは Firefox を開くたびに毎回、保存期間を確認させるようにすることもできます。

有効期限を設定するには、「履歴」セクションを使用します。デフォルトでは、「表示したページを 20 日分記憶する」設定にされたチェック・ボックスにチェック・マークが付けられています。この日数が長すぎる、あるいは短すぎると思う場合には、変更してください。


Firefox アドオン

極めて役に立つ Firefox 拡張機能として挙げられるのは、セッションマネージャ (クラッシュ後にすべてのウィンドウ状態を復元)、Homeland Security Threat Level (ステータスバーに現行のレベルを表示)、WiKID (パスワードと証明書の代わりとして機能) の3 つです。

セッションマネージャ

セッションマネージャはすべてのウィンドウの状態を保存し、クラッシュ後に起動するときに要求に応じて、または自動的にウィンドウ状態を復元します。そのおかげで、ウィンドウやタブを誤って閉じてしまったとしても、再オープンすることができます。セッションマネージャは、セッション・ファイルおよび閉じられたウィンドウ・ファイルに保存されるセッション・データの暗号化にも対応します。この機能を有効にする方法は以下のとおりです。

  1. ツール」から「セッションマネージャ」を選択します。
  2. セッションマネージャオプション」をクリックします。
  3. 「詳細」タブの「暗号化」セクションで、「保存しているセッションと閉じたウィンドウのデータを暗号化する」チェック・ボックスにチェック・マークを付けます。マスターパスワードを設定している場合、セッションの暗号化または暗号化解除をするにはマスターパスワードを入力しなければならず、そのための画面が表示されます。
  4. OK をクリックします。

Firefox が異常終了した後、Firefox を再起動するときには最後のセッションを復元するかどうかを尋ねるメッセージが表示されます。セッションマネージャは、現行のブラウズ・セッションだけでなく、セッションを選択して復元するというオプションも用意しています。セッションマネージャオプション・ダイアログのセッションストア・タブで Crash Recovery を有効にする設定を無効にしたほうがよい場合はまず考えられません。

この拡張機能は SessionSaver および Tab Mix Plus のセッション・マネージャーに置き換わるもので、この2 つを合わせた場合よりも多くのデータを保存します。セッション関連の拡張機能を複数インストールすることは推奨されていません。

Homeland Security Threat Levels

この拡張機能は、米国国内でテロが起こる危険性を 5 段階で示す U.S. Homeland Security Threat Level の現在のレベル (Severe、High、Elevated、Guarded、Low) をステータス・バーにアイコンとして表示し、脅威レベルがひと目でわかるようにします。

WiKID

WiKID Strong Authentication System は商用/オープンソースのソフトウェアをベースとした 2 要素認証ソリューションです。WiKID はトークン、証明書、パスワードに代わるセキュアな手段となるように設計されています。この Firefox 拡張機能はセマンティック Web 技術を用いて自動的にユーザーのワンタイム・パスワードを入力します。WiKID トークンは複数の WiKID ドメインをサポートするため、トークン「キー・チェーン」の必要はありません。


まとめ

Ajax アプリケーションをサーバー、クライアント・サイド、あるいはネットワークのどれに配置するかに関わらず、Ajax アプリケーションのセキュリティーを強化するための計画を前もって行う際には、この記事を参考にしてください。セキュリティーは開発者だけでなく、テスター、システム管理者、そして潜在するユーザーにとっても重要です。発生し得るセキュリティーの問題を認識し、問題が発生する前に解決することが、開発チームとユーザー両方の円滑なエクスペリエンスを実現する手段となります。


参考文献

学ぶために

  • Judith M. Myerson の連載記事「エンタープライズ規模の SOA における Web サービスの取り扱い」では、エンタープライズ規模の SOA ではどのように Web サービスを扱うかを説明しています。

  • aSSLHTML ProtectorAjaxDNS ツールDespoof の詳細を学んでください。

  • Mozilla Firefox の詳細情報を入手してください。

  • Ajax のツールについて詳しく知りたいという方は、「Ajax のツールと手法の調査」 (Gal Shachor、Yoav Rubin、Shmulik London、Shmuel Kallner 共著、developerWorks、2007年7月) を読んでください。

  • Judith M. Myerson の著書『The Complete Book of Middleware』は、システム設計の基本原理と優先順位に焦点を当て、e-commerce と分散統合システムの興隆によって生じた新しい要件について強調しています。

  • Enterprise Systems Integration, Second Edition』を読んで、システム統合を成功させるためのビジネス的洞察力と技術ノウハウを手に入れてください。

  • ビジネス・プロセス、運用と実装の問題、リスク、脆弱性、そしてセキュリティーとプライバシーについて説明している「RFID in the Supply Chain」は、組織の将来に役立つはずです。

  • テクノロジー・ブックストアにアクセスして、この記事で紹介した技術やその他の技術に関する本を探してください。

  • Ajax resource center にアクセスしてください。ここには記事、チュートリアル、ディスカッション・フォーラム、ブログ、ウィキ、イベント、そしてニュースなど、Ajax プログラミング・モデルに関する情報が豊富に用意されており、ワンストップ・ショップになっています。新しい情報もここに記載されます。

製品や技術を入手するために

議論するために

著者について

Judith M. Myerson は、システム・アーキテクト兼システム・エンジニアです。オープンソース・ツール、ミドルウェア・テクノロジー、企業単位のシステム、データベース・テクノロジー、アプリケーション開発、ネットワーク管理、セキュリティー、パフォーマンス管理、RFID テクノロジー、そしてプロジェクト管理などの分野を得意としています。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Web development
ArticleID=316191
ArticleTitle=Ajax のセキュリティー・ツール
publish-date=05272008
author1-email=jmyerson@bellatlantic.net
author1-email-cc=

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。