JP4629291B2 - Method and system for verifying client requests - Google Patents

Method and system for verifying client requests Download PDF

Info

Publication number
JP4629291B2
JP4629291B2 JP2001533487A JP2001533487A JP4629291B2 JP 4629291 B2 JP4629291 B2 JP 4629291B2 JP 2001533487 A JP2001533487 A JP 2001533487A JP 2001533487 A JP2001533487 A JP 2001533487A JP 4629291 B2 JP4629291 B2 JP 4629291B2
Authority
JP
Japan
Prior art keywords
client
actions
input
execution
action
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2001533487A
Other languages
Japanese (ja)
Other versions
JP2003513349A5 (en
JP2003513349A (en
Inventor
モラン、タル
− ハナニ、ユヴァル エル
ラーナン、ギル
レシェフ、エラン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2003513349A publication Critical patent/JP2003513349A/en
Publication of JP2003513349A5 publication Critical patent/JP2003513349A5/ja
Application granted granted Critical
Publication of JP4629291B2 publication Critical patent/JP4629291B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0245Filtering by information in the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0281Proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer

Abstract

A system and method are presented for authorizing execution of requested actions (104A) transmitted between clients (122) and servers (100) of a data processing system. The method includes receiving a message (104B) including a set of actions and simulating execution of the set of actions. A list representing allowable actions (118) and user-definable inputs to the simulated actions is defined. The list of allowable actions (118) and user definable inputs to the allowable action (118) is then compared to user requested actions and inputs. When elements within the user requested actions and inputs are included in the allowable actions (118) and input list, the user requested actions and inputs are authorized for execution (124).

Description

【0001】
(著作権の注意)
本出願ドキュメントの部分は、著作権保護を受ける内容を含む。著作権の所有者は、特許事務所または商標事務所の特許ファイルまたは記録にあるように、誰もが出願ドキュメントまたは出願の開示をファクシミリで再生することに異存はないが、そうでない場合、すべての著作権を保有する。
【0002】
(関連する出願)
本出願は、以下の同時係属中の出願に関連する。
・1999年10月25日に出願された、弁理士整理番号第3269/8号であるMETHOD AND SYSTEM FOR VERIFYING A CLIENT REQUESTという名称の米国仮特許出願第60/161,473号
・1999年7月1日に出願された、弁理士整理番号第3269/6号であるMETHOD AND SYSTEM FOR EXTRACTING APPLICATION PROTOCOL CHARACTERISTICSという名称の米国特許出願番号第09/345,920号
・1998年9月9日に出願された、弁理士整理番号第3269/3号であるMETHOD AND SYSTEM FOR PROTECTING OPERATIONS OF TRUSTED INTERNAL NETWORKSという名称の米国特許出願番号第09/149,911号
・1998年9月9日に出願された、弁理士整理番号第3269/4号であるMETHOD AND SYSTEM FOR MAITAINING RESTRICTED OPERATING ENVIRONMENTS FOR APPLICATION PROGRAMS OR OPERATING SYSTEMSという名称の米国特許出願番号第09/150,112号
・PCT出願PCT/IL98/3269/4
・PCT出願PCT/IL98/00443
・PCT出願PCT/IL00/00378
これらの出願の開示は、参照することによって、完全に本明細書に組み込まれている。
【0003】
(発明の背景)
本発明は、一般に、プライバシおよびセキュリティのシステムに関し、より詳細には、データ処理システム内において、クライアント装置とホスト装置との間で送信された要求、データ、情報内容、アプリケーション、および他の情報を認可する方法およびシステムに関する。
【0004】
(従来の技術)
クライアント/サーバ・データ処理システムでは、いくつかのパーソナル・コンピュータ、ワーク・ステーション、携帯式および/または手持ち式装置など(「クライアント」)は、1つまたは複数のホスト・コンピュータ(「サーバ」)と連結され、かつ通信している。サーバは、ネットワーク上でクライアントによって共有されている情報および/またはアプリケーション・プログラムに対するクライアントからの要求を処理する。ますます、クライアント/サーバ・ネットワークは、例えば、それ自体がワールド・ワイド・ネットワークの一部である、すなわち、インターネットのワールド・ワイド・ウェブの一部(「ウェブ」)であることが可能であるイントラネットおよびエキストラネットなど、より広範な「ネットワークのネットワーク」を形成するために、連結されるようになってきた。ネットワークを連結することにより、クライアントは、ネットワークにわたって、リソース(例えば、情報およびアプリケーション・プログラム)を供給することが可能になる。
【0005】
潜在的にワールド・ワイド・ネットワーク上で、共有されている情報およびアプリケーション・プログラムの利用可能性が増大するにつれ、個々のクライアント/サーバ・ネットワークの各々の脆弱性が増大している。例えば、ネットワークの1つに記憶されている所有権を主張できる情報およびアプリケーション・プログラムを検索および/または損傷しようとする不謹慎な個人は、所有権を主張できる情報およびアプリケーション・プログラムにアクセスして、無認可の方式で、それを使用する可能性がある。そのような無認可の使用を防止する努力では、多くのネットワークは、「ファイアウォール」を通して、他のネットワークに接続されている。従来のファイアウォールは、内部ネットワーク・リソース(例えば、特有のウェブ・サーバまたはフォルダ)へのアクセス制御に対処し、ネットワークの部分へのアクセスを制限し、および、それに記憶されている所有権を主張できる情報およびアプリケーション・プログラムに対する無認可の検索または損傷を防止するように設計されたハードウェアおよび/またはソフトウェア・システムを含む。
【0006】
しかし、多くの従来のファイアウォール・システムは、アプリケーション・レベルでは認可に対処せず、認可されたクライアントであると偽った不謹慎な個人によって機能しなくなる可能性がある。例えば、多くのウェブ・アプリケーションは、アプリケーションのユーザは、実際に彼/彼女のブラウザ上でアプリケーションのモバイル・エージェントを実行していると想定している。しかし、悪意のあるユーザは規格のウェブ・ブラウザ・ソフトウェアを使用せずにウェブ・サーバに接続することができ、したがって、そのユーザはブラウザ側で強化することが可能である制限になんら束縛されず、悪意のあるユーザは、標準的なクライアントであると偽って、ウェブ・サーバに破壊的なまたは捏造したデータを送信することができる。
【0007】
共通して譲受された米国特許出願第09/345,920号には、標準的なHTMLドキュメントのユーザからの要求を確認するための解決法が記載されている。その解決法は、HTMLドキュメントの内容(「認可されたアクション」)に基づいて、ブラウザ・ソフトウェアが取ることが可能であるアクションのセットまたはパターン(HTTP要求)を抽出することに基づいている。次いで、この認可されたアクションのセットは、クライアントのアプリケーションによって送信された要求に対して整合される。ユーザが、規格のブラウザの1つを使用していない場合であっても、アクションの法的または認可されたセット内からの要求のみが、ウェブ・サーバに渡されることになる。
【0008】
以上の内容を考慮して、本発明の発明者は、上述した確認技術を、ウェブ・サーバの代わりにクライアント・システム上で実行する論理(例えば、HTMLページに埋め込まれたJavaScript(TM)プログラム)に拡張する必要性を認識した。特に、本発明者は、外部データとその上で起きている事象を入手および確認するために、クライアント・サイドの論理の実行をシミュレーションする必要性を認識した。
【0009】
(発明の簡単な概要)
本発明の目的は、サーバ・システムの代わりに、クライアント・システム上で実行する論理のための確認技術を提供することである。
【0010】
本発明の他の目的は、クライアント・サイドの論理(例えば、HTMLページに埋め込まれたJavaScriptプログラム)のための確認技術を提供することである。この技術は、外部データとそこで起きている事象を入手および確認するために、論理の実行をシミュレーションする。
【0011】
本発明のさらに他の目的は、外部データと事象とに対する認可された要求のみが、クライアントから保護されたサーバに渡されるように、論理の実行をシミュレーションするクライアント・サイドの論理のための確認技術を提供することである。
【0012】
本発明の他の目的および利点は、図面とそれに続く記載を考慮することから、より明らかになるであろう。
【0013】
以上および他の問題点は、克服され、目的は、システムおよび方法が、クライアントとデータ処理システムのサーバとの間で送信された要求されたアクションの実行を認可するために提示されている、本発明の実施形態による方法および装置によって実現される。該方法は、アクションのセットまたはプログラム(例えば、HTMLページに埋め込まれたJavaScriptプログラム)を含んでいるメッセージを受信することと、アクションのセットの実行をシミュレーションすることとを含む。リストは、実行されたアクションと、実行されたアクションへのユーザが定義可能な入力とを表すように定義される。次いで、実行されたアクションと、実行されたアクションへのユーザが定義可能な入力のリストとは、許容可能なアクションと入力のリストと比較される。実行リスト内の要素が許容可能なアクションと入力のリストに含まれているとき、メッセージとアクションの含まれていたセットは認可される。
【0014】
本発明は、例示的であり、限定的でないことを意図している添付の図面の図に示されている。図では、同じ参照符号は、同じまたは対応する部分を指すことを意図している。
【0015】
(好ましい実施形態の詳細な説明)
図1Aは、本発明の一実施形態により構成されかつ動作するクライアント/サーバ・データ処理ネットワーク10を示す。データ処理ネットワーク10は、1つまたは複数のホスト/サーバ・コンピュータと連結され、かつ通信している、パーソナル・コンピュータ、ワーク・ステーション、携帯式および/または手持ち式装置など、複数のクライアント・システムを含む。図示を明瞭にするために、複数のクライアントは、クライアント・システム12によって表し、1つまたは複数のサーバは、サーバ14によって表している。クライアント12とサーバ14は、例えばインターネットのワールド・ワイド・ウェブの部分(「ウェブ」)、イントラネット、エキストラネット、または他の個人的なネットワークなど、通信ネットワーク16に有線接続または無線接続を介して結合された、遠隔装置および/または局所装置とすることが可能であることを理解されたい。
【0016】
本発明によれば、認可プロキシ・システム18は、クライアント12とサーバ14の間で結合されており、クライアント12とサーバ14の間でセキュリティ・ポリシ・プロトコルを強化する。例えば、認可プロキシ・システム18は、認可されたアクション(以下で定義)のみが、クライアント12とサーバ14との間で送信された要求、メッセージ、データ、情報内容、アプリケーション、および他の情報などの内部において実施されることを保証する。認可プロキシ・システム18は、クライアント12とサーバ14との間で送信された要求、メッセージ、データ、情報内容、およびアプリケーションの内部にあるコマンド、フィールド、ユーザ選択可能入力オプション、HTTP要求など(例えば、「要求されたアクション」)の実行をシミュレーションし、要求されたアクションが、許容可能なアクション(例えば、「認可されたアクション」)のセット内において定義されることを保証する。許容可能なアクションのセット内に存在しないあらゆるアクションは、アクションの標的(例えば、サーバ14またはクライアント12)に到達し、おそらくはそれを破壊する前に、認可プロキシ18によって拒否される。
【0017】
認可プロキシの実装戦略を変更することは、本発明の範囲内にあることを理解されたい。例えば、図1Aは、サーバ14とは分離した別個のネットワーク10のハードウェア構成要素18として認可プロキシを示す。図1Bでは、認可プロキシは、サーバ20上で実行するアプリケーション・プログラミング論理(「プラグイン」論理26)として実装されている。また、サーバ20は、例えばデータ・ストア28に含まれている、またはウェブ・ページ30の上に含まれている、サーバ20にあるアプリケーション・プログラム、情報内容、およびデータを、要求のあり次第クライアント12に提供するためのプラグイン論理22および24を含む。本発明によれば、認可プラグイン論理26は、送信する前に、クライアント12に提供されるプログラム、内容、およびデータを確認するために、サーバ20の上で実行される。
【0018】
別法として、図1Cは、ネットワーク10’上のルータまたはハブ42に結合されたスニファ装置40内において侵入検出システムとして動作する認可プロキシを示す。一般に知られているように、ハブ42は、ネットワーク10’内において通信を向ける。図1Cに示したように、ハブ42は、ネットワーク10’上の直接通信から、ウェブ・サーバ44を隔離する。スニファ40は、ウェブ・サーバ40を標的にした送信を検出し、遮断する。スニファ40は、遮断した送信を評価し、送信内において要求されたアクションを、例えば、記憶装置46内に含まれている認可されたアクションのリストと比較するために、以下で詳述する方法を実行する。受容可能でない場合、スニファ40は、メッセージを変更するか、または、ネットワーク上の他のシステムにメッセージを渡す。
【0019】
本発明の実施形態について、ウェブをベースとするアプリケーションとして特定のアプリケーションを有するように記載しているが、本明細書に記載されているシステムおよび方法が、任意のクライアント/サーバ通信システム、特に、無認可の要求、データ、およびアプリケーションからサーバを保護するのが望ましい通信システム内において適用可能であることは、本発明の範囲内にあることを理解されたい。
【0020】
以下で詳述するように、本発明の認可プロキシは、サーバ・システムの代わりに、クライアント・システム上で実行される論理を確認するために、2つの技術を使用する。第1の技術では、認可プロキシは、クライアント・サイドの論理の実行をシミュレーションし、各可能なコマンド、フィールド、ユーザが選択可能な入力オプション、およびHTTP要求を呼び出すおよび/またはトリガする。その結果、許容可能なブラウザ・アクションの完全なセットが識別され、実際のクライアント・セッションからの後の要求を確認するために使用される。第2の技術では、プロキシは、実際のクライアント・セッション中に、クライアントサイドの論理の実行を追跡する。追跡の結果は、サーバ・リソースに対する要求内において、認可プロキシに送信される。応答して、認可プロキシは、クライアント・サイドの論理の実行をシミュレーションし、シミュレーション中に入力オプションまたは外部データに対する他の要求に遭遇するとき、追跡結果が使用される。成功したシミュレーションは、サーバ・リソースに対するクライアント要求の承認となり、認可プロキシは、実際の処理のために、要求を適切なサーバに渡す。
【0021】
2つの確認技術は、技術が未知のデータとユーザ介入事象とに関するクライアント論理の問合わせに応答する方法の点で異なっている。これらの技術については、以下で詳述する。
【0022】
本発明の第1の態様では、認可プロキシ(例えば、プロキシ18、「プラグイン」論理26、およびスニファ40)は、クライアントとサーバとの間の送信を評価する方法を呼び出し、サーバから発信されたメッセージ(例えば、JavaScriptオブジェクト)に組み込まれているクライアント・サイドの論理をシミュレーションし、可能な要求されたアクションのリストを抽出する方法を呼び出す。クライアントが、要求を送信する場合、要求されたアクションは、認可されたアクションのリストに対して確認される。アクションが許容可能である場合、送信は、意図した標的の上に渡され、したがって、意図したアプリケーションに矛盾しない要求のみが実施される。
【0023】
図2は、データ処理システムのクライアントとサーバとの間における伝送を確認するためのプロセス(例えば、前述した評価プロセス、シミュレートするプロセス、および抽出プロセス)を示す流れ図である。例えば、図2は、ウェブ・サーバからクライアント(例えば、図1のサーバ14およびクライアント12)への伝送(例えば、HTMLウェブ・ページ102)を描いている。ブロック100で、サーバ14が、HTMLウェブ・ページ102をクライアント12に伝送する。伝送は、図2において線104Aおよび104Bで表されている。図1A〜1Cおよび図2に示すとおり、クライアント12に対するどの伝送も、それぞれ、認可プロキシ18、26、40によって代行受信される。これに応答して、認可プロキシは、確認プロセス(その詳細を破線106内に示す)を呼び出す。
【0024】
ブロック108で、評価プロセスが呼び出される。評価プロセスには、例えば、HTMLページ102を構文解析して、内容およびHTMLタグ、ならびにその中に組み込まれたクライアント側論理(例えば、JavaScriptコード)を識別することが含まれる。HTMLページ102中に存在する構成要素が識別されると、認可プロキシは、ページ102の構成要素の実行をシミュレートして(例えば、シミュレートされたブラウザ環境)、可能なすべての要求された処理を伝送の中で識別することができ、認可された処理のリストに提供できるようにする。
【0025】
シミュレートされたブラウザ環境には、シミュレートされたブラウザのDocument Object Model(「DOM」)およびブラウザ・オブジェクトが再現される、それぞれ、ブロック110および112、JavaScriptランタイム環境が含まれる。JavaScript標準オブジェクトのいくつかは、以下にさらに詳細に説明するとおり、置き換える必要がある。認可プロキシが、シミュレートされた環境内でHTMLページ102の構成要素を実行する。環境内のフックが、あらゆるトリガされたブラウザ処理、例えば、WEBサーバからドキュメントを検索する処理、またはWEBサーバに書式をサブミットする処理を認可プロキシに知らせる。シミュレーションが完了すると、これらの処理は、以下に説明するとおり、クライアントの実際の要求(ブロック120における)に対してマッチされた認可された処理のリストを補足する。
【0026】
前述したとおり、オブジェクトのいくつかおよびそのメソッドは、クライアント・ブラウザ環境を表すようにシミュレートされる必要がある。その第1に来るのは、HTMLドキュメント102から作成されるDOMである。さらに、Navigatorなどのブラウザ・オブジェクトが存在し、このオブジェクトは、Netscapeにおいて、ブラウザ・コンテキストおよぶブラウザ・ウインドウに関する情報を提供する。列挙エンジン(ブロック114における)が、DOM構成要素およびJavaScript構成要素のシミュレーションを調整する。また、時間オブジェクト、ランダム関数などのオブジェクトも、列挙エンジンによってシミュレートされる。これらのオブジェクトすべては、スクリプトがクライアントの環境内、例えば、クライアント・ブラウザ122上でそれらにアクセスした場合、スクリプトが獲得するものと整合性を有していなければならない。例えば、DOMのテキスト領域は、ユーザがブラウザ122に入力した値を返さなければならず、ランダム関数は、クライアント・スクリプトがユーザのブラウザ122内で獲得したのと同じ値を返さなければならず、またnavigator.userAgentは、クライアント・ブラウザ122の名前を戻さなければならない。
【0027】
理解されるとおり、ブラウザ・オブジェクトに入力されるデータのいくつかは、エンベロープ・データから推論され、例えば、navigator.userAgentは、クライアント12から送信されたHTTPヘッダから獲得することができる(例えば、HTMLページ102のオリジナルの要求の中で)。ただし、いくつかのデータは、クライアント側で辿られる実際のシナリオに依存する。JavaScript中に存在するイベント・ハンドラ(例えば、ユーザの行動に応答して実行されるコード)にさらなる複雑さが導入される。JavaScriptのHTMLスクリプト・タグは、ロードされると実行されるが、ある種のコード(例えば、イベント・ハンドラ)は、ユーザの介入があったときにだけ実行される。例えば、HTML言語の入力コントロールの多くに関するonClickイベント・ハンドラが存在する。対応するイベント・ハンドラは、ユーザがコントロールを選択した(例えば、「クリックした」)ときだけ実行される。
【0028】
列挙エンジン(ブロック114)が、カバレッジ・メソッドを行う。例えば、エンジンは、HTMLページ102中のすべのてイベントをトリガすることにより、またユーザによる可能な様々な入力に対する複数のシミュレートされた実行を行うことにより、ブラウザ122による可能なすべての処理をカバーするものと想定する。理解されるとおり、この環境の実行時間は、多くの入力コントロールに依存するスクリプトの場合、指数関数的に増大する。また、この環境内でランダム関数を扱うのが困難である可能性がある。シミュレートされた実行は、その実行がユーザ入力を要求するまで進行する。要求の時点で、様々な可能な入力値でさらなる実行を記録し、シミュレートするのにユーザの行動が必要とされる。シミュレーション・メソッドのこの態様は、図3を参照して以下により詳細に述べる。
【0029】
シミュレーションが完了すると、サーバから発信されたHTMLページ(および関連するクライアント側論理)と整合性を有する可能なすべてのブラウザ処理のリストが提供される。これらの可能な処理は、ブロック118で集約され、「正規の処理」として識別される。正規の処理は、認可プロキシによって利用されて、クライアント・ブラウザ122におけるHTMLページ102の特定の実行から受信される要求の処理を確認する。ブロック120で、クライアントの要求の処理が認可プロキシに戻され、認可プロキシによってHTMLページ102のシミュレーションから生成された正規の処理のリスト118と比較される。したがって、認可プロキシは、正規の処理のリスト118中にその要求および有効なユーザ入力が存在するか、存在しないかに応じてクライアントの要求を受け入れるか、または拒否する(例えば、対応する正規の処理が認可プロキシによって識別されなかった場合、要求の処理は拒否される)。正規の処理のリスト118は、クライアント・ブラウザ122からの要求の処理の受信における遅延に対応するように記憶するのが可能である(例えば、データ・ストア30(図1B)または46(図1C)に)ことを理解されたい。
【0030】
図3を参照して、以下に、HTMLページ102のシミュレートされた実行のなかでユーザ入力の要求および複数の可能な入力された値を扱うオプションを説明する。前述したとおり、ブロック150で、認可プロキシが、HTMLページ102中に含まれるブラウザ・コマンドおよびクライアント論理の実行をシミュレートする。シミュレートされた実行は、入力コントロールが現れるまで(ブロック155で)続くか、または他のユーザ入力の要求が行われる(ブロック165で)。ブロック155で、例えば、<TEXT>、<PASSWORD>&<TEXTAREA>のHTMLタグなどのフリー・テキスト入力コマンドが、HTMLページ102中で検出される。フリー・テキスト入力コマンドが現れた場合、コントロールは、ブロック160に進み、クライアントから受信した入力を表す固有プレース・ホルダが割り当てられる。ブロック160で割り当てられるプレース・ホルダは、例えば、ユーザの行動に応答してフリー・テキスト入力コマンドから生成された入力として生成されたURL内で後に認識されるフィールドである。この後の段階で、認可プロキシは、受信したクライアント要求とのパターン照合を行う(図2のブロック120)。パターン照合は、「安全な」表現だけを許可するように実施する。好ましいパターン照合の技法は、本出願の出願人に共通で譲渡された米国特許出願第09/345920号(弁理士整理番号3269/6)に記載されるHTMLリンク抽出器からもたらされる。プレース・ホルダを含む文字列に基づいて分岐判定(文の場合)を認識するフックが、JavaScript環境の中に組み込まれる。そのような場合、これは、入力がスクリプトの論理進行に影響を与えることを意味するので、実行が無効にされる。システムは、プレース・ホルダが、生成されたURL中に直接に現れることにより、またはプログラムの実行フローに影響を与えることにより間接に、生成されたURLに影響を与える場合、リンクを有効にすることができる。
【0031】
制御は、ブロック160からブロック165に進むか、またはフリー・テキスト入力コマンドが全く現れない場合、ブロック155からブロック165に進む。ブロック165で、認可プロキシが、いくつかの可能な入力値の1つからのユーザによるコマンド要求入力の出現を検出する。そのようなコマンドが現れた場合、コントロールは、ブロック170に進み、現れなければ、コントロールは、ブロック180に進む。ブロック170で、列挙された入力コントロールに対する第1の入手可能な値が割り当てられる。他の可能な正規の入力値も入手可能であるので、制御は、ブロック175に進み、バックトラック・ログ116(図2)中にエントリが行われる。このエントリは、HTMLページ102中の現在の実行の相対位置(例えば、実行における深さ)、ならびに可能な正規のエントリの残りの数を記録する。ログ116は、制御が、前の実行のポイント(深さ)にループバックし、可能な正規の入力値の次の値を選択し、次の正規の入力値で実行を続けるのを可能にすることを理解されたい。ループバックして、HTMLページ102に対するすべての入力の実行をシミュレートすることにより、可能なすべてのブラウザ・コマンドおよびそれに対するユーザ入力が、前述した可能な正規の処理のリスト118中に収集される。
【0032】
提供された値をログ記録した後、ブロック180で実行が継続する。ブロック180で、シミュレータが、コードの終りを検出する。終りが検出された場合、制御は、可能なバックトラック処理のためにブロック185に進む。終りが現れない場合、制御は、ブロック150にループバックし、前述したとおり、シミュレーションが継続する。ブロック185で、バックトラック・ログ116を評価して、さらなる可能な入力値が、さらなる可能な正規の処理の検出を駆動するかどうかが判定される。エントリがバックトラック・ログ116中に残っている場合、深さ変数を利用して、現れた複数の入力コマンドのどれかのところに実行が再配置される。再配置された後、入力コマンドの次の値が割り当てられ、シミュレーションが、相対ロケーションから先にコードの終りまで進む。そのようなループバック実行は、バックトラック・ログ116中の各値が尽きるまで継続される。
【0033】
本発明者は、JavaScript環境におけるバックトラッキングの一実施形態は、バックトラッキング・ポイントまで同一の値で実行を再開することであるのを確認した。別の正規の入力がこの時点で提供され、ログ記録される。このプロセスは、列挙されるすべての値が処理されるまで繰り返される。
【0034】
前述したとおり、シミュレーション・プロセス中の可能なすべての入力およびイベントによってトリガされるすべてのブラウザ処理を集約することにより、認可プロキシは、WEBサーバで発信されるスクリプトと整合性を有する、クライアントからの実質的にすべてではないにしても、ほとんどの可能な要求のリストを獲得する。いくつかの実施形態では、このシステムは、以下に説明する追跡実施形態に対する補助として使用されて、より良好なパフォーマンスを得る。
【0035】
以下に、本発明のシミュレーション実施形態の例を説明する。
HTMLページ(例えば、HTMLページ102)が、3つの入力コントロールを含む。
・2つの国、米国&イスラエルのオプション・リスト(もちろん、完全なリストが可能である)
・性別、男性&女性のラジオ選択
・ユーザの名前に関するテキスト入力
【0036】
HTML中に組み込まれたJavaScriptが、以下のパターンに従ってURLを構成する。
http://site.country.perfectotech.com/gender/name.html
ここで、countryは、国別により「us」または「il」であり、genderは、「boys」または「girls」という値であり、またnameは、入力テキスト・フィールドである。
【0037】
以下が、HTMLページ・コードである。

Figure 0004629291
【0038】
前述したシミュレーション・プロセスは、以下のとおりコードを扱う。
1.ドキュメントの検査により、JavaScriptを実行するイベントは、Get My Pageボタンの上でクリックすることだけであることが与えられる。このイベントがトリガされる。これが、バックトラック・ログ116中に記録され、これがトリガするイベントはこれだけであるという注釈が付けられ、これにより、このエントリが使い果たされる。使い果たしは、後続のステップでより詳細に説明する。
2.ブランチ Aに到達するまでコードが実行される。
3.selectedIndex内で国を表す値が供給され、可能な2つの値、0(米国を表す)および1(イスラエルを表す)が存在する。第1の値が供給され、0の値がブランチ Aで供給されたことが記録される。
4.実行が、ブランチ Bに進み、Genderラジオ・ボックスのチェックされた値がチェックされる。可能な2つの値、真(boys)および偽(girls)が存在する。真の値が供給されて、バックトラック・ログ116に記録される。
5.実行が、アクセス Cに到達するまで進み、テキスト・フィールドの値が必要とされる。プレース・ホルダが供給される。このプレース・ホルダは、通常の状況の下では現れる可能性のないUNICODE文字列である。このプレース・ホルダには、<PHname>というマークが付けられる。バックトラック・ログ116にこれをログ記録する必要はない。というのは、この値を対象とするバックトラッキングは、必要とされないからである。<PHname>のタイプが、最大長10のテキストとして記録される。
6.オブジェクトwindowのJavaScript関数openが、要求されたURLを記録する関数にシミュレートされた環境内でフックされる。構成されたURLは、次のようなものである。
http://site.us.perfectotech.com/boys/<PHname>.html.
7.ポリシー・エンフォーサが、最大長10の任意のテキストに対して<PHname>をマッチさせるのが可能であるという注釈とともに、この新しい可能な処理のことを通知される。
8.実行が再開する。値が次の可能な値、つまり偽で置き換えられた最も深いバックトラッキング・エントリ(ブランチ B)を例外として、同じステップが辿られる。ブランチ Bの可能なすべての値は、使い果たされているので、バックトラック・ログ116中で、使い果たされているというマークが付けられる。
9.したがって、「girls」の値がgenderフィールド内で提供され、生成されるリンクは、http://site.us.perfectotech.com/girls/<PHname>.htmlである。
10.実行が再開する。今度は、ブランチ Bが最も深い分岐であり、次に許可される値、つまりイスラエルを表す1が提供される。
11.再びブランチ Bに到達し、今度は、バックトラック・ログ116は存在せず、したがって、(再)更新されたエントリがログ記録され、第1の正規の処理、すなわち、真(boys)が提供される。
12.実行が、同じパターンで再開し、今度、獲得されるリンクは、次のとおりである。
http://site.il.perfectotech.com/boys/<PHname>.html
13.このプロセスは、すべてのバックトラック・ログが尽きるまで反復して(例えば、性別フィールドに対する「girls」の値を提供して、もう一度)続く。したがって、可能なさらなる実行パスは、存在しない。
【0039】
JavaScriptコードを検査する際、要求http://site.intl.pefectotech.com/...を生成する可能性がある理論上の実行パスが見られたが、DOMは、0または1以外の国に対するselectedIndexを提供しなかったので、このパスは辿られなかった。これは、どのようにJavaScriptコードとDOMの両方が、許可された要求に影響を与えるかの例である。国に関して可能な値は2つしか存在しなかったので、第3の実行パスは、正規のパスではない。
【0040】
本発明の第2の態様では、認可プロキシ(例えば、プロキシ18、「プラグイン」論理26、およびスニファ40)が、クライアントとサーバとの間の伝送を評価するためのメソッドを呼び出す。第1に、クライアント側論理が、コードに挿入されることによってインストルメント化され、クライアント・システム12上でクライアント側論理の実行を追跡する。クライアント・システム12上でユーザによって実行されると、サーバ・リソースの要求が、実際の実行の結果(追跡結果)とともに認可プロキシにおいて受信される。認可プロキシは、クライアント側論理の実行をシミュレートして、入力オプションまたは外部データの他の要求がシミュレーション中に現れたとき、追跡結果が利用される。成功したシミュレーションは、サーバ・リソースのクライアント要求の承認をもたらし、認可プロキシが、実際の処理のためにその要求を適切なサーバに渡す。例えば、受入れ可能な処理を有する伝送が、意図された目標に伝えられ、これにより、意図されたアプリケーションと整合性のある要求だけが実行される。
【0041】
図4は、データ処理システムのクライアントとサーバとの間の伝送を確認するためのプロセス(例えば、前述した追跡するプロセスおよびシミュレートするプロセス)を示す流れ図である。例えば、図4が、WEBサーバ200からクライアント250への伝送(例えば、HTMLウェブ・ページ202)を描いている。本発明によれば、認可プロキシ(例えば、それぞれ、図1A、1B、1Cのプロキシ18、26、40)が、伝送202を代行受信する。シミュレーション・プロセスに入る前に、認可プロキシは、クライアント・ブラウザ250上で生じる値およびイベントの追跡を可能にするコマンドを受信するための伝送を準備する。ブロック204で、伝送(例えば、HTMLページ202)が構文解析されて、内容およびHTMLタグならびにクライアント側論理(例えば、JavaScriptコード)を識別する。クライアント側論理は、ブロック206に進み、ブラウザ処理(例えば、入力値の要求、および実際の入力値、イベント等)を追跡するためのコードが追加される。次に、変更されたコード、つまりインストルメント化されたコードが、要求された伝送の中(例えば、HTMLページ中202)でクライアント・ブラウザ250に渡される。
【0042】
前述したとおり、インストルメント化されたコードは、ブラウザ処理を追跡して、追跡の結果を認可プロキシに戻す(さらなる処理の要求の中で、またはその要求に加えて)。クライアント・ブラウザ250が、サーバ・リソースを要求したとき、ブラウザ処理のトレース(例えば、クライアント・ブラウザ250上で行われた入力およびイベント)が、評価のために認可プロキシに戻される。この実施形態では、すべての入力を列挙する代りに(図2に概要を述べたシミュレーション・プロセスに関連して説明したとおり)、ブラウザが、その要求とともに、ブラウザ環境内で実際のユーザ・セッション中にスクリプトが獲得したすべての値のトレースを送信する。このトレースは、トレース・フィーダにおいて認可プロキシの中で保持される(ブロック212)。
【0043】
追跡の結果が受信されると、認可プロキシが、ブロック210で、オリジナルの伝送(例えば、HTMLページ202)の中のコードおよびDOM構成要素をシミュレートする。図4に示すとおり、シミュレーション・ステップに対する入力は、オリジナルのクライアント側コード(例えば、追跡サポート・コードを有さないクライアント側論理)、DOM構成要素(ブロック208からの)、およびトレース・フィーダ(ブロック212)からの追跡結果を含む。追跡されたオブジェクトが、シミュレートされた環境内で照会されたとき(ブロック210で)、認可プロキシは、(トレース・フィーダを介して)クライアントから受信された追跡された値に関して検査する。また、追跡された値は、オブジェクトの論理上の内容規則に照らしても検査され、例えば、テキスト・フィールド内に許容可能な文字の最大数、または可能な2つの値(真/偽)のどちらかだけでしかないチェックボックス値、他のどの値も不正である。シミュレーションの結果は、ブロック214に渡される受入れ可能な、つまり認可されたブラウザアクションのリストである。ただし、この実施形態では、認可されたブラウザアクションは、第1の確認プロセスに関連して前述したとおり、クライアント・ブラウザにおける特定の実行から決定された値(トレースの中からの入力およびイベント)に基づき、可能なすべてのブラウザ要求に基づくのではない。クライアントアクション(ブロック250から渡された)をブロック214で認可されたアクション(ブロック210から渡された)と比較して、特定のクライアント・ブラウザ実行(ブロック250)の要求の1つまたは複数のアクションが認可されるかどうかの判定を行うことができる。
【0044】
理解されるとおり、ブラウザは、デフォルトで追跡を行うこと、および/または追跡の結果を送信することはしない。したがって、ブラウザに送信されるコード(例えば、HTMLドキュメント202)が、シミュレーションに先立って、ブロック206で行われる前述したステップで変更されて(インストルメント化されて)、このコードが、ブラウザ環境内(ブロック250)のブラウザアクションのトレースを作成して戻す。コードに関する例としてのインストルメント化プロセスは、以下を含む。
・JavaScriptコードが、JavaScriptアセンブリにコンパイルされる。
・アセンブリが、検査され、すべてのget_property、set_property、および関数コールにマークが付けられる
・get_property命令が、関係のあるプロパティ名に照らして検査される。
・関数コールが、追跡された関数値(例えば、ランダム)およびアクション関数(例えば、新しいURLで新しいウインドウを開くwindow.open())に照らして検査される。
・関係のある命令のそれぞれが、オブジェクトが追跡に関係があるか否かを検査する前に関数コールが挿入される。
・get_propetyとして、追跡されるオブジェクトの値が、実行トレースに追加される。
・新しいURLをロードさせるオブジェクトのset_propertyとして、トレースがURLに付加される。
・新しいURLをロードする関数コールとして、トレースがURLに付加される。
・アセンブラが逆コンパイルされて(組み込まれた逆コンパイラを使用して)JavaScriptに戻る。
・変更されたJavaScriptコードが、オリジナルのJavaScriptコードの代りに送信される。
【0045】
以下は、ブラウザに送信されるコードおよび変更されたコードの例である。
【0046】
オリジナルのコードは、以下のとおりである。
Figure 0004629291
HTMLドキュメントは、以下の書式を有する。
Figure 0004629291
変更されたコードは、以下のとおりである。
Figure 0004629291
HTML形式に対する変更は、以下のとおりである。
Figure 0004629291
【0047】
変更されたコードは、document.form[0]のget_property上のas_.propを呼び出して、それが書式であることを検査し、次にelements.day.valueに関して検査する。as_.prop関数は、値が追跡されるべきかどうか(テキスト・フィールドの値の場合と同様に)を検査し、その値を追跡変数に追加する。set_propertyが、変更されてトレースが要求されたURLに追加される。as_.initが、スクリプトのヘッドとイベント・ハンドラの両方において追加される。イベント・ハンドラがトリガされたとき、イベントがトレースに追加される。トレースは、認可プロキシに送信されると、前述したとおり処理される。
【0048】
以下は、ユーザが月曜のチケットを購入するのを選択するプロセスの説明である。コードは、上記にリストしたとおりインストルメント化されている。ただし、ユーザは、コードがインストルメント化されていない場合に見るものと同一の非常に簡単な書式を自らのブラウザ内で見る。
・チケット購入の曜日を選択しなければならないことを明記するテキスト
・「sunday」というデフォルト値を有する簡単なテキスト・ボックス
・要求を送信するボタン
【0049】
ユーザが、「tuesday」を入力して、送信ボタンを選択することによって要求を送信するものと想定する。実際に行われるのは、以下のとおりである。ブラウザ内で、
・送信ボタンを選択することにより、my_send関数を呼び出すイベント・ハンドラが起動される。ただし、イベント・ハンドラを起動することは、追跡されるアクションであり、したがって、インストルメント化されたコード中のas_initによって実行トレースに追加される。
・JavaScript関数であるmy_sendが呼び出される。この関数は、曜日が、平日の1つの曜日にマッチすることを確認し、ページをマッチするページ、new_page?dayで置き換えるものとされる。
・my_send値で、document.forms[0].element.day.valueがアクセスされて、as_propによって追跡される値として識別される。したがって、値「document.forms[0].element.day.value=tuesday」が、トレースに追加される。
・コードであるwindow.location.href=「new_page?」+dayが、インストルメント化されたコード中で実行されたとき、as_setpropが、その変数を追跡されるイベント変数として識別する。通常、新しく設定されたURLに対して単一の要求が生成されていることになる。インストルメント化されたコードの中で、生成されたトレースを含む追加の要求がサーバに送信される。
【0050】
この時点で、サーバ内に、要求とトレースの両方がある。
・オリジナルのコードがシミュレートされた環境内で実行される。
・トレース・フィーダが、送信ボタンに関するイベント・ハンドラの起動を識別し、イベント・ハンドラがトリガされる。
・イベント・ハンドラが、my_sendを呼び出す
・my_sendが、追跡されるオブジェクトである変数「document.forms[0].elements.day.value」にアクセスしようと試みる。
・これにより、トレース・フィーダが、実行トレースから値「tuesday」を検索する。
・トレース・フィーダが、サイズ20のテキスト・ボックス内の正規の入力にマッチすることを確認する。
・値が、JavaScriptコードに提供される。
・JavaScriptコードが、「tuesday」は、実際に平日であることを確認し、window.location.href=「new_page?tuesday」に設定する。
・この属性を設定することにより、正しくマッチする実際の要求に対して「new_page?tuesday」のシミュレートされた要求をマッチさせるイベントが生じる。
【0051】
クライアント・システムのユーザ(例えば、ハッカー・オペレーティング・クライアント12)が、サイズ20のテキスト・フィールドに対する正規の入力を構成しない値(例えば、21文字の入力)を提供しようと試みた場合、トレース・フィーダは、その値に不正な入力としてマークを付け、その実行を停止することにより、その値をブロックすることになる。ユーザが、不正な要求を提供しようと試みた場合には、シミュレートされた環境処理を実際の要求とマッチさせることに失敗する。
【0052】
本発明を好ましい実施形態で説明し図示してきたが、当分野の技術者には明らかなとおり、本発明の趣旨および範囲を逸脱することなく、多くの変形および変更を加えることができ、したがって、そのような変形形態および変更形態も本発明の範囲に含まれるものとするので、本発明は、以上に記載した方法または構成の正確な詳細に限定されるべきものではない。
【図面の簡単な説明】
【図1A】 本発明の一実施形態により構成されかつ動作する、クライアント/サーバ・データ処理ネットワークのブロック図である。
【図1B】 本発明の他の実施形態により構成されかつ動作する、クライアント/サーバ・データ処理ネットワークのブロック図である。
【図1C】 本発明のさらに他の実施形態により構成されかつ動作する、クライアント/サーバ・データ処理ネットワークのブロック図である。
【図2】 本発明の一実施形態によるシミュレーション方法を使用して、クライアントとサーバの間で要求を確認する例示的なプロセスを示すフロー・チャートである。
【図3】 図2のシミュレーション方法へのユーザの入力を受け取る例示的なプロセスを示すフロー・チャートである。
【図4】 本発明の第2実施形態による追跡方法を使用して、クライアントとサーバとの間で要求を確認する例示的なプロセスを示すフロー・チャートである。[0001]
(Copyright notice)
The portion of this application document contains content that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction of the application document or the disclosure of the application, as in the patent file or record of the patent or trademark office. All rights reserved.
[0002]
(Related application)
This application is related to the following co-pending applications:
• US Provisional Patent Application No. 60 / 161,473, filed October 25, 1999, entitled “METHOD AND SYSTEM FOR VERIFYING A CLIENT REQUEST”, patent attorney number 3269/8.
・ US Patent Application No. 09 / 345,920, filed on July 1, 1999, named Patent and Practice for EXTRACTING APPLICATION PROTOCOL CHARACTISTISTS, Patent Attorney No. 3269/6
-US Patent Application No. 09 / 149,911, filed on September 9, 1998, patent attorney docket number 3269/3, named METHOD AND SYSTEM FOR PROTECTING OPERATIONS OF TRUSTED INTERNAL NETWORKS
-Patent Application No. 9 / Patent Application No. 0, US Patent Application No. 9 / METHOD AND SYSTEM FOR MAINTAINING RESTRICTED OPERATION ENVIRONMENTS FOR APPLICATION PROGRAM OR OPERATING SYSTEM 150 Application No. 3269/4 filed on September 9, 1998 issue
・ PCT application PCT / IL98 / 3269/4
PCT application PCT / IL98 / 00443
・ PCT application PCT / IL00 / 00378
The disclosures of these applications are fully incorporated herein by reference.
[0003]
(Background of the Invention)
The present invention relates generally to privacy and security systems, and more particularly to requests, data, information content, applications, and other information transmitted between a client device and a host device within a data processing system. It relates to a method and system for authorizing.
[0004]
(Conventional technology)
In a client / server data processing system, several personal computers, work stations, portable and / or handheld devices (“clients”) and one or more host computers (“servers”) Connected and communicating. The server processes requests from clients for information and / or application programs shared by the clients over the network. Increasingly, a client / server network, for example, can itself be part of the World Wide Network, ie, part of the Internet's World Wide Web ("Web"). It has become concatenated to form a broader “network of networks” such as intranets and extranets. Linking networks allows clients to supply resources (eg, information and application programs) across the network.
[0005]
As the availability of shared information and application programs increases, potentially on the world wide network, the vulnerability of each individual client / server network increases. For example, an unscrupulous individual attempting to retrieve and / or damage information and application programs that can claim ownership that is stored in one of the networks has access to information and application programs that can claim ownership. May use it in an unauthorized manner. In an effort to prevent such unauthorized use, many networks are connected to other networks through “firewalls”. Traditional firewalls can handle access control to internal network resources (eg, specific web servers or folders), restrict access to parts of the network, and claim ownership stored in them Includes hardware and / or software systems designed to prevent unauthorized retrieval or damage to information and application programs.
[0006]
However, many conventional firewall systems do not deal with authorization at the application level and may fail by an unscrupulous individual who pretends to be an authorized client. For example, many web applications assume that the user of the application is actually running the application's mobile agent on his / her browser. However, a malicious user can connect to a web server without using standard web browser software, so the user is not bound by any restrictions that can be enforced on the browser side. A malicious user can send destructive or forged data to a web server, pretending to be a standard client.
[0007]
Commonly assigned U.S. patent application Ser. No. 09 / 345,920 describes a solution for confirming a user's request for a standard HTML document. The solution is based on extracting a set or pattern of actions (HTTP requests) that the browser software can take based on the content of the HTML document (“authorized actions”). This authorized set of actions is then matched to the request sent by the client application. Even if the user is not using one of the standard browsers, only requests from within the legal or authorized set of actions will be passed to the web server.
[0008]
In view of the above contents, the inventor of the present invention has a logic (for example, a JavaScript (TM) program embedded in an HTML page) for executing the above-described confirmation technique on a client system instead of a web server. Recognized the need to extend to. In particular, the inventor has recognized the need to simulate the execution of client-side logic in order to obtain and confirm external data and the events occurring thereon.
[0009]
(Summary of the invention)
It is an object of the present invention to provide a verification technique for logic executing on a client system instead of a server system.
[0010]
Another object of the present invention is to provide a verification technique for client side logic (eg, a JavaScript program embedded in an HTML page). This technique simulates the execution of logic to obtain and confirm external data and what is happening there.
[0011]
Yet another object of the present invention is a verification technique for client-side logic that simulates the execution of logic so that only authorized requests for external data and events are passed from the client to the protected server. Is to provide.
[0012]
Other objects and advantages of the present invention will become more apparent from consideration of the drawings and the following description.
[0013]
These and other problems have been overcome, and the objective is to present a system and method for authorizing execution of requested actions sent between a client and a server of a data processing system. Implemented by a method and apparatus according to embodiments of the invention. The method includes receiving a message that includes a set of actions or a program (eg, a JavaScript program embedded in an HTML page) and simulating the execution of the set of actions. The list is defined to represent performed actions and user definable inputs to the performed actions. The performed action and the list of user-definable inputs to the performed action are then compared to the list of acceptable actions and the input. When an element in the execution list is included in the list of acceptable actions and inputs, the included set of messages and actions is authorized.
[0014]
The present invention is illustrated in the figures of the accompanying drawings, which are intended to be illustrative and not limiting. In the figures, the same reference signs are intended to refer to the same or corresponding parts.
[0015]
Detailed Description of Preferred Embodiments
FIG. 1A illustrates a client / server data processing network 10 constructed and operative in accordance with one embodiment of the present invention. Data processing network 10 includes a plurality of client systems, such as personal computers, work stations, portable and / or handheld devices, coupled and in communication with one or more host / server computers. Including. For clarity of illustration, the clients are represented by client system 12 and the server or servers are represented by server 14. Client 12 and server 14 are coupled to communication network 16 via a wired or wireless connection, such as the World Wide Web portion of the Internet ("Web"), an intranet, an extranet, or other personal network, for example. It should be understood that it can be a remote device and / or a local device.
[0016]
In accordance with the present invention, the authorization proxy system 18 is coupled between the client 12 and the server 14 and enforces a security policy protocol between the client 12 and the server 14. For example, the authorization proxy system 18 can only request authorized actions (defined below) such as requests, messages, data, information content, applications, and other information sent between the client 12 and the server 14. Guarantees that it is implemented internally. The authorization proxy system 18 can send requests, messages, data, information content, and commands, fields, user-selectable input options, HTTP requests, etc. that are sent between the client 12 and the server 14 (e.g., The execution of the “requested action”) is simulated to ensure that the requested action is defined within a set of acceptable actions (eg, “authorized actions”). Any action that does not exist in the set of acceptable actions is rejected by the authorization proxy 18 before reaching the target of the action (eg, server 14 or client 12) and possibly destroying it.
[0017]
It should be understood that changing the authorization proxy implementation strategy is within the scope of the present invention. For example, FIG. 1A shows the authorization proxy as a hardware component 18 of a separate network 10 that is separate from the server 14. In FIG. 1B, the authorization proxy is implemented as application programming logic (“plug-in” logic 26) executing on the server 20. The server 20 also receives application programs, information content and data residing on the server 20 on request, for example, contained in the data store 28 or on the web page 30. 12 includes plug-in logic 22 and 24. In accordance with the present invention, authorization plug-in logic 26 is executed on server 20 to verify the program, content, and data provided to client 12 prior to transmission.
[0018]
Alternatively, FIG. 1C shows an authorization proxy operating as an intrusion detection system within a sniffer device 40 coupled to a router or hub 42 on the network 10 ′. As is generally known, the hub 42 directs communication within the network 10 '. As shown in FIG. 1C, the hub 42 isolates the web server 44 from direct communication on the network 10 '. The sniffer 40 detects and blocks transmissions targeted to the web server 40. The sniffer 40 evaluates the blocked transmission and compares the requested action in the transmission to a method detailed below, for example, to compare with the list of authorized actions contained in the storage device 46. Execute. If not acceptable, the sniffer 40 modifies the message or passes the message to other systems on the network.
[0019]
Although embodiments of the present invention have been described as having specific applications as web-based applications, the systems and methods described herein can be used in any client / server communication system, particularly It should be understood that it is within the scope of the present invention to be applicable in communication systems where it is desirable to protect the server from unauthorized requests, data, and applications.
[0020]
As will be described in detail below, the authorization proxy of the present invention uses two techniques to verify the logic executed on the client system instead of the server system. In the first technique, the authorization proxy simulates the execution of client-side logic and invokes and / or triggers each possible command, field, user-selectable input options, and HTTP request. As a result, a complete set of acceptable browser actions is identified and used to confirm subsequent requests from the actual client session. In the second technique, the proxy tracks the execution of client-side logic during the actual client session. The result of the tracking is sent to the authorization proxy in a request for server resources. In response, the authorization proxy simulates the execution of client-side logic, and the tracking results are used when encountering input options or other requests for external data during the simulation. A successful simulation results in the approval of the client request for the server resource, and the authorization proxy passes the request to the appropriate server for actual processing.
[0021]
The two verification techniques differ in how they respond to client logic queries regarding unknown data and user intervention events. These techniques are described in detail below.
[0022]
In a first aspect of the invention, an authorization proxy (eg, proxy 18, “plug-in” logic 26, and sniffer 40) calls a method to evaluate transmissions between a client and a server and originates from the server. Invoke a method of simulating client-side logic embedded in a message (eg, a JavaScript object) and extracting a list of possible requested actions. When the client sends a request, the requested action is checked against a list of authorized actions. If the action is acceptable, the transmission is passed over the intended target, so only requests that are consistent with the intended application are performed.
[0023]
FIG. 2 is a flow diagram illustrating a process (eg, the evaluation process, the simulating process, and the extraction process described above) for confirming transmission between the client and server of the data processing system. For example, FIG. 2 depicts a transmission (eg, HTML web page 102) from a web server to a client (eg, server 14 and client 12 of FIG. 1). At block 100, the server 14 transmits the HTML web page 102 to the client 12. The transmission is represented by lines 104A and 104B in FIG. As shown in FIGS. 1A-1C and FIG. 2, any transmissions to the client 12 are intercepted by the authorization proxies 18, 26, 40, respectively. In response, the authorization proxy invokes a confirmation process (details of which are shown in dashed line 106).
[0024]
At block 108, the evaluation process is invoked. The evaluation process includes, for example, parsing the HTML page 102 to identify the content and HTML tags and client-side logic (eg, JavaScript code) embedded therein. Once the components present in the HTML page 102 are identified, the authorization proxy simulates the execution of the components of the page 102 (eg, a simulated browser environment) and all possible requested processing. Can be identified in the transmission and provided to the list of authorized processes.
[0025]
The simulated browser environment includes blocks 110 and 112, respectively, a JavaScript runtime environment in which the simulated browser's Document Object Model ("DOM") and browser objects are reproduced. Some of the JavaScript standard objects need to be replaced as described in more detail below. An authorization proxy executes the components of the HTML page 102 in a simulated environment. A hook in the environment informs the authorization proxy of any triggered browser processing, for example, retrieving a document from a WEB server, or submitting a form to a WEB server. Once the simulation is complete, these processes supplement the list of authorized processes matched against the client's actual request (in block 120), as described below.
[0026]
As mentioned above, some of the objects and their methods need to be simulated to represent the client browser environment. First comes a DOM created from the HTML document 102. In addition, there is a browser object, such as Navigator, which provides information about the browser context and browser window in Netscape. The enumeration engine (at block 114) coordinates the simulation of the DOM component and the JavaScript component. Objects such as time objects and random functions are also simulated by the enumeration engine. All of these objects must be consistent with what the script acquires when the script accesses them in the client's environment, eg, on the client browser 122. For example, the DOM text area must return the value that the user entered into the browser 122, the random function must return the same value that the client script has acquired in the user's browser 122, and Also, navigator. The userAgent must return the name of the client browser 122.
[0027]
As will be appreciated, some of the data entered into the browser object is inferred from the envelope data, e.g., navigator. The userAgent can be obtained from the HTTP header sent from the client 12 (eg, in the original request for the HTML page 102). However, some data depends on the actual scenario followed on the client side. Additional complexity is introduced into event handlers that exist in JavaScript (eg, code that is executed in response to user actions). JavaScript HTML script tags are executed when loaded, but some code (eg, event handlers) is executed only upon user intervention. For example, there is an onClick event handler for many of the HTML language input controls. The corresponding event handler is executed only when the user selects a control (eg, “clicks”).
[0028]
The enumeration engine (block 114) performs the coverage method. For example, the engine does all possible processing by the browser 122 by triggering all events in the HTML page 102 and by performing multiple simulated executions on the various possible inputs by the user. Assume that it covers. As will be appreciated, the runtime of this environment increases exponentially for scripts that rely on many input controls. It may also be difficult to handle random functions within this environment. The simulated execution proceeds until the execution requires user input. At the time of the request, user actions are required to record and simulate further execution with various possible input values. This aspect of the simulation method is described in more detail below with reference to FIG.
[0029]
When the simulation is complete, a list of all possible browser processes that are consistent with the HTML page (and associated client-side logic) originating from the server is provided. These possible processes are aggregated at block 118 and identified as “regular processes”. Legitimate processing is utilized by the authorization proxy to confirm processing of requests received from a particular execution of the HTML page 102 in the client browser 122. At block 120, the processing of the client request is returned to the authorization proxy and compared to the list of regular processes 118 generated by the authorization proxy from the simulation of the HTML page 102. Thus, the authorization proxy either accepts or rejects the client's request (eg, the corresponding canonical process depending on whether the request and valid user input are present or not in the canonical process list 118. Request is rejected if it is not identified by the authorization proxy). The list of legitimate processes 118 can be stored to accommodate delays in receiving requests for processing from the client browser 122 (eg, data store 30 (FIG. 1B) or 46 (FIG. 1C). I want you to understand.
[0030]
With reference to FIG. 3, the following describes options for handling user input requests and multiple possible input values in the simulated execution of the HTML page 102. As previously described, at block 150, the authorization proxy simulates the execution of browser commands and client logic contained within the HTML page 102. The simulated execution continues until input control appears (at block 155) or a request for other user input is made (at block 165). At block 155, free text input commands such as, for example, <TEXT>, <PASSWORD>&<TEXTAREA> HTML tags are detected in the HTML page 102. If a free text input command appears, control proceeds to block 160 where a unique place holder representing the input received from the client is assigned. The placeholder assigned in block 160 is a field that is recognized later in the URL generated as an input generated from a free text input command in response to a user action, for example. At a later stage, the authorization proxy performs pattern matching with the received client request (block 120 in FIG. 2). Pattern matching is performed to allow only “safe” expressions. A preferred pattern matching technique comes from the HTML link extractor described in commonly assigned US patent application Ser. No. 09 / 345,920 (Attorney Docket No. 3269/6). A hook for recognizing a branch determination (in the case of a sentence) based on a character string including a place holder is incorporated in the JavaScript environment. In such cases, this means that the input affects the logical progression of the script, so execution is disabled. The system validates the link if the placeholder affects the generated URL, either directly by appearing in the generated URL or indirectly by affecting the execution flow of the program. Can do.
[0031]
Control proceeds from block 160 to block 165, or from block 155 to block 165 if no free text input command appears. At block 165, the authorization proxy detects the occurrence of a command request input by the user from one of several possible input values. If such a command appears, control proceeds to block 170; otherwise, control proceeds to block 180. At block 170, a first available value for the listed input control is assigned. Since other possible legal input values are also available, control proceeds to block 175 where an entry is made in the backtrack log 116 (FIG. 2). This entry records the relative position (eg, depth in execution) of the current execution in the HTML page 102, as well as the remaining number of possible legal entries. Log 116 allows control to loop back to the point (depth) of the previous execution, select the next value of possible normal input values, and continue execution with the next normal input value. Please understand that. By looping back and simulating the execution of all input to the HTML page 102, all possible browser commands and corresponding user input are collected in the list of possible legitimate processes 118 described above. .
[0032]
After logging the provided value, execution continues at block 180. At block 180, the simulator detects the end of code. If the end is detected, control proceeds to block 185 for possible backtrack processing. If the end does not appear, control loops back to block 150 and the simulation continues as described above. At block 185, the backtrack log 116 is evaluated to determine if further possible input values drive detection of further possible legitimate processing. If an entry remains in the backtrack log 116, the depth variable is used to relocate execution to any of the multiple input commands that appear. After being rearranged, the next value of the input command is assigned and the simulation proceeds from the relative location to the end of the code. Such loopback execution continues until each value in the backtrack log 116 is exhausted.
[0033]
The inventor has confirmed that one embodiment of backtracking in a JavaScript environment is to resume execution at the same value up to the backtracking point. Another legitimate input is provided at this point and logged. This process is repeated until all enumerated values have been processed.
[0034]
As described above, by aggregating all browser processing triggered by all possible inputs and events during the simulation process, the authorization proxy is sent from the client that is consistent with the script originating on the WEB server. Obtain a list of most, if not all, possible requests. In some embodiments, this system is used as an adjunct to the tracking embodiment described below to obtain better performance.
[0035]
Hereinafter, an example of the simulation embodiment of the present invention will be described.
An HTML page (eg, HTML page 102) includes three input controls.
• Options list of two countries, USA & Israel (of course a complete list is possible)
・ Gender, male & female radio selection
・ Text input about user's name
[0036]
JavaScript built into HTML constructs a URL according to the following pattern.
http: // site. country. perfectotech. com / gender / name. html
Here, country is “us” or “il” depending on the country, gender is a value of “boys” or “girls”, and name is an input text field.
[0037]
The following is the HTML page code.
Figure 0004629291
[0038]
The simulation process described above handles code as follows:
1. Examining the document gives that the only event that executes JavaScript is to click on the Get My Page button. This event is triggered. This is recorded in the backtrack log 116 and annotated that this is the only event that triggers, thereby exhausting this entry. Use up will be explained in more detail in subsequent steps.
2. The code is executed until branch A is reached.
3. A value representing the country is supplied in the selectedIndex, and there are two possible values, 0 (representing the United States) and 1 (representing Israel). The first value is supplied and it is recorded that a value of 0 was supplied in branch A.
4). Execution proceeds to branch B and the checked value of the Gender radio box is checked. There are two possible values: boys and girls. A true value is provided and recorded in the backtrack log 116.
5. Execution proceeds until access C is reached and the value of the text field is required. A place holder is supplied. This place holder is a UNICODE string that may not appear under normal circumstances. This place holder is marked <PHname>. There is no need to log this in the backtrack log 116. This is because backtracking for this value is not required. The type of <PHname> is recorded as text with a maximum length of 10.
6). The Javascript function open of the object window is hooked in a simulated environment to a function that records the requested URL. The constructed URL is as follows.
http: // site. us. perfectotech. com / boys / <PHname>. html.
7). The policy enforcer is informed of this new possible processing, with the annotation that <PHname> can be matched against any text of maximum length 10.
8). Execution resumes. The same steps are followed with the exception of the deepest backtracking entry (branch B) whose value is replaced by the next possible value, ie false. All possible values for branch B have been used up, so they are marked in the backtrack log 116 as used up.
9. Thus, a value of “girls” is provided in the gender field and the generated link is http: // site. us. perfectotech. com / girls / <PHname>. html.
10. Execution resumes. This time, branch B is the deepest branch and the next allowed value is provided, ie 1 representing Israel.
11. Reaching branch B again, this time there is no backtrack log 116, so a (re) updated entry is logged, providing the first regular processing, ie, boys The
12 Execution resumes with the same pattern, and the links acquired this time are:
http: // site. il. perfectotech. com / boys / <PHname>. html
13. This process continues iteratively until all backtrack logs are exhausted (e.g., once again providing the value of "girls" for the gender field). Thus, there are no possible further execution paths.
[0039]
When inspecting the JavaScript code, request http: // site. intl. pefectotech. com /. . . There was a theoretical execution path that could generate DOM, but this path was not followed because DOM did not provide a selectedIndex for countries other than 0 or 1. This is an example of how both the JavaScript code and the DOM affect the granted request. Since there were only two possible values for the country, the third execution path is not a regular path.
[0040]
In a second aspect of the invention, an authorization proxy (eg, proxy 18, “plug-in” logic 26, and sniffer 40) invokes a method to evaluate transmissions between the client and server. First, client-side logic is instrumented by being inserted into the code to track the execution of client-side logic on the client system 12. When executed by a user on the client system 12, a request for server resources is received at the authorization proxy along with the actual execution result (tracking result). The authorization proxy simulates the execution of client-side logic, and trace results are utilized when input options or other requests for external data appear during the simulation. A successful simulation results in the approval of the client request for the server resource, and the authorization proxy passes the request to the appropriate server for actual processing. For example, transmissions with acceptable processing are communicated to the intended goal, so that only requests that are consistent with the intended application are executed.
[0041]
FIG. 4 is a flow diagram illustrating a process for verifying transmissions between a client and server of a data processing system (eg, the tracking process and the simulating process described above). For example, FIG. 4 depicts a transmission (eg, HTML web page 202) from the WEB server 200 to the client 250. In accordance with the present invention, an authorization proxy (eg, proxy 18, 26, 40 of FIGS. 1A, 1B, and 1C, respectively) intercepts transmission 202. Prior to entering the simulation process, the authorization proxy prepares a transmission to receive commands that allow tracking of values and events that occur on the client browser 250. At block 204, the transmission (eg, HTML page 202) is parsed to identify the content and HTML tags and client-side logic (eg, JavaScript code). The client-side logic proceeds to block 206 and code is added to track browser processing (eg, input value requests and actual input values, events, etc.). The modified code, or instrumented code, is then passed to the client browser 250 in the requested transmission (eg, 202 in the HTML page).
[0042]
As previously mentioned, instrumented code tracks browser processing and returns the results of the tracking to the authorization proxy (in or in addition to the request for further processing). When the client browser 250 requests server resources, browser processing traces (eg, inputs and events made on the client browser 250) are returned to the authorization proxy for evaluation. In this embodiment, instead of enumerating all inputs (as described in connection with the simulation process outlined in FIG. 2), the browser, along with the request, during the actual user session within the browser environment. Send a trace of all the values the script has acquired. This trace is maintained in the authorization proxy in the trace feeder (block 212).
[0043]
Once the tracking results are received, the authorization proxy simulates the code and DOM components in the original transmission (eg, HTML page 202) at block 210. As shown in FIG. 4, the inputs to the simulation step are the original client side code (eg, client side logic without tracking support code), the DOM component (from block 208), and the trace feeder (block 212). When the tracked object is queried in the simulated environment (at block 210), the authorization proxy checks for the tracked value received from the client (via the trace feeder). The tracked value is also checked against the logical content rules of the object, for example, either the maximum number of characters allowed in a text field, or two possible values (true / false). Only the check box value, any other value is illegal. The result of the simulation is a list of acceptable or authorized browser actions that are passed to block 214. However, in this embodiment, the authorized browser action is the value determined from the specific execution in the client browser (inputs and events from the trace) as described above in connection with the first confirmation process. Not based on all possible browser requests. One or more actions of a request for a particular client browser execution (block 250) by comparing the client action (passed from block 250) with the action authorized in block 214 (passed from block 210) It can be determined whether or not is approved.
[0044]
As will be appreciated, the browser does not track by default and / or send tracking results. Accordingly, code sent to the browser (eg, HTML document 202) is modified (instrumented) in the above-described steps performed at block 206 prior to simulation, and this code is placed in the browser environment ( Create and return a browser action trace of block 250). An example instrumentation process for code includes:
• The JavaScript code is compiled into a JavaScript assembly.
The assembly is inspected and all get_property, set_property, and function calls are marked
The get_property instruction is checked against the relevant property name.
Function calls are checked against the tracked function value (eg random) and action function (eg window.open () which opens a new window with a new URL).
A function call is inserted before each relevant instruction checks whether the object is relevant for tracking.
As get_property, the value of the tracked object is added to the execution trace.
A trace is appended to the URL as set_property of the object that loads the new URL.
A trace is appended to the URL as a function call that loads a new URL.
The assembler is decompiled (using the built-in decompiler) and returns to JavaScript.
-The modified JavaScript code is sent instead of the original JavaScript code.
[0045]
The following are examples of code sent to the browser and modified code.
[0046]
The original code is as follows:
Figure 0004629291
The HTML document has the following format.
Figure 0004629291
The changed code is as follows:
Figure 0004629291
The changes to the HTML format are as follows.
Figure 0004629291
[0047]
The changed code is document. as_. on get_property of form [0]. call prop to check that it is a format, then elements. day. Check for value. as_. The prop function checks whether a value is to be tracked (as is the case with a text field value) and adds that value to the tracking variable. set_property is modified and added to the URL for which tracing was requested. as_. init is added both in the head of the script and in the event handler. When the event handler is triggered, an event is added to the trace. When the trace is sent to the authorization proxy, it is processed as described above.
[0048]
The following is a description of the process by which the user chooses to purchase a Monday ticket. The code is instrumented as listed above. However, the user sees the same very simple form in his browser that he sees when the code is not instrumented.
-Text stating that the day of the week for ticket purchase must be selected
A simple text box with a default value of “sunday”
-Button to send request
[0049]
Assume that the user sends a request by entering “tuesday” and selecting a send button. What is actually done is as follows. In the browser
• Selecting the send button invokes an event handler that calls the my_send function. However, invoking an event handler is a tracked action and is therefore added to the execution trace by as_init in the instrumented code.
-My_send which is a JavaScript function is called. This function confirms that the day of the week matches one day of the week, and the page that matches the page, new_page? It shall be replaced with day.
-With my_send value, document. forms [0]. element. day. The value is accessed and identified as the value tracked by as_prop. Therefore, the value “document.forms [0] .element.day.value = tuesday” is added to the trace.
-Code window. location. When href = “new_page?” + day is executed in the instrumented code, as_setprop identifies the variable as a tracked event variable. Usually, a single request is generated for the newly set URL. Within the instrumented code, an additional request containing the generated trace is sent to the server.
[0050]
At this point, there are both requests and traces in the server.
• The original code is executed in a simulated environment.
The trace feeder identifies the event handler activation for the send button and the event handler is triggered.
Event handler calls my_send
My_send attempts to access the variable “document.forms [0] .elements.day.value” which is the object being tracked.
This causes the trace feeder to retrieve the value “tuesday” from the execution trace.
Verify that the trace feeder matches the regular input in a size 20 text box.
A value is provided to the JavaScript code.
-The JavaScript code confirms that "tuesday" is actually a weekday, window. location. Set href = “new_page? tuesday”.
Setting this attribute causes an event to match the "new_page? Tuesday" simulated request to the actual request that matches correctly.
[0051]
If a client system user (eg, hacker operating client 12) attempts to provide a value (eg, 21 character input) that does not constitute legitimate input for a size 20 text field, the trace feeder Will block the value by marking the value as illegal input and stopping its execution. If the user attempts to provide an illegal request, it will fail to match the simulated environment process with the actual request.
[0052]
Although the present invention has been described and illustrated in preferred embodiments, it will be apparent to those skilled in the art that many variations and modifications can be made without departing from the spirit and scope of the invention. Since such variations and modifications are intended to be included within the scope of the present invention, the present invention should not be limited to the precise details of the method or construction described above.
[Brief description of the drawings]
FIG. 1A is a block diagram of a client / server data processing network constructed and operative in accordance with one embodiment of the present invention.
FIG. 1B is a block diagram of a client / server data processing network constructed and operative in accordance with another embodiment of the present invention.
FIG. 1C is a block diagram of a client / server data processing network constructed and operative in accordance with yet another embodiment of the invention.
FIG. 2 is a flow chart illustrating an exemplary process for confirming a request between a client and a server using a simulation method according to one embodiment of the present invention.
FIG. 3 is a flow chart illustrating an exemplary process for receiving user input to the simulation method of FIG.
FIG. 4 is a flow chart illustrating an exemplary process for confirming a request between a client and a server using a tracking method according to a second embodiment of the present invention.

