(57)【特許請求の範囲】
【請求項１】
クライアントのリクエストに応答してサーバが送信したレスポンスに対する操作ログを記録するロギング・システムであって、前記ロギング・システムは１つ又は複数のクライアント及び１つ又は複数のサーバに接続されており、
前記ロギング・システムは、
前記サーバから前記クライアントに送信された前記レスポンスを受信するレスポンス受信部であって、前記レスポンスは前記クライアントにデータ入力を指示するコンテンツを含む、前記レスポンス受信部と、
前記受信したレスポンスを解析し、操作ログを記録するか否かを判断するレスポンス解析部と、
前記コンテンツを識別するための識別子を生成し、当該識別子を前記コンテンツに埋め込む識別子埋め込み部と、
前記識別子を埋め込んだ前記レスポンスを前記クライアントに送信するレスポンス送信部と、
前記コンテンツと前記識別子とを関連づけて記録するロギング・データベースと、
前記レスポンスに対して前記クライアントから前記サーバに送信されたリクエストを受信するリクエスト受信部であって、前記リクエストは前記コンテンツへの入力データと前記識別子とを含む、前記リクエスト受信部と、
前記リクエストから取り出した前記入力データを、前記リクエストから取り出した前記識別子を使用して前記ロギング・データベースから検索されたコンテンツと合成して前記ロギング・データベースに記録するコンテンツ合成部と
を備えている、前記ロギング・システム。
【請求項２】
前記レスポンス解析部は、前記レスポンスが入力フォームを含むこと、特定のＵＲＬであること、特定のＨＴＴＰリクエスト・パラメータが含まれていること、ＨＴＴＰレスポンスに特定の文字列が含まれていること、又は、特定のユーザにアドレスされていること、を条件に、操作ログを記録することを決定する、請求項１に記載のロギング・システム。
【請求項３】
前記コンテンツはＨＴＭＬで作成された入力フォームであり、前記識別子が当該入力フォームのｈｉｄｄｅｎフィールドに埋め込まれる、請求項１又は２に記載のロギング・システム。
【請求項４】
前記識別子は、固定文字列、乱数文字列、ユーザＩＤ、時刻、ＵＲＬ、コンテンツ名、パラメータ名のうちの１つまたは複数の組み合わせからなる文字列、またはそれらをハッシュ化もしくは暗号化することにより得られた文字列、あるいはそれらを組み合わせたものにより生成される、請求項１〜３のいずれか一項に記載のロギング・システム。
【請求項５】
前記リクエストから取り出した前記識別子が前記ロギング・データベースに見つからなかった場合、当該リクエストは不正なリクエストであると判断して所定の処理を行う不正リクエスト処理部をさらに備えている、請求項１〜４のいずれか一項に記載のロギング・システム。
【請求項６】
前記ロギング・データベースは、前記コンテンツと関連づけて、セッションＩＤ、クライアントＩＰアドレス、識別済みのユーザＩＤ、送信ボタンに対応したＵＲＬのうちの１つまたは複数をさらに記録し、これらの情報が前記クライアントから受信した前記リクエストのものと一致しない場合、当該リクエストは不正なリクエストであると判断して所定の処理を行う不正リクエスト処理部をさらに備えている、請求項１〜４のいずれか一項に記載のロギング・システム。
【請求項７】
前記不正なリクエストに対する処理は、前記コンテンツを前記クライアントに再送すること、クライアント情報を記録すること、エラーとして記録すること、オペレータに通知すること、の１つまたは複数の処理を含む、請求項５又は６に記載のロギング・システム。
【請求項８】
使用されたコンテンツの順序を追跡できるようにするため、前記ロギング・データベースは、前記識別子を、その生成された順序と関連づけて記録する、請求項１〜７のいずれか一項に記載のロギング・システム。
【請求項９】
前記コンテンツはＨＴＭＬで作成された入力フォームであり、前記コンテンツ合成部は、前記入力データを、当該入力フォームのｉｎｐｕｔタグの初期値として埋め込むことにより合成する、請求項１〜８のいずれか一項に記載のロギング・システム。
【請求項１０】
前記コンテンツ合成部は、前記入力データに加え、クライアント情報も併せて記録する、請求項１〜９のいずれか一項に記載のロギング・システム。
【請求項１１】
前記コンテンツ合成部は、前記入力データに加え、前記コンテンツに対する署名値も併せて記録する、請求項１〜１０のいずれか一項に記載のロギング・システム。
【請求項１２】
前記クライアントから受信した前記リクエストをそのまま前記サーバに送信するリクエスト送信部をさらに備えている、請求項１〜１１のいずれか一項に記載のロギング・システム。
【請求項１３】
クライアントのリクエストに応答してサーバが送信したレスポンスに対する操作ログを記録する方法であって、１つ又は複数のクライアント及び１つ又は複数のサーバに接続されうるロギング・システムが、
前記サーバから前記クライアントに送信された前記レスポンスを受信するステップであって、前記レスポンスは前記クライアントにデータ入力を指示するコンテンツを含む、前記受信するステップと、
前記受信したレスポンスを解析し、操作ログを記録するか否かを判断するステップと、
前記コンテンツを識別するための識別子を生成し、当該識別子を前記コンテンツに埋め込むステップと、
前記識別子を埋め込んだ前記レスポンスを前記クライアントに送信するステップと、
前記コンテンツと前記識別子とを関連づけてロギング・データベースに記録するステップと、
前記レスポンスに対して前記クライアントから前記サーバに送信されたリクエストを受信するステップであって、前記リクエストは前記コンテンツへの入力データと前記識別子とを含む、前記受信するステップと、
前記リクエストから取り出した前記入力データを、前記リクエストから取りだした前記識別子を使用して前記ロギング・データベースから検索されたコンテンツと合成して前記ロギング・データベースに記録するステップと
を実行することを含む、前記方法。
【請求項１４】
前記操作ログを記録するか否かを判断するステップが、前記レスポンスが入力フォームを含むことを条件に、操作ログを記録することを決定するステップを含む、請求項１３に記載の方法。
【請求項１５】
前記コンテンツはＨＴＭＬで作成された入力フォームであり、前記識別子が当該入力フォームのｈｉｄｄｅｎフィールドに埋め込まれる、請求項１３又は１４に記載の方法。
【請求項１６】
前記ロギング・システムが、
前記リクエストから取り出した前記識別子が前記ロギング・データベースに見つからなかった場合、当該リクエストは不正なリクエストであると判断して所定の処理を行うステップ、又は、
前記ロギング・データベースは、前記コンテンツと関連づけて、セッションＩＤ、クライアントＩＰアドレス、識別済みのユーザＩＤ、送信ボタンに対応したＵＲＬのうちの１つまたは複数をさらに記録し、これらの情報が前記クライアントから受信した前記リクエストのものと一致しない場合、当該リクエストは不正なリクエストであると判断して所定の処理を行うステップ
を実行することをさらに含む、請求項１３〜１５のいずれか一項に記載の方法。
【請求項１７】
クライアントのリクエストに応答してサーバが送信したレスポンスに対する操作ログを記録するコンピュータ・プログラムであって、１つ又は複数のクライアント及び１つ又は複数のサーバに接続されうるロギング・システムに、請求項１３〜１６のいずれか一項に記載の方法の各ステップを実行させる前記コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、ロギングに関する。特に、本発明は、視覚的でわかりやすい操作ログを記録するための技術に関する。
【背景技術】
【０００２】
近年、相次ぐ会計不祥事やコンプライアンスの欠如などを防止するための法整備が進められている。その結果、監査等のため、Ｗｅｂアプリケーションなどに対する操作ログを記録することが必要となってきている。監査等のためには、ある取引に関するすべてのトランザクション（しばしば複数のＷｅｂアプリケーションを横断する）を網羅してロギングする必要がある。また、操作ログは、人間が見てわかりやすい形式で提示されることが望ましい。
【０００３】
あらゆるＷｅｂアプリケーションの通信を網羅的に記録する従来技術として、すべてのＩＰパケットを記録する装置が市販されている。しかしながら、このような装置は、すべての通信データを記録しているものの、単に、ＩＰパケット・レベルのデータを記録しているだけである。そのため、そのままでは、人間にとってわかりやすい情報ではなく、監査等のために必要な情報を速やかに提供することは困難である。
【０００４】
また、例えば、ＩＢＭ（登録商標）  ＦｏｒｍＷａｖｅ（登録商標）など、アプリケーション・フレームワーク・レベルで、クライアント上で申請する際のＨＴＭＬフォームの入力画面イメージを記録する機能を提供する製品が存在する。このような入力画面イメージは、人間にとってわかりやすい情報である。しかしながら、これらの製品は、アプリケーション・フレームワークを越えてロギングの連携を行うことはできない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがって、本発明の課題は、クライアントとサーバの間の処理における、視覚的でわかりやすい操作ログを記録するためのロギング・システム、方法およびコンピュータ・プログラムを提供することである。より詳細には、本発明は、監査に適したものとするため、クライアント（ブラウザ）側ではなく、クライアントとサーバの間でロギングすることを実現し、これにより、既存アプリケーションの書き換えを要しないロギング・システム、方法およびコンピュータ・プログラムを提供することを課題とする。さらに、本発明は、複数サーバおよび複数アプリケーションが存在する環境においても統一的にロギングすることが可能なロギング・システム、方法およびコンピュータ・プログラムを提供することを課題とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明は、クライアントのリクエストに応答してサーバが送信したレスポンスに対する操作ログを記録するためのシステムを提供する。本発明にかかるシステムは、サーバがクライアントに送信したレスポンスを受信するレスポンス受信部であって、前記レスポンスは前記クライアントにデータ入力を指示するコンテンツを含むものと、前記リクエストに対応する前記コンテンツを識別するための識別子を組み込んだレスポンスを前記クライアントに送信するレスポンス送信部と、前記コンテンツと前記識別子とを関連づけて記録するロギング・データベースと、前記クライアントが前記レスポンスに対して前記サーバに送信したリクエストを受信するリクエスト受信部であって、前記リクエストは前記コンテンツへの入力データと前記識別子とを含むものと、前記リクエストから取り出した前記入力データを、前記リクエストから取りだした前記識別子を使用して前記ロギング・データベースから検索されたコンテンツと合成して前記ロギング・データベースに記録するコンテンツ合成部とを備える。
【０００７】
好ましくは、システムは、前記サーバから受信したレスポンスを解析し、操作ログを記録するか否かを判断するレスポンス解析部をさらに備えることができる。これにより、システムは、ロギングの対象を選択することが可能となる。
【０００８】
システムは、前記リクエストに対応する前記コンテンツを識別するための識別子を生成し、当該識別子を前記コンテンツに埋め込む識別子埋め込み部をさらに備えることができる。
【０００９】
好ましくは、システムは、前記リクエストから取り出した前記識別子が前記ロギング・データベースに見つからなかった場合、当該リクエストは不正なリクエストであると判断して所定の処理を行う不正リクエスト処理部をさらに備えることができる。これにより、システムは、不正なリクエストを発見し、適切な処理を行うことが可能となる。
【００１０】
好ましくは、前記ロギング・データベースは、前記コンテンツと関連づけて、セッションＩＤ、クライアントＩＰアドレス、識別済みのユーザＩＤ、送信ボタンに対応したＵＲＬのうちの１つまたは複数を記録し、これらの情報が前記クライアントから受信した前記リクエストのものと一致しない場合、当該リクエストが不正なリクエストであると判断して所定の処理を行う不正リクエスト処理部をさらに備えることができる。これにより、さらに厳しいチェックが可能となり、信頼性の高いシステムを提供することが可能となる。
【００１１】
好ましくは、使用されたコンテンツの順序を追跡できるようにするため、ロギング・データベースは、前記識別子を、その生成された順序と関連づけて記録するようにする。
【００１２】
以上、システムとして本発明の概要を説明したが、本発明は、方法またはコンピュータ・プログラム（またはプログラム製品）として把握することもできる。プログラム製品は、例えば、前述のプログラムを格納した記憶媒体を含め、あるいはプログラムを伝送する媒体を含めることができる。
【００１３】
上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの構成要素のコンビネーションまたはサブコンビネーションもまた、発明となり得ることに留意すべきである。
【発明を実施するための最良の形態】
【００１４】
以下、本発明を実施するための最良の形態を図面に基づいて詳細に説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１５】
また、本発明は多くの異なる態様で実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。また、実施の形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須とは限らないことに留意されたい。実施の形態の説明の全体を通じて同じ要素には同じ番号を付している。
【００１６】
図１は、本発明の実施形態おけるロギング・システムの外観の一例を示した図である。ロギング・システム１００は、一つまたは複数のクライアント・コンピュータ２００および一つまたは複数のアプリケーション・サーバ３００に接続される。ロギング・システム１００は、クライアント２００とアプリケーション・サーバ３００との間に配置されればよく、例えば、認証サーバ上、認証サーバとアプリケーション・サーバ３００との間、アプリケーション・サーバ３００上のフィルタ・サーブレットとして、または、アプリケーション・サーバ前段のＷｅｂサーバのプラグインとして配置されてもよい。
【００１７】
図７は、本発明の実施の形態におけるロギング・システム１００が稼働するコンピュータ、クライアント・コンピュータ２００、アプリケーション・サーバ３００を実現するために好適な情報処理装置７００のハードウェア構成を例示する図である。情報処理装置は、中央処理装置（ＣＰＵ）１とメインメモリ４を含んでいる。ＣＰＵ１とメインメモリ４は、バス２を介して、補助記憶装置としてのハードディスク装置１３と接続されている。また、フレキシブルディスク装置２０、ＭＯ装置２８、ＣＲ−ＲＯＭ装置２６、２９などのリムーバブルストレージ（記録メディアを交換可能な外部記憶システム）が関連するフレキシブルディスク・コントローラ１９、ＩＤＥコントローラ２５、ＳＣＳＩコントローラ２７などを介してバス２へ接続されている。
【００１８】
フレキシブルディスク装置２０、ＭＯ装置２８、ＣＲ−ＲＯＭ装置２６、２９などのリムーバブルストレージには、それぞれフレキシブルディスク、ＭＯ、ＣＤ−ＲＯＭなどの記憶媒体が挿入され、このフレキシブルディスク等やハードディスク装置１３、ＲＯＭ１４には、オペレーティング・システムと協働してＣＰＵ等に命令を与え、本発明を実施するためのコンピュータ・プログラムのコードを記録することができる。メインメモリ４にロードされることによってコンピュータ・プログラムは実行される。コンピュータ・プログラムは圧縮し、また複数に分割して複数の媒体に記録することもできる。
【００１９】
情報処理装置は、さらに、ユーザ・インターフェイス・ハードウェアとして、マウス等のポインティング・デバイス７、キーボード６や視覚データをユーザに提示するためのディスプレイ１２を有することができる。また、パラレルポート１６を介してプリンタ（図示せず）と接続することや、シリアルポート１５を介してモデム（図示せず）を接続することが可能である。サーバ１００は、シリアルポート１５及びモデムを介し、また、通信アダプタ１８（イーサネット（登録商標）・カードやトークンリング・カード）等を介してネットワークに接続し、他のコンピュータ等と通信を行うことが可能である。
【００２０】
以上の説明により、本発明の実施の形態における情報処理装置は、メインフレーム、ワークステーション、通常のパーソナルコンピュータ（ＰＣ）等の情報処理装置、または、これらの組み合わせによって実現されることが容易に理解されるであろう。ただし、これらの構成要素は例示であり、そのすべての構成要素が本発明の必須構成要素となるわけではない。
【００２１】
本発明の実施に使用される情報処理装置の各ハードウェア構成要素を、複数のマシンを組み合わせ、それらに機能を配分し実施する等の種々の変更は当業者によって容易に想定され得るものであり、それらの変更は、当然に本発明の思想に包含される概念である。
【００２２】
本発明の実施の形態におけるロギング・システム１００が稼働するコンピュータ、クライアント・コンピュータ２００、アプリケーション・サーバ３００は、オペレーティング・システムとして、マイクロソフト・コーポレーションが提供するＷｉｎｄｏｗｓ（登録商標）オペレーティング・システム、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＡＩＸ（登録商標）ｚ／ＯＳ（登録商標）、アップル・コンピュータ・インコーポレイテッドが提供するＭａｃ  ＯＳ、あるいはＬｉｎｕｘ（登録商標）などのＧＵＩマルチウィンドウ環境をサポートするものを採用することができる。
【００２３】
また、ロギング・システム１００が稼働するコンピュータ、クライアント・コンピュータ２００、アプリケーション・サーバ３００は、オペレーティング・システムとして、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＰＣ−ＤＯＳ、マイクロソフト・コーポレーションが提供するＭＳ−ＤＯＳなどのキャラクタ・ベース環境のものを採用することもできる。さらに、本発明の実施の形態におけるロギング・システム１００が稼働するコンピュータ、クライアント・コンピュータ２００、アプリケーション・サーバ３００は、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＯＳ／Ｏｐｅｎ、Ｗｉｎｄ  Ｒｉｖｅｒ  Ｓｙｓｔｅｍｓ，Ｉｎｃ．のＶｘ  ＷｏｒｋｓなどのリアルタイムＯＳ、Ｊａｖａ（登録商標）ＯＳなどのネットワーク・コンピュータに組み込みオペレーティング・システムを採用することもできる。
【００２４】
以上から、本発明の実施形態におけるロギング・システム１００が稼働するコンピュータ、クライアント・コンピュータ２００、アプリケーション・サーバ３００は、特定のオペレーティング・システム環境に限定されるものではないことを理解することができる。ロギング・システム１００が稼働するコンピュータ、クライアント・コンピュータ２００、アプリケーション・サーバ３００は、それぞれ異なるオペレーティング・システム環境で動作するようにしてもよいことは勿論である。
【００２５】
図２は、本発明の実施形態におけるロギング・システム１００を機能ブロックに分類して示す図である。なお、図２の機能ブロック図に示す各要素は、図７に例示したハードウェア構成を有する情報処理装置において、ハードディスク装置１３などに格納されたオペレーティング・システムやコンピュータ・プログラムをメインメモリ４にロードした上でＣＰＵ１に読み込ませ、ハードウェア資源とソフトウェアを協働させることによって実現することができる。
【００２６】
ロギング・システム１００は、レスポンス受信部１０１、レスポンス解析部１０２、ＩＤ埋め込み部１０３、ロギング・データベース１０４、レスポンス送信部１０５、リクエスト受信部１０６、コンテンツ合成部１０７、リクエスト送信部１０８を含む。
【００２７】
レスポンス受信部１０１は、クライアント（ブラウザ）２００からのＨＴＴＰリクエストに応じて、アプリケーション・サーバ３００がＨＴＴＰレスポンスとして送信したＨＴＭＬファイルを受信する。ここで、ＨＴＭＬファイルは、ＸＨＴＭＬファイルなども含むものとして説明する。
【００２８】
監査等を目的とする場合、参照系のアプリケーション（例えば、静的なＨＴＭＬだけで構成されるＷｅｂサイト）よりも、ユーザによる入力が想定される申請系のフォーム・アプリケーションに対する操作ログを記録することが特に重要になる。したがって、本発明の好適な実施形態においては、ロギング・システム１００は、フォーム・アプリケーションを選択してロギングする。そこで、ロギング・システム１００は、受信したＨＴＴＰレスポンスを解析して、操作ログを記録すべきものかどうかを判定するレスポンス解析部１０２をさらに備える。
【００２９】
図３は、本発明の好適な実施形態において、ロギングの対象とするコンテンツである入力フォームとそれに対応するＨＴＭＬファイルの具体例を示す図である。このＨＴＭＬファイルにおいて、ｆｏｒｍタグ、すなわち、＜ｆｏｒｍ＞と＜／ｆｏｒｍ＞で囲まれた部分が入力フォームである。レスポンス解析部１０２は、ＨＴＴＰレスポンスとして受信したＨＴＭＬファイルにｆｏｒｍタグが含まれているかどうかをチェックすることにより、そのＨＴＴＰレスポンスに入力フォームが含まれているかどうかを判定することができる。
【００３０】
また、ロギング対象の選択は、入力フォームが含まれているかどうかだけでなく、他の基準により行うこともできる。例えば、特定のＵＲＬ、特定のＨＴＴＰリクエスト・パラメータが含まれている場合、ＨＴＴＰレスポンスに特定の文字列が含まれている場合、特定のユーザにアドレスされている場合などに、ロギングするようにすることもできる。このような場合、レスポンス解析部１０２は、そのＨＴＴＰレスポンスが所定の条件に合致しているかどうかをチェックすることにより、ロギングの対象とするかどうかを判定する。
【００３１】
ＩＤ埋め込み部１０３は、入力フォームに、その入力フォームを識別する識別子（以下、「フォームＩＤ」という）を埋め込む。フォームＩＤは、入力フォームを追跡するため、すなわち、そのＨＴＴＰレスポンスにより送信された入力フォームと、後に、その入力フォームに対してユーザが入力したデータとを関連づけるために使用される。詳しくは、後述するコンテンツ合成部１０７と関連して説明する。
【００３２】
フォームＩＤは、一意かつ予測困難なものとすることが望ましく、例えば、固定文字列、乱数文字列、ユーザＩＤ、時刻、ＵＲＬ、コンテンツ名、パラメータ名の１つまたは複数の組み合わせからなる文字列、あるいはそれらをハッシュ化、あるいは暗号化して得た文字列、あるいはそれらを組み合わせたものにより生成することができる。フォームＩＤの値が予測容易な場合は、フォームＩＤを改竄することにより、他人のフォーム入力と混同させることができてしまうという問題があるからである。
【００３３】
フォームＩＤは、本発明の好適な実施形態においては、ｈｉｄｄｅｎフィールドを使用して入力フォームに埋め込まれる。図４は、図３で説明されたＨＴＭＬファイルに、このＩＤを埋め込んだ後のＨＴＭＬファイルの内容を示す図である。ＩＤ埋め込み部１０３は、受信したＨＴＭＬファイル中のｆｏｒｍタグ内に、＜ｉｎｐｕｔ  ｔｙｐｅ＝“ｈｉｄｄｅｎ“  ｎａｍｅ＝”ｌｏｇｇｅｒ＿ｆｏｒｍ＿ｉｄ“  ｖａｌｕｅ＝”ｘｘｘｘ“／＞のようなｈｉｄｄｅｎフィールドを追加する（”ｘｘｘｘ“の部分がフォームＩＤである）。これにより、その入力フォームを追跡することができる。なお、入力フォームを追跡するための方法としては、ｈｉｄｄｅｎフィールドを使用する他、セッションＩＤ、Ｃｏｏｋｉｅ、ＩＰアドレス、認証チケット、ＵＲＬ、時刻などの一つまたはこれらの組み合わせを使用することにより追跡することもできる。
【００３４】
フォームＩＤは、一つのフォームを追跡するためだけでなく、ユーザの一連のトランザクションを把握するためにも使用することができる。その場合、ＩＤ埋め込み部１０３は、生成されたフォームＩＤの順序を追跡できるように管理する。例えば、フォームＩＤにシーケンス番号を含め、そのシーケンス番号を、アプリケーション・サーバ３００からＨＴＴＰレスポンスを受信する度に、インクリメントするようにしても良いが、本発明の好適な実施形態においては、フォームＩＤ内に予測容易な値が含まれないようにするために、フォームＩＤを、その生成された順に所定の記憶域に記憶するなど、生成された順序と関連づけてデータベースに記録していく。このようにすることで、ロギング・システム１００上でフォームのチェーンを追跡することができる。また、フォームを持たないＨＴＴＰレスポンスも追跡したい場合には、ＩＤ埋め込み部１０３は、ｈｉｄｄｅｎフィールドだけを持つフォームを新たに生成して、これにフォームＩＤを埋め込むようにすることができる。従来の各アプリケーション・サーバ上で動作するフレームワークのロギングでは、各フレームワーク内でのチェーンの追跡しか行えないが、本発明にかかるロギング・システム１００は、複数アプリケーション・サーバ３００や複数のフレームワークに跨るチェーンも追跡することを可能とする。
【００３５】
ロギング・データベース１０４は、入力フォームとフォームＩＤとを関連づけて記録する。本発明の好適な実施形態においては、フォームＩＤは、対応する入力フォームに埋め込まれている。また、ロギング・データベース１０４は、フォームＩＤに加えて、例えば、セッションＩＤ、クライアントＩＰアドレス、識別済みのユーザＩＤ、送信ボタンに対応したＵＲＬなどを、入力フォームと関連づけて記録するようにしてもよい。これらの情報も併せて同一性チェックのために使用することによって、例えば、フォームＩＤが偽造されたケースや、通信途中でフォームＩＤが盗まれて別のフォームの送信に使用されるようなケースにおいても、さらに厳しいチェックが可能となり、信頼性の高いシステムを提供することが可能となる。
【００３６】
レスポンス送信部１０５は、フォームＩＤが埋め込まれた入力フォームを、ＨＴＴＰレスポンスとして、クライアント２００に送信する。送信された入力フォームは、クライアント２００の表示装置１１に表示される。ユーザがフォームに必要なデータを入力して送信処理を行うことに応答して、入力データおよび入力フォームに埋め込まれていたフォームＩＤを含むＨＴＴＰリクエストがクライアント２００からアプリケーション・サーバ３００に送信される。リクエスト受信部１０６は、そのＨＴＴＰリクエストを受信する。リクエスト送信部１０８は、そのＨＴＴＰリクエストをそのまま（改変等せず）アプリケーション・サーバ３００に送信する。
【００３７】
コンテンツ合成部１０７は、クライアント２００から受信したＨＴＴＰリクエストを解析し、フォームＩＤ、すなわち、ｌｏｇｇｅｒ＿ｆｏｒｍ＿ｉｄの値を取り出す。次に、コンテンツ合成部１０７は、ロギング・データベース１０４を検索し、このフォームＩＤと同一のフォームＩＤを含む入力フォームから取り出す。
【００３８】
同一のフォームＩＤがロギング・データベース１０５に存在しない場合、対応する入力フォームが存在しない不正なリクエストであると判断することができる。この場合、ロギング・システム１００は、例えば、クライアント２００への入力フォームの再送、エラー記録、オペレータへの通知などの処理を不正リクエスト処理部（図示せず）に行わせることができる。また、ロギング・データベース１０４が入力フォームと関連づけて記録しておいた、セッションＩＤ、クライアントＩＰアドレス、識別済みのユーザＩＤ、送信ボタンに対応したＵＲＬなどが、クライアント２００から受信したリクエストと一致しない場合も、そのリクエストが不正なリクエストであると判断して、不正リクエストに対する所定の処理を行うことができる。
【００３９】
コンテンツ合成部１０７は、さらに、クライアント２００から受信したＨＴＴＰリクエストから、ユーザ入力データを取り出し、この入力データを、ロギング・データベース１０４から検索された入力フォームの所定の位置に埋め込むように、ＨＴＭＬを書き換える。具体的には、入力データは、入力フォームのｉｎｐｕｔタグの初期値として埋め込まれる。また、元のＨＴＭＬファイルにボタンやバナーなどの画像や他の静的コンテンツが含まれる場合、コンテンツ合成部１０７は、それらのコンテンツを埋め込んだイメージを作成する。ロギング・システム１００がそれらのコンテンツをキャッシュすることにより補ってもよいし、アプリケーション・サーバ３００にＨＴＴＰリクエストを送信して、それらのコンテンツを取得することにより補ってもよい。これにより、入力データが入力済みのフォームが作成される。
【００４０】
コンテンツ合成部１０７は、作成したフォームをロギング・データベース１０４に記録する。このように、アプリケーション・サーバ３００から受信した入力フォームとクライアント２００から受信した入力データとを合成することにより作成されたデータ入力済みのフォームをロギング・データベース１０４に記録しておくことにより、見やすい操作ログを残すことができる。ロギング・データベース１０４には、データ入力済みのフォームの他、ＩＰアドレスや認証済みユーザＩＤ、日時などのクライアント情報を追加的に記録してもよい。また、記録するフォーム等について電子署名サーバなどで署名をおこない、その署名値も併せて記録することで証拠能力を高めることもできる。ロギング・データベース１０４に記録する形式は、ＨＴＭＬ形式の他、ＨＴＭＬをレンダリングすることにより作成したＰＤＦ形式などにしてもよい。また、視覚的なログではないが、Unix（登録商標）またはLinux（登録商標）で標準的ロギング・システムであるsyslogなどの共通ログ形式の通常のログに、データ入力済みのフォームの保存場所（RDBに保存する場合はキー値）や上述のクライアント情報、時刻、リクエストが正当か不正であったかなどの結果情報などの各種情報の出力も同時に行ってもよい。なお、ロギング・データベース１０４への格納方法は、単にファイル・システムに書き出すようにしてもよいし、例えば、フォーム送信時刻やユーザＩＤなどをキーとして検索可能なように、リレーショナル・データベースなどに保存するなど、種々の方法が考えられることは当業者であれば明らかであろう。
【００４１】
図５は、本発明の実施形態におけるロギング・システム１００がアプリケーション・サーバ３００からクライアント２００に送信されたＨＴＴＰレスポンスを受信した場合のロギング・システム１００内の処理を表すフローチャートである。処理は、ステップ５１０で、クライアント２００からのＨＴＴＰリクエストに応答して、アプリケーション・サーバ３００がクライアント２００に対して送信したＨＴＴＰレスポンスをレスポンス受信部１０１が受信することにより開始する。
【００４２】
レスポンス解析部１０２は、受信したＨＴＴＰレスポンスがロギングの対象であるかどうかを判定する（ステップ５２０）。例えば、ユーザ入力を促す入力フォームが含まれるものをロギングする場合、レスポンス解析部１０２は、ＨＴＴＰレスポンスとして送信されたＨＴＭＬファイルを解析し、ｆｏｒｍタグが含まれているかどうかをチェックする。入力フォームが含まれていない場合、すなわち、ロギングの対象でない場合（ステップ５２０でＮｏ）、処理は、ステップ５５０に進み、受信したＨＴＴＰレスポンスをそのままクライアント２００に送信することにより終了する。一方、入力フォームが含まれており、ロギングの対象である場合（ステップ５２０でＹｅｓ）、処理は、ステップ５３０に進む。
【００４３】
ステップ５３０において、ＩＤ埋め込み部１０３は、フォームＩＤを生成し、そのフォームＩＤを入力フォームに埋め込む。フォームＩＤが埋め込まれたフォームは、ロギング・データベース１０４に記録され（ステップ５４０）、レスポンス送信部１０５により、クライアント２００に送信される（ステップ５５０）。
【００４４】
図６は、本発明の実施形態におけるロギング・システム１００がクライアント２００からアプリケーション・サーバ３００に送信したＨＴＴＰリクエストを受信した場合のロギング・システム１００内の処理を表すフローチャートである。処理は、ステップ６１０で、アプリケーション・サーバ３００からのＨＴＴＰレスポンスに応答して、クライアント２００がアプリケーション・サーバ３００に対して送信したＨＴＴＰリクエストをリクエスト受信部１０７が受信することにより開始する。受信したＨＴＴＰリクエストには、ユーザが入力したフォームへの入力データと、ＨＴＴＰレスポンスに含まれていたフォームＩＤが含まれている。
【００４５】
コンテンツ合成部１０７は、受信したＨＴＴＰリクエストから、フォームＩＤを取り出し、このフォームＩＤと同一のフォームＩＤを含むフォームをロギング・データベース１０４から取り出す（ステップ６２０）。同一のフォームＩＤがロギング・データベース１０４に見つからない場合、ＩＤが改竄された可能性がある。そこで、ロギング・システム１００は、そのＨＴＴＰリクエストを不正なものとみなし、所定の処理を行うようにすることもできる。
【００４６】
コンテンツ合成部１０７は、受信したＨＴＴＰリクエストから、ユーザにより入力されたデータを取り出し、そのデータを、そのＨＴＴＰリクエストから取り出したフォームＩＤを使用してロギング・データベース１０４から取り出した入力フォームの所定の位置に埋め込むようにＨＴＭＬファイルを書き換える（ステップ６３０）。そして、入力データが組み込まれたフォームをロギング・データベース１０４に記録する（ステップ６４０）。リクエスト送信部１０８は、クライアント２００から受信したＨＴＴＰリクエストをそのまま（改変等せず）アプリケーション・サーバ３００に送信する。
【００４７】
以上、本発明によれば、ユーザにより入力されたデータを組み込んだ状態のフォーム・イメージをロギング・データベース１０４に記録することができ、視覚的でわかりやすい操作ログを提供することができる。また、クライアント２００とアプリケーション・サーバの間に配置されるロギング・システム１００を提供するため、アプリケーション・フレームワークに依存することもなく、また、複数サーバおよび複数アプリケーションが存在する環境においても統一的にロギングすることが可能となる。
【００４８】
本発明は、ハードウェア、ソフトウェア、またはハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実行において、所定のプログラムを有するデータ処理システムにおける実行が典型的な例として挙げられる。かかる場合、該所定プログラムが該データ処理システムにロードされ実行されることにより、該プログラムは、データ処理システムを制御し、本発明にかかる処理を実行させる。このプログラムは、任意の言語・コード・表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接、または１．他の言語・コード・表記への変換、２．他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。
【００４９】
もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブルディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ、ハードディスク装置、ＲＯＭ、ＭＲＡＭ、ＲＡＭ等の任意のコンピュータ読み取り可能な記録媒体に格納することができる。かかるプログラムは、記録媒体への格納のために、通信回線で接続する他のデータ処理システムからダウンロードしたり、他の記録媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、または複数に分割して、単一または複数の記録媒体に格納することもできる。また、様々な形態で、本発明を実施するプログラム製品を提供することも勿論可能であることにも留意されたい。
【００５０】
上記の実施の形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【００５１】
以上、本発明の実施の形態を用いて説明したが、本発明の技術範囲は上記実施の形態に記載の範囲には限定されない。上記の実施の形態に、種々の変更または改良を加えることが可能であることが当業者に明らかである。従って、そのような変更または改良を加えた形態も当然に本発明の技術的範囲に含まれる。
【図面の簡単な説明】
【００５２】
【図１】本発明の実施形態おけるロギング・システムの外観の一例を示した図である。
【図２】本発明の実施形態におけるロギング・システム１００を機能ブロックに分類して示した図である。
【図３】入力フォームとそれに対応するＨＴＭＬファイルの具体例を示した図である。
【図４】本発明の実施形態におけるＨＴＴＰレスポンスを識別するＩＤを埋め込んだＨＴＭＬファイルの内容を示した図である。
【図５】本発明の実施形態におけるアプリケーション・サーバからＨＴＴＰレスポンスを受信した場合のロギング・システム１００内の処理を表すフローチャートである。
【図６】本発明の実施形態におけるクライアント２００からＨＴＴＰリクエストを受信した場合のロギング・システム１００内の処理を表すフローチャートである。
【図７】本発明の実施の形態におけるロギング・システム１００が稼働するコンピュータ、クライアント・コンピュータ２００、アプリケーション・サーバ３００を実現するために好適な情報処理装置７００のハードウェア構成を例示する図である。
【図１】
0005063258.tif 000002
【図２】
0005063258.tif 000003
【図３】
0005063258.tif 000004
【図４】
0005063258.tif 000005
【図５】
0005063258.tif 000006
【図６】
0005063258.tif 000007
【図７】
0005063258.tif 000008