(57)【要約】  顧客と電子通信するよう構成されたコンピュータ・システムにおけるコンピュータ・アプリケーション・プログラムを制御するコンピュータ履行される方法が提案される。前記システムは、前記プログラムの第１のアプリケーション状態に対応する許可可能な要求の第１の要求セットへのアクセスを有するように構成される。前記プログラムは、前記システムまたは他のコンピュータ・システム上で実行し得る。顧客要求は、前記プログラムのための前記システムにおいて受信される。前記プログラムは、顧客と関係する第１のアプリケーション状態にある。顧客要求は、該要求が、前記プログラムの第１のアプリケーション状態に対応する許可可能な要求の１つと整合するか否かを決定するために分析される。前記プログラムは、顧客要求が第１の要求セットの許可可能な要求と整合する場合にのみ顧客要求を実行するようこのプログラムに命令することによって制御される。
2011512572.tif 000002
【特許請求の範囲】
【請求項１】
クライアントと電子通信するよう構成されたコンピュータ・システムにおけるコンピュータ・アプリケーション・プログラムを制御するコンピュータ履行される方法であって、前記コンピュータ・システムは、前記クライアントに関係して前記コンピュータ・システムまたはもう１つのコンピュータ・システム上で実行する前記コンピュータ・アプリケーション・プログラムの第１のアプリケーション状態に対応する１つまたは２つ以上の許可可能なリクエストの第１のリクエスト・セットにアクセスを有し、前記方法は、
前記第１の所定のアプリケーション状態における前記コンピュータ・アプリケーションプログラムのために前記クライアントからのクライアント・リクエストを前記コンピュータ・システムにおいて受信するステップと、
前記クライアント・リクエストが、前記クライアント・リクエストを受信することに応答して前記許可可能なリクエストの１つと整合するか否かを分析するステップと、
前記クライアント・リクエストが前記第１のリクエスト・セットの前記許可可能なリクエストの１つと整合する場合にのみ前記クライアント・リクエストを実行するよう前記コンピュータ・アプリケーション・プログラムに命令するステップと、
を含む方法。
【請求項２】
前記第１のアプリケーション状態を、前記コンピュータ・アプリケーション・プログラムの、前記第１のアプリケーション状態とは異なる第２のアプリケーション状態に変更するステップと、
前記クライアント装置からさらなるクライアント・リクエストを受信するステップと、
前記クライアント・リクエストが、前記第２のアプリケーション状態に対応する１つまたは２つ以上の許可可能なリクエストの第２のリクエスト・セットの許可可能なリクエストと整合するか否かを分析するステップと、
前記さらなるクライアント・リクエストが前記第２のリクエスト・セットの前記許可能なリクエストの１つと整合する場合にのみ前記さらなるクライアント・リクエストを実行するよう前記コンピュータ・アプリケーション・プログラムに命令するステップと、
をさらに含む請求項１に記載の方法。
【請求項３】
前記第１のアプリケーション状態は、前記クライアント・リクエストを実行することに応答して前記第２のアプリケーション状態に変更される請求項２に記載の方法。
【請求項４】
前記第１のリクエスト・セットまたは前記第１のアプリケーション状態の少なくとも一方は、前記コンピュータ・システムまたは他のコンピュータ・システム上で実行する前記コンピュータ・アプリケーション・プログラムから得られる請求項１乃至３のいずれか１項に記載の方法。
【請求項５】
前記第１のリクエスト・セットの前記許可可能なリクエストは、アプリケーション層リクエストに関係する請求項１乃至４のいずれか１項に記載の方法。
【請求項６】
前記アプリケーション層リクエストは、ハイパーテキスト・トランスファ・プロトコル（HTTP）リクエスト、ファイル・トランスファ・プロトコル（FTP）リクエスト、シンプル・メール・トランスファ・プロトコル（SMTP）リクエスト及びテルネット（telnet）リクエストの少なくとも１つを含む請求項５に記載の方法。
【請求項７】
前記クライアントと前記コンピュータ・システムとの間の接続状態を前記コンピュータ・システムによって決定するステップと、
前記第１のアプリケーション状態と前記第２のアプリケーション状態を前記接続状態に関係させるステップと、
をさらに含む請求項１乃至６のいずれか１項に記載の方法。
【請求項８】
前記コンピュータ・システムは、時間単位ごとにクライアント・リクエストの閾値量を維持し、当該方法は、クライアント・リクエストの量が前記閾値量より小さい場合にのみ前記クライアント・リクエストを実行するよう前記コンピュータ・アプリケーション・プログラムに命令するステップを含む請求項１乃至７のいずれか１項に記載の方法。
【請求項９】
悪意のある及び悪意のないクライアント間を識別するステップと、
悪意のないクライアント・リクエストの後に前記悪意のあるクライアント・リクエストが続く待ち行列を得るよう、前記悪意のある及び前記悪意のないクライアントからのクライアント・リクエストをランキング付けするステップと、
前記悪意のないクライアント・リクエストを最初に実行するよう前記コンピュータ・アプリケーション・プログラムに命令するステップと、
をさらに含む請求項１乃至８のいずれか１項に記載の方法。
【請求項１０】
すべての悪意のないクライアント・リクエストを実行するよう前記コンピュータ・アプリケーション・プログラムに命令した後、前記待ち行列からの前記悪意のあるクライアント・リクエストを分析するステップをさらに含む請求項９に記載の方法。
【請求項１１】
前記コンピュータ・システムは、クライアントからの接触履歴を記憶し、さらに、前記接触履歴から知られていないクライアントより高い前記待ち行列における前記接触履歴から知られているクライアントをランク付けするステップを含む請求項９または１０に記載の方法。
【請求項１２】
クライアントから受信されたクライアント・リクエストの数、前記コンピュータ・システムとのクライアントの接触履歴、リクエストの内容の種類、前記クライアントから受信されたリクエストの内容、の少なくとも１つに基づいて前記悪意のある及び悪意のないクライアントを識別するステップをさらに含む請求項９乃至１１のいずれか１項に記載の方法。
【請求項１３】
前記クライアントは、クライアント装置において履行され、前記コンピュータ・システムは、前記クライアント装置と電子的に通信するよう少なくとも１つの通信ネットワークに接続され、当該方法は、前記通信ネットワークを介して前記クライアント・リクエストを受信するステップを含む請求項１乃至１２のいずれか１項に記載の方法。
【請求項１４】
前記コンピュータ・システムまたは前記他のコンピュータ・システムは、データベースを含み、前記コンピュータ・アプリケーション・プログラムは、データベース・アプリケーション・プログラムである請求項１乃至１３のいずれか１項に記載の方法。
【請求項１５】
前記データベース・アプリケーション・プログラムから許可可能なデータベース・リクエストの前記第１のセットを受信するステップと、
前記クライアント・リクエストが前記許可可能なデータベース・リクエストの１つと整合する場合にのみ前記データベースの前記データベース・アプリケーション・プログラムのデータベース動作を命令するステップと、
をさらに含む請求項１４に記載の方法。
【請求項１６】
電子システムによってインストールされて実行されるときに、請求項１乃至１５に記載の方法を行うように適合されたソフトウェア・コード部分を含むコンピュータ・プログラム。
【請求項１７】
請求項１６のコンピュータ・プログラムを収容した担体。
【請求項１８】
少なくとも１つのクライアントに接続するよう構成されたコンピュータ・システムまたはもう１つのコンピュータ・システム上のコンピュータ・アプリケーション・プログラムを制御するためのコンピュータ・システムであって、
少なくとも第１のアプリケーション状態を含む前記コンピュータ・アプリケーション・プログラムに向けられたクライアント・リクエストを受信するよう構成されたクライアント・リクエスト受信器と、
前記クライアント・リクエストが、前記クライアントに関して前記コンピュータ・アプリケーション・プログラムの前記第１のアプリケーション状態に対応する１つまたは２つ以上の許可可能なリクエストを含む第１のリクエスト・セットの許可可能なリクエストと整合するか否かを分析するよう構成されたアナライザ・モジュールと、
前記クライアント・リクエストが前記第１のリクエスト・セットの前記許可可能なリクエストの１つと整合する場合のみ前記クライアント・リクエストを実行するよう前記コンピュータ・アプリケーション・プログラムに命令するよう構成された命令モジュールと、
を備えたコンピュータ・システム。
【請求項１９】
前記クライアント・リクエスト受信器は、前記クライアントからさらなるクライアント・リクエストを受信するよう構成され、
前記アナライザ・モジュールは、前記さらなるクライアント・リクエストが、前記コンピュータ・アプリケーション・プログラムの、前記第１のアプリケーション状態とは異なる第２のアプリケーション状態に対応する１つまたは２つ以上の許可可能なリクエストを含む第２のリクエスト・セットの許可可能なリクエストと整合するか否かを分析するよう構成され、
前記命令モジュールは、前記さらなるクライアント・リクエストが前記第２のリクエスト・セットの前記許可可能なリクエストの１つと整合する場合にのみ、前記さらなるクライアント・リクエストを実行するよう前記コンピュータ・アプリケーション・プログラムに命令するようさらに構成されている請求項１８に記載のコンピュータ・システム。
【請求項２０】
前記コンピュータ・システムは、
前記第１のアプリケーション状態及び前記第２のアプリケーション状態を検出するよう構成されたアプリケーション状態検出器と、
前記第１のアプリケーション状態または前記第２のアプリケーション状態を検出することに応答して、それぞれ、前記第１のリクエスト・セット及び前記第２のリクエストを検索するよう構成されたリクエスト・セット検索器と、
をさらに備える請求項１９に記載のコンピュータ・システム。
【請求項２１】
前記コンピュータ・システムは、前記第１のリクエスト・セット及び前記第２のリクエスト・セットを受信するよう構成されたリクエスト・セット受信器をさらに備える請求項１９に記載のコンピュータ・システム。
【請求項２２】
前記クライアント・リクエスト受信器は、ハイパーテキスト・トランスファ・プロトコル（HTTP）リクエスト、ファイル・トランスファ・プロトコル（FTP）リクエスト、シンプル・メール・トランスファ・プロトコル（SMTP）リクエスト及びテルネット（telnet）リクエストのようなアプリケーション層リクエストを受信するよう構成された請求項１８乃至２１のいずれか１項に記載のコンピュータ・システム。
【請求項２３】
前記コンピュータ・システムは、前記クライアントと前記コンピュータ・システムとの間の接続状態を決定するよう構成された接続状態モニタをさらに含み、前記コンピュータ・システムは、前記コンピュータ・アプリケーション・プログラムの前記第１のアプリケーション状態及び第２のアプリケーション状態が前記接続状態に関連されるように構成される請求項１８乃至２２のいずれか１項に記載のコンピュータ・システム。
【請求項２４】
前記コンピュータ・システムは、時間単位ごとにクライアント・リクエストの閾値量を維持するよう構成され、前記命令モジュールは、クライアント・リクエストの量が前記閾値量より小さい場合にのみ前記クライアント・リクエストを実行するよう前記コンピュータ・アプリケーション・プログラムに命令するよう構成されている請求項１８乃至２３のいずれか１項に記載のコンピュータ・システム。
【請求項２５】
前記コンピュータ・システムは、
悪意のある及び悪意のないクライアント間を識別するよう構成された識別モジュールと、
悪意のないクライアント・リクエストの後に前記悪意のあるクライアント・リクエストが後続する待ち行列を得るために、前記悪意のある及び前記悪意のないクライアントからのクライアント・リクエストをランキング付けするよう構成されたランキング・モジュールと、
をさらに備え、前記命令モジュールは、前記悪意のないクライアント・リクエストを最初に実行するよう前記コンピュータ・アプリケーション・プログラムに命令するよう構成された請求項１８乃至２４のいずれか１項に記載のコンピュータ・システム。
【請求項２６】
前記インストレーション・モジュールがすべての悪意のないクライアント・リクエストに命令してしまった後、前記待ち行列からの前記悪意のあるクライアント・リクエストを分析するよう構成された第２のアナライザ・モジュールをさらに備える請求項２５に記載のコンピュータ・システム。
【請求項２７】
クライアントからの接触履歴を記憶するための記憶モジュールと、前記接触履歴から知られていないクライアントよりも前記待ち行列における一層高い前記接触履歴から知られているクライアントをランキングするよう構成されたランキング・モジュールとをさらに備えた請求項２５または２６に記載のコンピュータ・システム。
【請求項２８】
前記識別モジュールは、クライアントから受信されたクライアント・リクエストの数、前記コンピュータ・システムとのクライアントの接触履歴、リクエストの内容の種類、前記クライアントから受信されたリクエストの内容、の少なくとも１つに基づいて前記悪意のある及び悪意のないクライアントを識別するよう構成された請求項２５乃至２７のいずれか１項に記載のコンピュータ・システム。
【請求項２９】
前記コンピュータ・システムは、通信ネットワークを介して前記クライアント・リクエストを受信するよう構成された請求項１８乃至２８のいずれか１項に記載のコンピュータ・システム。
【請求項３０】
前記コンピュータ・アプリケーション・プログラムは、好ましくは、前記他のコンピュータ・システム上にインストールされたデータベース・アプリケーション・プログラムである請求項１８乃至２９のいずれか１項に記載のコンピュータ・システム。
【請求項３１】
前記コンピュータ・システムは、
前記他のコンピュータ・システムの前記データベース・アプリケーション・プログラムから許可可能なデータベース・リクエストの前記第１のセットを受信するよう構成された受信器、
を備え、前記命令モジュールは、前記クライアント・リクエストが前記許可可能なデータベース・リクエストの１つと整合する場合にのみデータベース動作を実行するよう前記データベース・アプリケーション・プログラムに命令するよう構成された請求項３０に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つまたは２つ以上のコンピュータ装置を用いた電子通信の分野に関する。
【背景技術】
【０００２】
インターネットの拡散でもって、ホスト・システムは、彼らのサービスを多くのクライアント・システムに提供することができ、ホスト及びクライアント・システムの双方は、世界を通して分散されている。適切な接続が一旦創設されると、ホスト・システムとクライアント・システムとの間に自由に情報が流れることができる。
【０００３】
例えば、従来の分散型ネットワークにおいては、複数のホスト・システムまたはサーバが、ネットワークまたはネットワークの集合、例えばインターネット、を介して複数のクライアント・システムと通信する。このような分散型ネットワークのアーキテクチュアは、強度のソース（例えば、多くのシステム間での情報の自由な流れを可能とする）及び脆弱性のソース（例えば、悪意のある攻撃に対して脆弱性を創成する）である。
【０００４】
具体的には、クライアント・システムが、ホスト・システムに、接続、例えばTCP（送信制御プロトコル）接続、を創設することを試みるとき、クライアント及びホストは、メッセージの一組のシーケンスもしくはパケットを交換する。この一般的な方法は、すべてのTCP接続：Web、telnet、email、等、に適用される。接続がセット・アップされると、クライアント・システムは、例えばコンテントのために、ホスト・システムにリクエストを送り得る。
【０００５】
ホスト・システム上でクライアント・システムの悪意のある動作を回避するもしくは減少するために、ファイアウォールが一般的に知られている。ファイアウォールは、それを通過するネットワーク・トラフィックを検査して、一組のルールに基づいて通過を拒否もしくは許容する専用の設備もしくはソフトウェアである。
【０００６】
通信が行われる場所、通信が妨害される場所、及び追跡されている状態、に依存して、ファイアウォールの幾つかの分類がある。パケット・フィルタとも呼ばれるネットワーク層ファイアウォールは、パケットが、創設されたルール・セットと整合しない限り、該パケットがファイアウォールを通過するのを許容しない、TCP/IPプロトコル・スタックの比較的低レベルで動作する。これらのファイアウォールは、パケット属性に基づいてトラフィックをフィルタリングする。ファイアウォールの管理者は、ルールを限定し得、もしくはデフォルト・ルールが適用され得る。ネットワーク層ファイアウォールは、一般に２つのサブカテゴリに分けられる。統制的（stateful）ファイアウォールは、それを横切って移行する（TCPストリーム、UDP通信のような）ネットワーク接続の状態の経過を追うファイアウォールである。該ファイアウォールは、異なった種類の接続に対し適法なパケットを区別するようプログラムされている。既知の接続状態と整合するパケットだけがファイアウォールによって許容され、他のパケットは拒絶される。非統制的（stateless）ファイアウォールは、パケット・フィルタリング能力を有するが、ホスト間の通信がどの段階に到達したかに関する一層複雑な決定を行うことができない。
【０００７】
アプリケーション層ファイアウォールは、TCP/IPスタックのアプリケーション・レベル（すなわち、すべてのブラウザ・トラフィック、もしくはすべてのtelnetまたはftpトラフィック）上で動作し、アプリケーションにまたはアプリケーションから移行するすべてのパケットを妨害する。原理的には、アプリケーション・ファイアウォールは、すべての望まれない外部からのトラフィックが、保護された機械に到達することを阻止する。これらのファイアウォールは、不適切なコンテントに対するパケットを検査する。XMLファイアウォールは、最近の種類のアプリケーション層ファイアウォールの例を挙げている。このようなファイアウォールの例は、EP 1 296 252によって提供される。
【０００８】
ネットワーク層ファイアウォールは、複雑なルール・セットがセット・アップされて維持されなければならない、という点で不利である。他方、アプリケーション層ファイアウォールは、パケットのコンテントのスクリーニング（ふるい分け）が、リソースのかなりの量を必要とする、及び/または時間の相当な量がかかり得る、という点で不利である。
【０００９】
当該技術において、例えばリソースを節約することができる改善されたセキュリティ・システムに対する必要性がある。
【発明の概要】
【課題を解決するための手段】
【００１０】
クライアントと電子通信するよう構成されたコンピュータ・システムにおけるコンピュータ・アプリケーション・プログラムを制御するコンピュータ履行される方法が提案される。コンピュータ・システムは、コンピュータ・アプリケーション・プログラムの第１のアプリケーション状態に対応する１つまたは２つ以上の許可可能なリクエストの第１のリクエスト・セットへのアクセスを有するように構成される。コンピュータ・アプリケーション・プログラムは、コンピュータ・システムまたは１つまたは２つ以上の他のコンピュータ・システム上で実行し得る。クライアント・リクエストは、コンピュータ・アプリケーション・プログラムのためのコンピュータ・システムにおいて受信される。コンピュータ・アプリケーション・プログラムは、（例えば、クライアント接続を用いて）前記クライアントと関係する第１のアプリケーション状態にある。クライアント・リクエストは、該クライアント・リクエストが、コンピュータ・アプリケーション・プログラムの第１のアプリケーション状態に対応する許可可能なリクエストの１つと整合するか否かを決定するために分析される。コンピュータ・アプリケーション・プログラムは、クライアント・リクエストが第１のリクエスト・セットの許可可能なリクエストと整合する場合にのみクライアント・リクエストを実行するようにこのプログラムに命令することによって制御される。
【００１１】
該方法を実行するためのコンピュータ・プログラム及びこのようなコンピュータ・プログラムを含むコンピュータ読み取り可能媒体も提案される。
【００１２】
コンピュータ・アプリケーション・プログラムを制御するためのコンピュータ・システムも提案される。コンピュータ・アプリケーション・プログラムは、コンピュータ・システムまたは１つまたは２つ以上の他のコンピュータ・システム上にインストールされる。コンピュータ・システムは、少なくとも１つのクライアントに接続するよう構成される。コンピュータ・システムは、前記コンピュータ・アプリケーション・プログラムに向けられたクライアント・リクエストを受信するよう構成されたクライアント・リクエスト受信器を備える。コンピュータ・プログラムは、次に、第１のアプリケーション状態にあり得る。コンピュータ・システムは、また、クライアント・リクエストが第１のリクエスト・セットの許可可能なリクエストと整合するか否かを分析するよう構成されたアナライザ・モジュールをも備える。第１のリクエスト・セットは、前記クライアントと関係するコンピュータ・アプリケーション・プログラムの第１のアプリケーション状態に対応する１つまたは２つ以上の許可可能なリクエストを備える。コンピュータ・システムは、また、クライアント・リクエストが第１のリクエスト・セットの許可可能なリクエストの１つと整合する場合にのみ前記クライアント・リクエストを実行するようにコンピュータ・アプリケーション・プログラムに命令するよう構成された命令モジュールをも備える。
【００１３】
クライアント・リクエストは、例えば、コンピュータ・アプリケーション・プログラムのためのコマンドを含み得る。
【００１４】
許可可能なリクエストの第１のセットは、前記コンピュータ・アプリケーション・プログラムのために有効な（大きい）複数のリクエストの選択を含み得ることを理解すべきである。
【００１５】
提案された方法及びシステムは、増加されたセキュリティを、リソースの減少されたアプリケーションと結合する。一般的に、コンピュータ・アプリケーション・プログラムは、複数のリクエスト、しばしば（非常に）大量のリクエスト、を取り扱うことができる。提案された方法及びシステムは、コンピュータ・プログラムのアプリケーション状態が与えられた場合、許可可能であるこれらのリクエストだけを選択することができる。その状態に対して許可可能なリクエストと整合するリクエストだけが実行され、確実なシステムを提供する。他方、方法及びシステムは、クライアントそれ自体を調査せず、特定の瞬間におけるコンピュータ・プログラムのアプリケーション状態に関係したクライアントから予想され得る一層低レベルのリクエスト（例えば、アプリケーション・レベル・リクエスト）の跡を追う。そうでない場合には、リクエストは、拒絶され、もしくは単に避けられるが実行されない。この方法は、迅速でなおかつ確実なトラフィックのスクリーニング（ふるい分け）を許容する。
【００１６】
当該方法及びコンピュータ・システムは、コンピュータ・アプリケーション・プログラムを実際に実行させる１つまたは２つ以上の他のコンピュータ・システムと通信状態にあり得る。コンピュータ・システムは、次に、ゲートキーパとして作用する。
【００１７】
アプリケーション・プログラムの例は、ウェブ・サーバ、ウェブ・サービス、アプリケーション・サーバ及び特にデータベースを含む。
【００１８】
請求項２及び１９の実施形態は、コンピュータ・アプリケーション・プログラムの適用可能なアプリケーション状態に対応するリクエストを動的に構築するという利点を提供する。コンピュータ・システムもしくはもう１つのコンピュータ・システムの通信状態の変更は、請求項３に限定されるアプリケーション・プログラムによるリクエストの実行によって決定され得る。
【００１９】
コンピュータ・アプリケーション・プログラムの特定のアプリケーション状態のための許可可能なリクエストを有する適用可能なリクエスト・セットについてコンピュータ・システムに知らせる種々の方法がある。
【００２０】
請求項２０の実施形態は、コンピュータ・アプリケーション・プログラムが、コンピュータ・システムへの特定のクライアント（接続）のためにそのアプリケーション状態を報告するだけであるという利点を有する。コンピュータ・システムは、コンピュータ・アプリケーション・プログラムのこの状態のための適用可能なリクエスト・セットを得るために、検索するために、または更新するために、報告された状態を用いる。
【００２１】
他方、請求項４及び２１の実施形態は、アプリケーション・リクエスト・セットが、コンピュータ・アプリケーション・プログラム（または、コンピュータ・システムにコンピュータ・プログラムのアプリケーション状態を報告するよう構成されたもう１つのプログラム）から直接受信されるという利点を有する。
【００２２】
請求項５、６及び２２は、実際のコンテントのレベル以下のレベル上のリクエストの実施形態を限定する。このレベル上のスクリーニングは、高速であるが確実である。
【００２３】
請求項７及び２３の実施形態は、例えば、統制的（stateful）なファイアウォールのようなそれらの接続によりコンピュータ・システムに接続される複数のクライアントの跡を追うことを可能とする。特に、コンピュータ・システムは、例えば、どのクライアントが接続されたか、及び/またはどのクライアント（接続状態）によりどのクライアント・リクエストが行われているか、を監視する。コンピュータ・アプリケーション・プログラムのアプリケーション状態は、次に、特定の接続状態に関係し得る。
【００２４】
請求項８及び２４の実施形態は、悪意のある及び悪意のないクライアント間を識別するのを許容する。ほとんどの組織は、インターネットのようなワイド・エリア・ネットワークからローカル・エリア・ネットワークを分離する一般にプロキシと称されるコンピュータ・システムを用いる。プロキシは、他の機能の中でもとりわけ、ネットワーク・アドレス変換（NAT）を用いる。プロキシによって行われるリクエストの量は、相当なものであるが、これらのリクエストは、ほとんどおそらく悪意のないものである。（内部クライアントから受信されたログイン・リクエストの数の履歴データを用いたローカル・エリア・ネットワークから予想され得るリクエストまたは平均数に例えば基づいて）適切な閾値を設定することにより、悪意のある外部のリクエストが、ローカル・エリア・ネットワークからの悪意のないリクエストから識別され得る。内部のクライアントからのリクエストの頻度は、ログイン・リクエストの数及びアプリケーション・プログラムのフロー、すなわち、コンピュータ・アプリケーション・プログラムのアプリケーション状態のシーケンス、に基づいて推定され得る。外部クライアントからの多数のリクエストは、アタックもしくは攻撃を示し得る。このようなリクエストは、否定され得る。これらのクライアントからのリクエストは、接触履歴、過去の行為及び/または領域に基づいて、監視され、拒絶され、または分析され得る。
【００２５】
請求項９−１２及び２５−２８の実施形態は、リクエストの高い数または同じクライアント・リクエストの高い数を例えば送るクライアントを阻止するもしくは減速（throttling back）するのを許容する。より一般的には、悪意のあるクライアントは、悪意のないクライアントから識別され得、これらのリクエストがコンピュータ・システムに後で到着する場合でさえ、後者は前者の前にサービスされる。これらの実施形態は、一般にセキュリティを追加するけれども、これらの実施形態は、また、請求項１−８に限定された発明とは別に適用され得ることを理解すべきである。
【００２６】
クライアント及びコンピュータ・システムは、単一の装置で履行され得るけれども、請求項１３及び２９の実施形態が好適である。
【００２７】
可能なリクエストの量は、データベース・コンピュータ・アプリケーション・プログラムに対して特に大きい。請求項１４、１５、３０及び３１の実施形態は、これらの場合において特に有利である。
【００２８】
以後、本発明の実施形態をさらに詳細に説明する。しかしながら、これらの実施形態は、本発明の保護の範囲を制限するものとして解釈され得ないことを理解すべきである。
【図面の簡単な説明】
【００２９】
【図１Ａ】本発明の実施形態によるコンピュータ・システムの使用の種々の状況を示す概略図である。
【図１Ｂ】本発明の実施形態によるコンピュータ・システムの使用の種々の状況を示す概略図である。
【図２Ａ】本発明の実施形態によるシステムを示す概略図である。
【図２Ｂ】本発明の実施形態によるシステムを示す概略図である。
【図３Ａ】本発明の実施形態による方法のステップを示す図である。
【図３Ｂ】本発明の実施形態による方法のステップを示す図である。
【発明を実施するための形態】
【００３０】
図１A及び図１Bは、本発明の実施形態によるコンピュータ・システム１の使用の種々の状況を示す概略図である。
【００３１】
図１Aにおいて、クライアント装置２A、２Bは、ネットワーク３を介してコンピュータ・システム１に接続される。コンピュータ・システム１は、しかしながら、クライアント自身を実行することもでき、ディスプレイ４上にクライアントのためのユーザ・インターフェースを提供し得る。コンピュータ・システム１は、また、クライアントのリクエスト（コマンド）が向けられるウェブ・サーバまたはデータベース・アプリケーションのようなコンピュータ・アプリケーション・プログラムをも実行する。クライアント装置は、無線アクセス・ネットワーク５を介してネットワーク３と通信する電話、PDA、ラップトップ・コンピュータ等のような移動無線装置２Aと、デスクトップ・コンピュータ２Bのような結線装置とを含み得る。
【００３２】
図１Bにおいて、クライアント装置２C、２D及び２Eは、第１のネットワーク３を介してコンピュータ・システム１に接続される。コンピュータ・システム１は、クライアントからのリクエストが向けられる特定のコンピュータ・アプリケーション・プログラムを実行するホスト・システムまたはサーバ６のためのゲートキーパとして作用する。複数のこのようなサーバ６が設けられ得る。コンピュータ・システム１は、第２のネットワーク７を介してホスト・システム６に通信的に接続される。ホスト・システム６は、データベース８にアクセスし、データベース８を用いてデータベース・アプリケーションを特に実行し得る。
【００３３】
種々の他の状況が、本発明の範囲から逸脱することなく、コンピュータ・システム１のアプリケーションのために、当業者によって予想され得る。
【００３４】
クライアント・アプリケーション・プログラムは、コンピュータ・システム１、ホスト・システム６または１つまたは２つ以上の他のコンピュータ・システム上にインストールされて実行され得る。コンピュータ・アプリケーション・プログラムは、複数のアプリケーション状態を有する。アプリケーション状態は、アプリケーション・プログラムのための状態の特定の（予め決められた）シーケンスにおける論理ステップを表し得る。コンピュータ・アプリケーション・プログラムのアプリケーション状態は、そのプログラムに対するリクエストの実行に続いて変化し得る。大きい量のリクエストが、これらのアプリケーション状態に対して有効である。しかしながら、アプリケーション状態の各々に対して、大量のリクエストの特定のサブセットだけが許可可能である。
【００３５】
例として、ウェブサイト・ページ上のリンクの活性は、リンクの新しいセットを有するもう１つのウェブ・ページに戻り得る（アプリケーション状態の変化）。ウェブ・サーバに対する多くの可能なリクエストの内、戻されたウェブ・ページ上のリンクの活性だけが、このアプリケーション状態のための許容可能なリクエストのセットに属する。
【００３６】
図２Aにおいて、図１A及び１Bのコンピュータ・システム１が図式的に示されている。コンピュータ・システム１は、プロセッサ１０、メモリ１１、ネットワーク３を介して装置２A−２Eの１つまたは２つ以上（そしておそらく第２のネットワーク７を介してホスト・システム６）と通信するためのネットワーク・アダプタ１２を含む。通常、図１A及び１Bのコンピュータ・システム１は、２つまたは３つ以上のクライアント装置に接続するよう構成されるであろうことが理解されるべきである。
【００３７】
コンピュータ・システム１は、また、コンピュータ・システム１またはホスト・システム６によって実行されるアプリケーション・プログラムの種々のアプリケーション状態のためのリクエスト・セットを有するデータベース１３をも収容し得る。データベース１３は、コンピュータ・システム１上で実行されるデータベース・アプリケーション・プログラムによっても用いられ得る。
【００３８】
コンピュータ・システム１の特定の機能は、図２Bに図式的に示されており、以下に一層詳細に説明する。その機能は、プロセッサ１０上で実行される１つまたは２つ以上のコンピュータ・プログラムのソフトウェア・コード部分として大いに履行され得ることが理解されるべきである。
【００３９】
コンピュータ・システム１は、クライアント装置２A−２Eとの接続を確立するための接続モジュール２０を含んでいる。接続モジュールは、クライアント装置との接続をモニタする。接続モジュール２０は、コンピュータ・システム１に対するクライアントのための通信状態を決定するよう構成され得る。
【００４０】
コンピュータ・システム１は、クライアント装置２A−２Eまたは内部クライアントからのリクエストを受信する（及びおそらく処理する）よう構成されたクライアント・リクエスト受信器２１を含む。クライアント・リクエストは、クライアント・システム１及び/またはホスト・システム６上にインストールされたコンピュータ・アプリケーション・プログラムのためのリクエストまたはコマンドである。クライアント・リクエストは、例えば、特定のウェブ・ページまたはデータベース８、１３のためのコマンド上のリンクの活性から帰結するhttp-リクエストであり得る。
【００４１】
コンピュータ・システム１は、また、クライアント・リクエスト受信器２１によって受信されたクライアント・リクエストが、該クライアントに関してコンピュータ・アプリケーション・プログラムのアプリケーション状態に対応する１つまたは２つ以上の許可可能なリクエストを含むリクエスト・セットの許可可能なリクエストと整合する場合に分析するよう構成されたアナライザ・モジュール２２を有し得る。
【００４２】
コンピュータ・システム１は、また、クライアント・リクエストが前記リクエスト・セットの許可可能なリクエストの１つと整合する場合にのみクライアント・リクエストを実行するために、コンピュータ・システム１及び/またはホスト・システム６のコンピュータ・アプリケーション・プログラムを命令するための命令モジュール２３をも含む。
【００４３】
もちろん、クライアント・リクエスト受信器２１は、さらなるクライアント・リクエストを受信し得る。アナライザ・モジュール２２は、さらなるクライアント・リクエストがさらなる対応のリクエスト・セットの許容可能なリクエストに整合するか否かを分析し得、リクエスト・セットの各々は、コンピュータ・アプリケーション・プログラムの異なったアプリケーション状態に対応する。命令モジュール２３は、次に、これらのリクエストが対応のアプリケーション状態の適用可能なリクエスト・セットの許容可能なリクエストに整合する場合にのみさらなるリクエストを実行するようコンピュータ・アプリケーション・プログラムに命令し得る。
【００４４】
コンピュータ・アプリケーション・プログラムの特定のアプリケーション状態に対する許容可能なリクエストを有する適用可能なリクエストについてコンピュータ・システム１に知らせる種々の方法がある。
【００４５】
コンピュータ・システム１は、例えば、コンピュータ・システム１及び/またはホスト・システム６のコンピュータ・アプリケーション・プログラムのアプリケーション状態を検出するために構成されたアプリケーション状態検出器２４を含み得る。検出器２４がプログラムのアプリケーション状態を検出したならば、リクエスト・セット検索器２５が、該特定のアプリケーション状態のためのリクエスト・セットを検索し、取得し、及び/または更新するために設けられる。リクエスト・セットは、例えば、データベース１３から検索され得る。
【００４６】
しかしながら、コンピュータ・アプリケーション・プログラムの特定のアプリケーション状態のための許容可能なリクエストの適用可能なリクエスト・セットは、また、コンピュータ・システム１のリクエスト・セット受信器２６によって受信され得る。リクエスト・セットは、例えば、コンピュータ・システム１またはサーバ６上で実行しているコンピュータ・アプリケーション・プログラムから、またはもう１つのコンピュータ・プログラムから受信され得る。
【００４７】
コンピュータ・システム１は、また、クライアント・リクエストの閾値量を記憶し得る。コンピュータ・システム１は、時間単位ごとにクライアント・リクエストの閾値量を維持するために構成されている。命令モジュール２３は、クライアント・リクエストの量が前記閾値量より小さい場合にのみクライアント・リクエストを実行するようコンピュータ・アプリケーション・プログラムに命令するために構成されている。このような機能性は、例えば、コンピュータ・システム１がプロキシ・サーバで履行されるとき、もしくは多くのクライアントが共通の公共IPアドレスを共有するとき、有利性を立証し得る。
【００４８】
代替的な実施形態において、コンピュータ・システム１は、また、悪意のある及び悪意のないクライアント間を区別するために構成された識別モジュール２７をも有し得る。悪意のある及び悪意のないクライアントは、例えば、クライアントから受信されたクライアント・リクエストの数、コンピュータ・システム１とのクライアントの接触履歴、リクエストの内容の種類、及び/または前記クライアントから受信されたリクエストの内容、に基づいて識別され得る。悪意のあるクライアント・リクエストが後にくる悪意のないクライアント・リクエストの待ち行列を得るために悪意のある及び悪意のないクライアントからのクライアント・リクエストをランク付けするために構成されたランキング・モジュール２８が設けられる。命令モジュール２３は、最初に、前記悪意のないクライアント・リクエストを実行するよう前記コンピュータ・アプリケーション・プログラムを命令するために構成されている。悪意のあるクライアント・リクエストは、適法なリクエストが取り扱われた後、もう１つのアナライザ（分析器）モジュール２９によって分析され得、それにより、悪意のあるクライアントを罰する（penalizing）。その結果は、例えば、コンピュータ・システム１と悪意のあるクライアントとの間の接触履歴を更新するために用いられ得る。
【００４９】
コンピュータ・システム１は、クライアントからの接触履歴を記憶するための記憶モジュール３０を有し得る。ランキング・モジュール２８は、前記接触履歴から知られていないクライアントよりも待ち行列において一層高い前記接触履歴から知られているクライアントをランキング付けするために構成され得る。
【００５０】
次に、コンピュータ・システム１の動作を図３A及び図３Bを参照して説明する。コンピュータ・システム１は、図１Bと一致して、データベース８からデータを検索するためのデータベース・アプリケーション・プログラムを実行するホスト・システム６のためのゲート・キーパとして作用すると仮定する。
【００５１】
クライアント装置２C上にインストールされたクライアントは、通信ネットワーク３を介してホスト・システム６上で実行するコンピュータ・アプリケーション・プログラムの使用を要求する。
【００５２】
ステップ４０において、コンピュータ・システム１は、リクエストを傍受し、接続モジュール２０を用いて接続を創設する。接続モジュール２０は、クライアント装置２Cからのリクエスト及び接続を監視する。開始ページ、例えば、htmlページがクライアント装置２Cに提起される。コンピュータ・アプリケーションを開始する割り当てられた許容可能なリクエストを有する初期アプリケーション状態は適用し得るけれども、コンピュータ・システム１は、初期要求を遮蔽（screen）しない、ということをここでは仮定している。
【００５３】
クライアント装置２Cに提起されたコンピュータ・アプリケーション・プログラムの開始ページは、要求の数が、例えば、http GET要求を為すのを許容する。これらの要求は、コンピュータ・アプリケーション・プログラムの開始ページ（アプリケーション状態）に対応する許容可能なリクエストの第１のリクエスト・セットを構成する。簡単さの理由のために、ここでは有効なリクエストだけが、活性化され得るハイパーリンクのセットによって構成されるということを仮定する。しかしながら、他のリクエストまたはコマンド、例えば、http-postリクエストが可能であるということを理解すべきである。
【００５４】
ステップ４１において、http-リクエストは、開始ページからのハイパーリンクの活性化から帰結するクライアント装置２Cから受信される。接続モジュール２０は、このリクエストが開始ページからのリクエストを発行したクライアント装置２Cから来るということを監視する。
【００５５】
リクエスト・セット受信器２６は、開始ページに対して有効なホスト・システム６上で実行するコンピュータ・アプリケーション・プログラムから第１のリクエスト・セットを受信する。ステップ４２において、コンピュータ・システム１のアナライザ・モジュール２２は、クライアント装置２Cから受信されたhttp-リクエストが、html開始ページのための受信された第１のリクエスト・セットの許容可能なリクエストと整合するか否かを調べる。
【００５６】
http-リクエストが第１のリクエスト・セットのリクエストによって整合されないならば、命令モジュール２３は、http-リクエストを実行することをホスト・システム６上で実行するコンピュータ・アプリケーション・プログラムに命令しないであろう（ステップ４３）。クライアント装置の視点から有効であるように見えるリクエストは、このリクエストがアプリケーション・リクエスト・セットの部分でないときに実行されないということが可能であることに注意されたし。
【００５７】
ステップ４４において、さらなる動作が実行されないリクエスト上で行われる。これらの動作は、それに制限されるわけではないが、リクエストを棄却する、リクエストを分析する、リクエストを記憶する、リクエスト履歴を構築するためにリクエストからの情報を抽出する、等を含む。
【００５８】
クライアント装置２Cからのhttp-リクエストが開始htmlページの第１のリクエスト・セットの許容可能なリクエストと整合するということをアナライザ・モジュール２２が発見したならば、命令モジュール２３は、ステップ４５において、データベース８上のhttp-リクエストを実行するようコンピュータ・アプリケーション・プログラムに命令する。さらなる動作が、また、これらの実行されたリクエスト上で行われ得るということが注意される。
【００５９】
リクエストの実行は、リクエストに依存した新しいhtmlページを構築するためにデータベースからのアプリケーション・プログラム抽出データを作る。新しいhtmlページは、クライアント装置２Cに送信される。
【００６０】
新しいhtmlページは、コンピュータ・アプリケーション・プログラムの新しいアプリケーション状態に対応する（ステップ４６）。クライアント装置２Cとの開いた接続を維持する接続モジュール２０は、新しいhtmlページがクライアント装置２Cに送信されたということを登録する。
【００６１】
ステップ４７において、さらなるhttp-リクエストがクライアント装置２Cから受信される。
【００６２】
http-リクエストが受信される前または受信されてしまった後、コンピュータ・アプリケーション・プログラムは、新しいアプリケーション状態に対応するリクエスト・セットについてアナライザ・モジュール２２に知らせている。さらなるhttp-リクエストを受信すると、アナライザ・モジュール２２は、ステップ４８において、さらなるhttp-リクエストが新しいアプリケーション状態に対して有効なリクエスト・セットの許容可能なリクエストと整合するか否かを調べる。
【００６３】
最後に、アナライザ・モジュール２２による分析の結果に依存して、命令モジュール２３は、リクエストを実行するよう（ステップ４９）または実行しないよう（ステップ５０）いずれかをコンピュータ・アプリケーション・プログラムに命令する。
【００６４】
フローチャートは、クライアント装置２Cのさらなるリクエストのために続くということを理解すべきである。
【００６５】
コンピュータ・システム１は、該コンピュータ・システム１が複数のクライアントからのリクエストを取り扱うために構成されるよう、例えば、各接続ごとのテーブルを有する接続モジュール２０を用いて、コンピュータ・システム１が各クライアントごとのアプリケーション状態を追跡するが、これに反して、コンピュータ・アプリケーション・プログラムのアプリケーション状態は、特定の時間の場合において、クライアントの各々ごとに異なり得る、ということも理解すべきである。
【００６６】
クライアントから受信された各リクエストは、例えば、統計的理由のために、ステップ４４に従って分析され得るということも理解すべきである。
【符号の説明】
【００６７】
１  ・・・コンピュータ・システム
２A、２B、２C、２D、２E  ・・・クライアント装置
３  ・・・ネットワーク
４  ・・・ディスプレイ
５  ・・・無線アクセス・ネットワーク
６  ・・・サーバ
７  ・・・第２のネットワーク
８  ・・・データベース
１０  ・・・プロセッサ
１１  ・・・メモリ
１２  ・・・ネットワーク・アダプタ
１３  ・・・データベース
２０  ・・・接続モジュール
２１  ・・・クライアント・リクエスト受信器
２２  ・・・アナライザ・モジュール
２３  ・・・命令モジュール
２４  ・・・アプリケーション状態検出器
２５  ・・・リクエスト・セット検索器
２６  ・・・リクエスト・セット受信器
２７  ・・・識別モジュール
２８  ・・・ランキング・モジュール
２９  ・・・もう１つのアナライザ（分析器）モジュール
３０  ・・・記憶モジュール
【図１Ａ】
2011512572.tif 000003
【図１Ｂ】
2011512572.tif 000004
【図２Ａ】
2011512572.tif 000005
【図２Ｂ】
2011512572.tif 000006
【図３Ａ】
2011512572.tif 000007
【図３Ｂ】
2011512572.tif 000008
【国際調査報告】
2011512572.tif 000009
2011512572.tif 000010
2011512572.tif 000011