Claims (8)

クライアントとデータ処理システムのサーバとの間で送信された要求されたアクションの実行を、前記クライアントと前記サーバに結合された認可プロキシによって認可する方法であって、
前記認可プロキシが、前記サーバから、アクションのセットを含んでいる第1メッセージを受信するステップと、
前記認可プロキシが、前記アクションのセットを実行する処理環境をシミュレーションし、前記処理環境内で前記アクションのセットを実行し、実行により生じたアクションと、該アクションに対する入力とのリストを構築するステップと、
前記認可プロキシが、前記クライアントから、前記第1メッセージを前記クライアントにおいて実際に実行して生じる前記サーバに対するアクションと、該アクションに対する前記クライアントのユーザによる入力とを第2メッセージとして受信するステップと、
前記認可プロキシが、前記リスト内の前記アクションと前記入力を、前記クライアントから受信した前記サーバに対するアクションと前記入力と比較するステップと、
前記リストが、前記クライアントから受信した前記アクションと前記入力とにそれぞれ対応するアクションと入力とを含むことを条件に、前記認可プロキシが、前記サーバに対すアクションを認可するステップと、
を含む方法。
A method of authorizing execution of a requested action sent between a client and a server of a data processing system by an authorization proxy coupled to the client and the server, comprising:
The authorization proxy receiving a first message comprising a set of actions from the server;
Simulating a processing environment in which the authorization proxy executes the set of actions, executing the set of actions in the processing environment, and constructing a list of actions resulting from the execution and inputs to the actions; ,
The authorization proxy receiving, as a second message , an action on the server resulting from the actual execution of the first message at the client and an input by the user of the client for the action from the client;
The authorization proxy comparing the action and the input in the list with the action for the server received from the client and the input;
A step wherein the lists, on condition that includes an input and the corresponding action and the action received and the input from the client, the authorization proxy, to authorize action against the server,
Including methods.
前記認可プロキシが、前記アクションのセットの実行中に、データ値のエントリを要求する入力制御を検出し、そのデータ値を表すために、文字列割り当て、かつ前記文字列が満たすべき条件を記録するステップと、
前記認可プロキシが、比較のステップ中に、前記クライアントから受信した、前記文字列に対応する前記入力が、記録した前記条件を満たすか否かを判定するステップとを含む、請求項1に記載の方法。
During the execution of the set of actions, the authorization proxy detects an input control requesting a data value entry , assigns a string to represent the data value, and records the condition that the string must satisfy And steps to
The authorization proxy comprising: determining whether the input corresponding to the string received from the client during the comparing step satisfies the recorded condition. Method.
前記認可プロキシが、前記アクションのセットの実行中に、
複数の事前に定義されたデータ値の1つを選択することを要求する入力制御を検出するステップと、
複数の事前に定義されたデータ値の各々に対して実行中のアクションの実行を行い、前記データ値の各々と、該各々に対する前記アクションの実行より生じる各アクションを前記リストにリストするステップとを含む、請求項1に記載の方法。
While the authorization proxy is executing the set of actions,
Detecting an input control requesting to select one of a plurality of predefined data values;
Performing an ongoing action on each of a plurality of predefined data values, and listing each of the data values and each action resulting from the execution of the action on each of the data values in the list The method of claim 1 comprising.
前記認可プロキシが、前記アクションのセットの実行前に、前記クライアントから、前記第1メッセージを前記クライアントにおいて実際に実行する際に行われた前記クライアントへの入力を受信するステップと、
前記認可プロキシが、前記アクションのセットの実行中に、ユーザが選択可能な入力に応答して、前記アクションのセットの実行前に受信した前記入力を提供するステップとを含む、請求項1に記載の方法。
The authorization proxy receives from the client input to the client made in actual execution of the first message at the client before performing the set of actions;
The authorization proxy providing the input received prior to execution of the set of actions in response to a user selectable input during execution of the set of actions. the method of.
クライアントとデータ処理システムのサーバとの間で結合された認可プロキシ・システムであって、
前記クライアントとサーバとの間の送信を評価し、かつ、各送信内のドキュメントに含まれている情報内容とアクションのセットを識別するための評価と、
前記アクションのセットを実行する処理環境をシミュレーションするシミュレータであって、前記処理環境内で前記アクションのセットを実行し、実行により生じたアクションと、該アクションに対する入力とのリストを構築する、前記シミュレータと、
前記クライアントから、前記ドキュメントを前記クライアントにおいて実際に実行して生じる前記サーバに対するアクションと、該アクションに対する前記クライアントのユーザによる入力とを含む送信を受信し、受信した前記アクションと前記入力とにそれぞれ対応するアクションと入力とが、前記リスト内に含まれることを条件に、前記送信を記サーバへ渡す認可部とを備える、認可プロキシ・システム
An authorization proxy system coupled between a client and a server of a data processing system,
Evaluate the transmission between the client and the server, and an evaluation unit for identifying a set of information content and actions contained in the documents in the transmission,
A simulator for simulating a processing environment for executing the set of actions, wherein the simulator executes the set of actions in the processing environment and constructs a list of actions generated by the execution and inputs to the actions When,
Receives a transmission from the client that includes an action on the server that results from the actual execution of the document on the client and an input by a user of the client for the action, each corresponding to the received action and the input action that the input is, the condition that is included in said list, and a authorization unit passing said transmission to the front SL server, the authorization proxy system.
前記シミュレータが、データ値のエントリを要求する入力制御を検出し、前記データ値を表すために、文字列割り当て、かつ前記文字列が満たすべき条件を記録、前記認可部が、前記クライアントから受信した前記送信内の前記文字列に対応する前記入力が、記録した前記条件を満たすか否かを判定す、請求項5に記載の、認可プロキシ・システムThe simulator detects an input control requesting entry of a data value, assigns a character string to represent the data value, and records a condition to be satisfied by the character string, and the authorization unit receives from the client the input corresponding to the character string of received said transmitted, it determines whether recorded satisfying the condition, according to claim 5, the authorization proxy system. 前記シミュレータが、複数の事前に定義されたデータ値の1つを選択することを要求する入力制御を検出、前記複数の事前に定義されたデータ値の各々に対して実行中のアクションの実行を繰り返し、前記データ値の各々と、該各々に対する前記アクションの実行より生じる各アクションを前記リストにリストす、請求項5に、認可プロキシ・システムThe simulator detects an input control requesting to select one of a plurality of predefined data values, the execution of the actions being performed for each of the plurality of predefined data values repeating said a respective data value, to list each action arising from the execution of the actions in the list for the each to claim 5, the authorization proxy system. 前記シミュレータが、前記クライアントから、前記ドキュメントを前記クライアントにおいて実際に実行する際に行われた前記クライアントへの入力を受信し、かつ、該入力を、前記アクションのセットの実行中に、ユーザが選択可能な入力に応答して提供す、請求項5に記載の、認可プロキシ・システムThe simulator receives input from the client to the client made when the document is actually executed at the client, and the input is selected by a user during execution of the set of actions. that provide in response to the possible inputs, according to claim 5, the authorization proxy system.
JP2001533487A 1999-10-25 2000-10-25 Method and system for verifying client requests Expired - Lifetime JP4629291B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16147399P 1999-10-25 1999-10-25
US60/161,473 1999-10-25
PCT/IL2000/000677 WO2001031415A2 (en) 1999-10-25 2000-10-25 Method and system for verifying a client request

Publications (3)

Publication Number Publication Date
JP2003513349A JP2003513349A (en) 2003-04-08
JP2003513349A5 JP2003513349A5 (en) 2007-12-20
JP4629291B2 true JP4629291B2 (en) 2011-02-09

Family

ID=22581314

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001533487A Expired - Lifetime JP4629291B2 (en) 1999-10-25 2000-10-25 Method and system for verifying client requests

Country Status (7)

Country Link
EP (1) EP1232425B1 (en)
JP (1) JP4629291B2 (en)
AT (1) ATE398798T1 (en)
AU (1) AU7944100A (en)
DE (1) DE60039248D1 (en)
IL (1) IL149322A0 (en)
WO (1) WO2001031415A2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6311278B1 (en) 1998-09-09 2001-10-30 Sanctum Ltd. Method and system for extracting application protocol characteristics
AU2001237696A1 (en) 2000-03-03 2001-09-12 Sanctum Ltd. System for determining web application vulnerabilities
US7549054B2 (en) * 2004-08-17 2009-06-16 International Business Machines Corporation System, method, service method, and program product for managing entitlement with identity and privacy applications for electronic commerce

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5347578A (en) * 1992-03-17 1994-09-13 International Computers Limited Computer system security
US5559800A (en) * 1994-01-19 1996-09-24 Research In Motion Limited Remote control of gateway functions in a wireless data communication network
US5611048A (en) * 1992-10-30 1997-03-11 International Business Machines Corporation Remote password administration for a computer network among a plurality of nodes sending a password update message to all nodes and updating on authorized nodes
US5623601A (en) * 1994-11-18 1997-04-22 Milkway Networks Corporation Apparatus and method for providing a secure gateway for communication and data exchanges between networks
US5692124A (en) * 1996-08-30 1997-11-25 Itt Industries, Inc. Support of limited write downs through trustworthy predictions in multilevel security of computer network communications
US5752022A (en) * 1995-08-07 1998-05-12 International Business Machines Corp. Method for creating a hypertext language for a distributed computer network
US5870544A (en) * 1997-10-20 1999-02-09 International Business Machines Corporation Method and apparatus for creating a secure connection between a java applet and a web server
US5908469A (en) * 1997-02-14 1999-06-01 International Business Machines Corporation Generic user authentication for network computers

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5606668A (en) * 1993-12-15 1997-02-25 Checkpoint Software Technologies Ltd. System for securing inbound and outbound data packet flow in a computer network
US5802320A (en) * 1995-05-18 1998-09-01 Sun Microsystems, Inc. System for packet filtering of data packets at a computer network interface
US6311278B1 (en) * 1998-09-09 2001-10-30 Sanctum Ltd. Method and system for extracting application protocol characteristics

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5347578A (en) * 1992-03-17 1994-09-13 International Computers Limited Computer system security
US5611048A (en) * 1992-10-30 1997-03-11 International Business Machines Corporation Remote password administration for a computer network among a plurality of nodes sending a password update message to all nodes and updating on authorized nodes
US5559800A (en) * 1994-01-19 1996-09-24 Research In Motion Limited Remote control of gateway functions in a wireless data communication network
US5623601A (en) * 1994-11-18 1997-04-22 Milkway Networks Corporation Apparatus and method for providing a secure gateway for communication and data exchanges between networks
US5752022A (en) * 1995-08-07 1998-05-12 International Business Machines Corp. Method for creating a hypertext language for a distributed computer network
US5692124A (en) * 1996-08-30 1997-11-25 Itt Industries, Inc. Support of limited write downs through trustworthy predictions in multilevel security of computer network communications
US5908469A (en) * 1997-02-14 1999-06-01 International Business Machines Corporation Generic user authentication for network computers
US5870544A (en) * 1997-10-20 1999-02-09 International Business Machines Corporation Method and apparatus for creating a secure connection between a java applet and a web server

Also Published As

Publication number Publication date
ATE398798T1 (en) 2008-07-15
EP1232425A4 (en) 2004-05-12
EP1232425A2 (en) 2002-08-21
WO2001031415A2 (en) 2001-05-03
EP1232425B1 (en) 2008-06-18
AU7944100A (en) 2001-05-08
IL149322A0 (en) 2002-11-10
JP2003513349A (en) 2003-04-08
WO2001031415A3 (en) 2001-11-01
DE60039248D1 (en) 2008-07-31

Similar Documents

Publication Publication Date Title
US7293281B1 (en) Method and system for verifying a client request
JP4625246B2 (en) Automatic detection of cross-site scripting vulnerabilities
Stuttard et al. The web application hacker's handbook: Finding and exploiting security flaws
JP4405248B2 (en) Communication relay device, communication relay method, and program
US7941856B2 (en) Systems and methods for testing and evaluating an intrusion detection system
Shahriar et al. Client-side detection of cross-site request forgery attacks
Hope et al. Web security testing cookbook: systematic techniques to find problems fast
KR101672791B1 (en) Method and system for detection of vulnerability on html5 mobile web application
Barua et al. Server side detection of content sniffing attacks
Kapodistria et al. An advanced web attack detection and prevention tool
CN116324766A (en) Optimizing crawling requests by browsing profiles
US20080021904A1 (en) Authenticating a site while protecting against security holes by handling common web server configurations
McDonald Web security for developers: real threats, practical defense
KR100984639B1 (en) Automatic security assessment system and its implementation method
Pauli The basics of web hacking: tools and techniques to attack the web
Snyder et al. Pro PHP security
Ravindran et al. A Review on Web Application Vulnerability Assessment and Penetration Testing.
Parimala et al. Efficient web vulnerability detection tool for sleeping giant-cross site request forgery
JP4629291B2 (en) Method and system for verifying client requests
Sharif Web Attacks Analysis and Mitigation Techniques
CN107294994A (en) A kind of CSRF means of defences and system based on cloud platform
Jayaraman et al. Enforcing request integrity in web applications
Yin et al. Scanner++: Enhanced Vulnerability Detection of Web Applications with Attack Intent Synchronization
Izagirre Deception strategies for web application security: application-layer approaches and a testing platform
Sharadqeh et al. Review and measuring the efficiency of SQL injection method in preventing e-mail hacking

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20050422

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071025

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071029

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080409

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100615

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100824

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100831

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101014

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101109

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131119

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4629291

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

EXPY Cancellation because of completion of term