以下、添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
図1は、本発明の一実施形態に係るシステムの構成を示す図である。
図1に示す如く、本実施形態に係るシステムは、プロキシサーバ101、ルールDB102、URLDB103、クライアントPC(クライアント端末)104−1乃至104−3(以後、まとめて「クライアントPC104」とする)、LAN(ローカルエリアネットワーク)105、広域ネットワーク106(以下、ネットワーク)、ウェブサーバ(データ送信装置)107−1乃至107−3(以後、まとめて「ウェブサーバ107」とする)により構成されている。以下、本実施形態に係るシステムを構成する。これらについて説明する。
プロキシサーバ101は、本発明の情報処理装置として機能する装置であり、クライアントPC104とウェブサーバ107との間のデータ通信を中継する。
また、プロキシサーバ101のHDD204等の記憶部には、クライアントPC104からウェブサーバ107への通信を許可/禁止するといった制御に使用するルールが登録されているルールDB102、及びWEBサイト及びWEBページに掲載されている情報のカテゴリ毎にURLが登録されているURLDB103を備えている。
すなわち、URLDB103は、WEBサイト及びWEBページのURLが、当該URLのカテゴリ毎に登録されているデータベースである。図12に示すように、URLDB103には、WEBサイト及びWEBページのURLが、WEBサイト及びWEBページに掲載されている情報の内容やテーマから区分(分類分け)されたカテゴリ毎に登録されている。
また、プロキシサーバ101は、さらにルールDB102に設定されている情報の登録、修正等を行うための設定ページの提供等を行うウェブサーバ機能なども有している。尚、ルールDB102およびURLDB103は、プロキシサーバ101内に備えていても、別のコンピュータ内に実装しても構わない。
URLDB103は、カテゴリごとにウェブサーバ107のリソースを表すURLを登録したデータベースであり、通常、URLDBの作成業者から購入する場合が多い。URLDB103の更新は、プロキシサーバ101の更新プログラムで行っても良いし、他の手段により更新しても構わない。
クライアントPC104は、ウェブサーバ107が提供するサービスを利用するユーザが使用する端末装置である。
LAN(Local Area Network)105は、プロキシサーバ101及びクライアントPC104をデータ通信可能に相互に接続させるものである。広域ネットワーク106は、インターネット等の広域ネットワークを示す。
ウェブサーバ107は、様々なサービスを提供するウェブサーバを表す。
図2は、プロキシサーバ101のハードウェア構成を示すブロック図である。
図2において、201はCPUで、RAM202やROM203に記憶されているプログラムやデータを用いてプロキシサーバ101全体の制御を行うとともに、プロキシサーバ101が行う後述の各処理を実行する。
202はRAMで、HDD(ハードディスクドライブ)204や記録媒体ドライブ206からロードされたプログラムやデータ、ネットワークI/F(インターフェース)205を介して他の機器から受信したプログラムやデータ等を一時的に記憶するためのエリアや、CPU201が各種の処理を実行する際に用いるワークエリア等、各種のエリアを適宜提供することができる。
203はROMで、プロキシサーバ101の設定データや、ブートプログラム等を記憶する。
204はHDDで、OS(オペレーティングシステム)や、プロキシサーバ101が行う後述の各処理をCPU201に実行させるためのプログラムやデータ等を保存するものであり、これらはCPU201による制御に従って適宜RAM202にロードされ、CPU201の処理対象となる。
205はネットワークI/Fで、プロキシサーバ101を上記LAN105、広域ネットワーク106に接続させるためのものであり、プロキシサーバ101はこのネットワークI/F205を介してLAN105や広域ネットワーク106に接続されている各装置とのデータ通信を行う。
206は記録媒体ドライブで、CD−ROM、CD−R/RW、DVD−ROM、DVD−R/RW、DVD−RAM等の記録媒体に記録されているプログラムやデータを読み出し、RAM202やHDD204に出力する。なお、HDD204が保持しているデータのうちの一部をこれら記録媒体に記憶させておいても良い。
207はキーボード、208はマウスやジョイスティック等により構成されているポインティングデバイスで、プロキシサーバ101の操作者が操作することで、各種の指示をCPU201に対して入力する入力部として機能する。
209は表示部で、CRTや液晶画面などにより構成されており、CPU201による処理結果を画像や文字などで表示する。
210は外部機器接続I/Fで、周辺機器をプロキシサーバ101に接続させるためものポートである。プロキシサーバ101は、この外部機器接続I/F210を介して、周辺機器とのデータ通信を行う。外部機器接続I/F210は、USBやIEEE1394等により構成されており、通常複数の外部機器接続I/F210を有する。周辺機器との接続形態は有線/無線を問わない。
211はバスで、上述の各部201〜210を接続する。
なお、プロキシサーバ101のハードウェア構成は、図2に示した構成を有するとして説明するが、必ずしも同図の構成を有することに限定するものではなく、プロキシサーバ101が行う後述の各種処理を実行可能であればプロキシサーバ101の構成は適宜変更しても良い。
また、クライアントPC104、ウェブサーバ107のハードウェア構成も、これらには一般的なコンピュータを適用するので、周知の如く、概ね図2に示した構成を有する。
図3は、プロキシサーバ101の機能構成を示す図である。
図3に示すように、プロキシサーバ101は、ルール受付手段301、ルール記録手段302、通信中継制御手段303、通信許可/禁止応答送信手段304を備えている。
ルール受付手段301は、クライアントPC104とウェブサーバ107の間で行われる通信の許可/禁止を判断するためのルールの入力を受け付ける。ルール記録手段302は、ルール受付手段301で受け付けたルール(詳細は後述する図9)をルールDB102に登録する。
URLDB103は、カテゴリごとにウェブサーバー107のリソースを表すURLを集めたデータベースであり、クライアントPC104からリクエストされたURLがどのカテゴリに属するかを判定するために使用される。
通信中継制御手段303は、クライアントPC104とウェブサーバ107との間で行われる通信の中継制御を行う。即ちクライアントPC104から送信されたリクエストおよびウェブサーバ107から返信されるレスポンスを解析し、それらに含まれる詳細情報とリクエストの送信先であるウェブサーバ107のリソースを表すURLをURLDB103と照らし合わせて得られるカテゴリ情報がルールDB102に記録されたルールに適合するか判定し、その結果により通信の中継制御を行う。
通信許可/禁止応答送信手段304は、通信中継制御手段303で通信を許可した場合は、リクエストを送信したクライアントPC103に対してウェブサーバ107からのレスポンスを中継する、あるいは禁止した場合はクライアントPC103に対して拒否した旨の通知を行う。
なお、プロキシサーバ101のHDD204には、ルール受付手段301、ルール記録手段302、通信中継制御手段303、通信許可/禁止応答送信手段304としてプロキシサーバを制御させるためのプログラムが記録されている。そして、これらのプログラムをプロキシサーバ101のCPU201がRAM202にロードして実行することにより上記各手段301〜304が実現される。
次に、フローチャートを参照して、プロキシサーバ101のCPU201により実行される処理について説明する。
図4は、本発明における第1の制御処理の一例を示すフローチャートであって、プロキシサーバ101のCPU201により実行される全体的な処理を示すフローチャートである。
なお、このフローチャートの処理はプロキシサーバ101のCPU201がHDD204に格納されるプログラムをRAM202にロードして実行することにより実現される。
まず、プロキシサーバ101のCPU201は、クライアントPC104から送信されるルールの設定要求を、クライアントPC104から受け付けたか否かを判断する(ステップS401)。そして、プロキシサーバ101のCPU201は、ルールの設定要求を受信したと判断した場合には(ステップS401でYES)、ルール設定処理を行う(ステップS402)。
ステップS402のルール設定処理の詳細処理は、図5を用いて後述する。
次に、プロキシサーバ101のCPU201は、ステップS402のルール設定処理が終了すると、処理をステップS403に移行する。
また、プロキシサーバ101のCPU201は、ステップS401において、クライアントPC104からルールの設定要求を受信していないと判定した場合(NO)、処理をステップS403に移行する。
プロキシサーバ101のCPU201は、クライアントPC104から送信される通信中継の要求を、クライアントPC104から受け付けたか否かを判定する(ステップS403)。
そして、プロキシサーバ101のCPU201は、クライアントPC104から通信中継要求を受信したと判定した場合(ステップS403でYES)、通信中継制御処理を行う(ステップS404)。
ステップS404の通信中継制御処理の詳細処理は、図10を用いて後述する。
そして、プロキシサーバ101のCPU201は、ステップS404の通信中継制御処理が終了すると、処理をステップS405に移行する。
また、プロキシサーバ101のCPU201は、ステップS403において、クライアントPC104から通信中継要求を受信していないと判定した場合(NO)、処理をステップS405に移行する。
プロキシサーバ101のCPU201は、ステップS405において、クライアントPC104からシステム終了指示を受けたか否かを判定する。そして、終了指示を受けていないと判定した場合には(ステップS405でNO)、処理をステップS401に戻す。
一方、プロキシサーバ101のCPU201は、クライアントPC104からシステム終了指示を受け付けたと判定した場合には(ステップS405でYES)、処理を終了する。
即ち、プロキシサーバ101のCPU201は、S401〜S404の処理を、クライアントPC104からシステム終了の指示を受けるまで(ステップS405でYESと判定されるまで)繰り返す。
次に、図5を用いて、図4のステップS402に示したルール設定処理の詳細処理を説明する。
図5は、本発明における第2の制御処理の一例を示すフローチャートであり、図4のステップS402のルール設定処理の詳細処理を示すフローチャートである。即ち、本処理は、プロキシサーバ101のCPU201によって行われる。
なお、本処理を行う際に、プロキシサーバ101のCPU201は、ルール受付手段301及びルール記録手段302としてプロキシサーバ101を機能させるためのプログラムをHDD204からRAM202にロードし、そのプログラムの制御に基づいて以下に示す処理を行うこととなる。
まず、プロキシサーバ101のCPU201は、ルールの設定要求を送信したクライアントPC104に対して、図6に示すルール設定画面600を表示するための表示情報を生成し送信する(ステップS501)。
当該表示情報を受信したクライアントPC104のCPU201は、当該受信した表示情報に従って、クライアントPC104のディスプレイ装置(表示部)にルール設定画面600を表示する。
ステップS501で送信するルール設定画面600の表示情報は、図9に示すルールDB102に記憶されたリクエストルールテーブル9100、及びレスポンスルールテーブル9200を取得して、当該取得したデータを用いて生成される。
すなわち、図6の例では、リクエストルールテーブル9100、及びレスポンスルールテーブル9200の各レコードのデータのうち、ID9101、ルール名9102、動作9111、ID9201、ルール名9202、動作9211のデータを、それぞれID611、ルール名612、動作613、ID621、ルール名622、動作623に表示するべく、表示情報を生成している。
ここで、図6を参照してルール設定画面600の構成について説明する。
図6は、ルール設定画面の一例を示す図である。図6に示すように、ルール設定画面600は、ルール種別(リクエストルール610、レスポンスルール620)毎に、表示部に表示される。
図6において、611及び621は、それぞれリクエストルールとレスポンスルールのIDの表示欄であって、リクエストルールとレスポンスルールのそれぞれを一意に示すIDが表示される。
なお、リクエストルール及びレスポンスルールは、それぞれ、上位のレコードのルールから順番に適用される。例えば、リクエストルールについては、「ID」が1のルールの次に、「ID」が2のルールが適用される。このように、上側のレコードのルールから順番に適用される。
612及び622は、それぞれリクエストルールとレスポンスルールのルール名の表示欄であって、リクエストルールとレスポンスルールそれぞれの各ルールに設定されているルール名が表示される。
613及び623は、それぞれリクエストルールとレスポンスルールの動作の表示欄である。すなわち、613には、リクエストルールに適合したリクエストのデータの中継を許可するか禁止するかの設定が表示される。また、623には、レスポンスルールに適合したレスポンスのデータの中継を許可するか禁止するかの設定が表示される。
614、624は、それぞれリクエストルール、レスポンスルールの編集を受け付けるための編集ボタンである。
リクエストルールを編集したい場合は、編集したいリクエストルールのレコードの編集ボタン614を、押下することにより、当該リクエストルールを編集することが出来る。
また、レスポンスルールを編集したい場合は、編集したいレスポンスルールのレコードの編集ボタン624を押下することにより、当該レスポンスルールを編集することが出来る。
615、625は、それぞれ、リクエストルール、レスポンスルールの削除を受け付けるための削除ボタンである。
リクエストルールを削除したい場合は、当該削除したいリクエストルールのレコードの削除ボタン615を押下することにより、当該リクエストルールを削除することが出来る。
また、レスポンスルールを削除したい場合は、当該削除したいレスポンスルールのレコードの削除ボタン625を押下することにより、当該レスポンスルールを削除することが出来る。
616、616は、それぞれ、リクエストルール、レスポンスルールを適用する順番(すなわち、ルールのレコードが表示される610/620のレコードの配置順)を変更するためのボタンである。
すなわち、リクエストルールを適用する順番を変更したい場合は、移動ボタン616を押下することにより、リクエストルールの移動画面がクライアントPC104の表示部に表示され、当該移動画面を用いて、リクエストルールを適用する順番を変更することが出来る。
また、レスポンスルールを適用する順番を変更したい場合は、移動ボタン626を押下することにより、レスポンスルールの移動画面がクライアントPC104の表示部に表示され、当該移動画面を用いて、レスポンスルールを適用する順番を変更することが出来る。
また、617、627は、それぞれ、リクエストルールを追加するためのボタン、レスポンスルールを追加するためのボタンである。
リクエストルールを追加したい場合は追加ボタン617を、レスポンスルールを追加したい場合は追加ボタン627を押下するとそれぞれのルールを追加することができる。
以下、図5のフローチャートの説明に戻る。
クライアントPC104のCPU201は、ステップS501で送信された表示情報を受信し、当該受信した表示情報に従って、表示部にルール設定画面600を表示する。
そして、管理者により、編集ボタン614、削除ボタン615、移動ボタン616、追加ボタン617、編集ボタン624、削除ボタン625、移動ボタン626、追加ボタン627のいずれかのボタンが押下されると、クライアントPC104のCPU201は、当該押下されたボタンに対応する要求をプロキシサーバ101に送信する。
具体的には、管理者により、編集ボタン614、追加ボタン617のいずれかのボタンが押下されると、クライアントPC104のCPU201は、リクエストルールの詳細設定要求をプロキシサーバ101に送信する。
また、管理者により、移動ボタン616が押下されると、クライアントPC104のCPU201は、リクエストルールの移動要求をプロキシサーバ101に送信する。
また、管理者により、編集ボタン624、追加ボタン627のいずれかのボタンが押下されると、クライアントPC104のCPU201は、レスポンスルールの詳細設定要求をプロキシサーバ101に送信する。
また、管理者により、移動ボタン626のボタンが押下されると、クライアントPC104のCPU201は、レスポンスルールの移動要求をプロキシサーバ101に送信する。
なお、管理者により、削除ボタン615、削除ボタン625のいずれかのボタンが押下されると、クライアントPC104のCPU201は、当該押下された削除ボタンのレコードのルールをルールDB102から削除するための削除要求をプロキシサーバ101に送信する。そして、当該削除要求を受信したプロキシサーバ101のCPU201は、当該削除要求されているルールをルールDB102から削除する。
次に、プロキシサーバ101のCPU201は、ステップS502において、クライアントPC104からのリクエストルールの詳細設定要求を受け付けたか否かを判定する。ここでの詳細設定要求は、クライアントPCのディスプレイ上に表示されているルール設定画面600の追加ボタン617もしくは編集ボタン614が押下された場合に発行されるものである。
具体的に説明すると、クライアントPC104のCPU201は、管理者により追加ボタン617が押下された場合には、新規のリクエストルールの詳細設定要求を送信し、管理者により編集ボタン614が押下された場合には、すでにリクエストルールテーブル9100に登録されている、当該押下された編集ボタン614のレコードに対応するリクエストルールの変更要求を含むリクエストルールの詳細設定要求を送信する。
そして、プロキシサーバ101のCPU201は、クライアントPC104から、リクエストルールの詳細設定要求を受け付けたと判断した場合には(ステップS502でYES)、図7に示すリクエストルール詳細画面700を表示するための表示情報を生成し、詳細設定要求を送信してきたクライアントPC104に対して送信する(ステップS503)。
一方、プロキシサーバ101のCPU201は、クライアントPC104から、リクエストルールの詳細設定要求を受け付けていないと判断した場合には(ステップS502でNO)、処理をステップS504に移行する。
ここで、プロキシサーバ101のCPU201は、管理者により編集ボタン614が押下され、リクエストルールの変更要求であるリクエストルールの詳細設定要求をクライアントPC104から受信したと判定した場合は、当該押下された編集ボタン614のレコードのルールIDが一致するリクエストルールをリクエストルールテーブル9100から取得し、当該取得したリクエストルールが設定されたリクエストルール詳細画面700の表示情報を生成し、当該クライアントPC104に送信する。
また、プロキシサーバ101のCPU201は、管理者により追加ボタン617が押下され、新規のリクエストルールの詳細設定要求をクライアントPC104から受信したと判定された場合は、新規のリクエストルールの入力を受け付けるため、管理者により選択されていないリクエストルール詳細画面700(図7)の表示情報を生成し、当該クライアントPC104に送信する。
以下に、図7のリクエストルール詳細画面700について説明する。
図7において、701はルールの種類を表す表示欄であって、リクエストルールの詳細画面であることを表すため、リクエストルールと表示する。尚、レスポンスルール詳細画面では、この表示欄にレスポンスルールと表示する。
図7において、702はリクエストルールのID表示欄であって、リクエストルールを一意に示すIDを表示する。このIDは自動的に付与しても、ユーザの入力部からの入力指示に基づいて設定しても(リクエストルール内での重複は許さない)構わない。703はルール名入力欄であって、当該リクエストルール名の入力を受け付ける。
704は、URLを選択するためのラジオボタンであり、706は、URLで特定されるWEBサイト、又はWEBページのカテゴリを選択するためのラジオボタンである。
URL条件では、特定のURLを指定するか(URLラジオボタン704を選択する)若しくはカテゴリを指定するか(カテゴリラジオボタン706を選択する)が選択可能である。そしてURLラジオボタン704が選択された場合にはURL入力欄705への入力が、カテゴリラジオボタン706が選択された場合にはカテゴリ選択セレクトボックス707によるカテゴリの選択が可能である。
なお、URL入力欄705では区切り文字で区切って複数のURLを、カテゴリ選択ボックス707では同時に複数のカテゴリを指定することが可能である。
本実施例では、URL条件にURL指定もしくはカテゴリ指定のどちらかによる設定を行うことになっているが、双方を同時に設定させても勿論かまわない。
プロキシサーバ101のCPU201は、クライアントPC104からのリクエストの送信先のURLがこれらの条件に合致した場合に、URL条件が合致したと判定する。
708はリクエストデータに含まれるファイルのファイル形式を選択するためのセレクトボックスであって、同時に複数のファイル形式を選択することができる。
709は、リクエストデータに含まれるファイルのファイルサイズの入力欄である。
710は、リクエストデータに含まれるファイルのファイルサイズが709で指定したサイズ以上/以下を選択するラジオボタンである。ファイルのサイズが709で指定したサイズ以上の場合にルールに合致させたい場合は「以上」を、ファイルのサイズが709で指定したサイズ以下の場合にルールに合致させたい場合は「以下」をユーザが指定する。
711はリクエストデータに含まれるファイルのファイル形式と、当該ファイルに付与されている拡張子が一致する/しないを指定するラジオボタンである。ファイル形式と拡張子が一致する場合にルールに合致させたい場合は「する」を、ファイル形式と拡張子が一致しない場合にルールに合致させたい場合は「しない」をユーザが選択する。
712は、キーワード条件の入力欄である。リクエストデータに含まれるファイル、及びリクエストデータに含まれるファイル以外のフィールド内のテキスト情報と照合するキーワードを入力する。
キーワード入力欄には複数のキーワードを入力することが可能であり、またそれらの結合条件(AND条件:例えば「&」で設定、OR条件:例えば「|」で設定、結合優先度設定:例えば括弧「()」で設定)の設定も可能である。
そして上記条件に合致した場合に(URL条件、ファイル条件、キーワード条件をAND条件で結合)、クライアントPC104から送信されたリクエストの中継を許可/禁止のどちらかに設定するかを動作ラジオボタン713で選択し設定することができる。
また、URL条件、ファイル条件、キーワード条件の結合方法を入力するための領域をリクエストルール詳細画面700に更に設けて、その領域に結合条件を入力し、その結合条件を満たした場合にリクエストの中継を許可/禁止とするといった設定をするようにしても勿論かまわない。
また、714は、クライアントPC104を使用するユーザ名を入力する入力欄である。
入力欄714にユーザ名を設定することにより、入力欄714に入力されたユーザが使用しているクライアントPC104からのリクエストの中継を、どのような条件にて、許可するか、或いは禁止するかを設定することが可能となる。
なお、本実施例で入力欄714に入力されるユーザ名は、プロキシ認証を行うためのユーザ名として説明するが、送信元の端末、又は端末を操作するユーザが特定できる情報であれば、他の情報であっても構わない。
クライアントPC104のCPU201は、管理者により、更新ボタン715が押下された場合、上記指定(設定)したリクエストルールの詳細(情報)の登録要求をプロキシサーバ101に対して行う。
また、クライアントPC104のCPU201は、管理者によりキャンセルボタン716が押下された場合は、リクエストルールの詳細(情報)の登録要求を行わずに、リクエストルールの詳細設定処理を終了する。
以上が図7に示すリクエストルール詳細画面700の説明である。
以下、図5のフローチャートの説明に戻る。
ステップS504において、プロキシサーバ101のCPU201は、クライアントPC104からリクエストルールの移動要求を受け付けたか否かを判断する。この要求は、クライアントPCのディスプレイ上に表示されているルール設定画面600の移動ボタン616が押下された場合に発行されるものである。
そして、プロキシサーバ101のCPU201は、リクエストルールの移動要求を受け付けたと判断した場合には(ステップS504でYES)、図8に示すリクエストルール移動画面800を表示するための表示情報を生成し、リクエストルールの移動要求を送信してきたクライアントPC104に対して送信する(ステップS505)。
一方、プロキシサーバ101のCPU201は、リクエストルールの移動要求を受け付けていないと判断した場合には(ステップS504でNO)、処理をステップS506に移行する。
ここでリクエストルール移動画面800について説明する。
図8は、リクエストルール移動画面800の一例を示す図である。
リクエストに含まれるデータがリクエストルールに該当するかの判定は、ルール設定画面600のリクエストルール610の各レコードのルールの配置順に従って行われる。すなわち、リクエストルール610の上側のレコードのルールから順番に適用される。このように、本実施例では、リクエストルールの配置順がルールの適用順となっている。
そして、条件に合致したリクエストルールがあった場合には、そのリクエストルールに設定された動作を行う。
それゆえ、合致したリクエストルールより適用順の低いリクエストルールに該当するかの判定は行われない。
図8に示すリクエストルール移動画面800を用いて、リクエストルールの配置順を変更することが可能となり、リクエストルールを適用する順番を変更することが出来る。
図8において、801はルールの種類を表す表示欄である。図8では、リクエストルールの移動画面であることを表すため、リクエストルールと表示する。なお、レスポンスルール移動画面では、この表示欄にレスポンスルールと表示する。
802は、移動対象となるリクエストルールの行番号の表示欄である。すなわち、802は、何行目のリクエストルールを移動させるかが表示される表示欄である。
803は、移動対象のリクエストルールを何行目のリクエストルールの上側、又は下側に移動させるかを入力させる入力欄である。
804は、移動対象のリクエストルールを803で指定した行番号のリクエストルールの上側に移動させるか、下に移動させるかを選択するセレクトボックスである。
ユーザは、803で指定した行番号のリクエストルールの上側に移動させたい場合は「上に」を、下側に移動させたい場合は「下に」を選択する。
そして、クライアントPC104のCPU201は、ユーザにより確定ボタン805が押下された場合、上記設定したリクエストルールの移動要求をプロキシサーバ101に対して行う。また、クライアントPC104のCPU201は、ユーザによりキャンセルボタン806が押下された場合は、リクエストルールの移動を実施せずに処理を終了する。
以下、図5のフローチャートの説明に戻る。
次に、プロキシサーバ101のCPU201は、レスポンスルールの詳細設定要求をクライアントPC104から受け付けたか否かを判断する(ステップS506)。
この詳細設定要求は、クライアントPC104のディスプレイ上に表示されているルール設定画面600の追加ボタン627もしくは編集ボタン624が押下された場合に発行されるものである。
クライアントPC104のCPU201は、管理者により追加ボタン627が押下された場合には、新規のレスポンスルールの詳細設定要求を送信し、管理者により編集ボタン624が押下された場合には、すでにレスポンスルールテーブル9200に登録されている、当該押下された編集ボタン624のレコードに対応するレスポンスルールの変更要求を含むレスポンスルールの詳細設定要求を送信する。
そして、プロキシサーバ101のCPU201は、レスポンスルールの詳細設定要求をクライアントPC104から受け付けたと判断した場合には(ステップS506でYES)、レスポンスルール詳細画面を表示するための表示情報を生成し、当該詳細設定要求を送信してきたクライアントPC104に対して送信する(ステップS507)。
一方、プロキシサーバ101のCPU201は、レスポンスルールの詳細設定要求をクライアントPC104から受け付けていないと判断した場合には(ステップS506でNO)、処理をステップS508に移行する。
ここで、レスポンスルール詳細画面は、図7に示すリクエストルール詳細画面700と同様の設定項目を有している画面である。レスポンスルール詳細画面がクエストルール詳細画面700と異なる点は、リクエストルール詳細画面700の「種類」の表示欄701に、「レスポンスルール」と表示される点である。
ステップS506及びステップS507での処理について以下に詳しく説明する。
プロキシサーバ101のCPU201は、管理者により編集ボタン624が押下され、レスポンスルールの変更要求を含むレスポンスルールの詳細設定要求をクライアントPC104から受信したと判定した場合は、当該押下された編集ボタン624のレコードのルールIDが一致するレスポンスルールをレスポンスルールテーブル9200から取得し、当該取得したレスポンスルールが設定されたレスポンスルール詳細画面の表示情報を生成し、当該クライアントPC104に送信する。
また、プロキシサーバ101のCPU201は、管理者により追加ボタン627が押下され、新規のレスポンスルールの詳細設定要求をクライアントPC104から受信したと判定された場合は、新規のレスポンスルールの入力を受け付けるため、管理者により選択されていないレスポンスルール詳細画面の表示情報を生成し、当該クライアントPC104に送信する。
次に、レスポンスルール詳細画面の説明を、図7のリクエストルール詳細画面を用いて説明する。
レスポンスルール詳細画面は、701に「レスポンスルール」と表示され、702には、レスポンスルールを一意に示すIDが表示される。
また、704は、URLを選択するためのラジオボタンであり、706は、URLで特定されるWEBサイト、又はWEBページのカテゴリを選択するためのラジオボタンである。
URL条件では、特定のURLを指定するか(URLラジオボタン704を選択する)若しくはカテゴリを指定するか(カテゴリラジオボタン706を選択する)を選択することが可能である。
そして、URLラジオボタン704が選択された場合にはURL入力欄705への入力が、カテゴリラジオボタン706が選択された場合にはカテゴリ選択セレクトボックス707によるカテゴリの選択が可能である。
なお、URL入力欄705では区切り文字で区切って複数のURLを、カテゴリ選択ボックス707では同時に複数のカテゴリを指定することが可能である。
本実施例では、URL条件にURL指定もしくはカテゴリ指定のどちらかによる設定を行うことになっているが、双方を同時に設定させても勿論かまわない。
プロキシサーバ101のCPU201は、レスポンスデータの送信元(ウェブサーバ107)のURLがこれらの条件に合致した場合に、URL条件が合致したと判定する。
708は、レスポンスデータに含まれるファイルのファイル形式を選択するためのセレクトボックスであって、同時に複数のファイル形式を選択することができる。
709は、レスポンスデータに含まれるファイルのファイルサイズの入力欄である。
710は、レスポンスデータに含まれるファイルのファイルサイズが709で指定したサイズ以上/以下を選択するラジオボタンである。ファイルのサイズが709で指定したサイズ以上の場合にルールに合致させたい場合は「以上」を、ファイルのサイズが709で指定したサイズ以下の場合にルールに合致させたい場合は「以下」をユーザが指定する。
711はレスポンスデータに含まれるファイルのファイル形式と、当該ファイルに付与されている拡張子が一致する/しないを指定するラジオボタンである。ファイル形式と拡張子が一致する場合にルールに合致させたい場合は「する」を、ファイル形式と拡張子が一致しない場合にルールに合致させたい場合は「しない」をユーザが選択する。
712は、キーワード条件の入力欄である。レスポンスデータに含まれるファイル、及びレスポンスデータに含まれるファイル以外のフィールド内のテキスト情報と照合するキーワードを入力する。
キーワード入力欄には複数のキーワードを入力することが可能であり、またそれらの結合条件(AND条件:例えば「&」で設定、OR条件:例えば「|」で設定、結合優先度設定:例えば括弧「()」で設定)の設定も可能である。
そして、上記条件に合致した場合に(URL条件、ファイル条件、キーワード条件をAND条件で結合)、ウェブサーバ107から送信されたレスポンスデータの中継を許可/禁止のどちらかに設定するかを動作ラジオボタン713で選択し設定することができる。
また、URL条件、ファイル条件、キーワード条件の結合方法を入力するための領域をレスポンスルール詳細画面700に更に設けて、その領域に結合条件を入力し、その結合条件を満たした場合に、リクエストの中継を許可/禁止とするといった設定をするようにしても勿論かまわない。
また、714は、クライアントPC104を使用するユーザ名を入力する入力欄である。
すなわち、714は、ウェブサーバ107から送信されるレスポンスデータの送信先を入力する入力欄である。
このように、レスポンスルール詳細画面700の入力欄714にユーザ名を設定することにより、入力欄714に入力されたユーザが使用しているクライアントPC104に、ウェブサーバ107から送信されるレスポンスデータの中継を、どのような条件にて、許可するか、或いは禁止するかを設定することが可能となる。
なお、本実施例で入力欄714に入力されるユーザ名は、プロキシ認証を行うためのユーザ名として説明するが、レスポンスデータの送信先の端末、又は該端末を操作するユーザを特定可能な情報であれば、他の情報であっても構わない。
クライアントPC104のCPU201は、管理者により、更新ボタン715が押下された場合、上記指定(設定)したレスポンスルールの詳細(情報)の登録要求をプロキシサーバ101に対して行う。
また、クライアントPC104のCPU201は、管理者によりキャンセルボタン716が押下された場合は、レスポンスルールの詳細(情報)の登録要求を行わずに、レスポンスルールの詳細設定処理を終了する。
以上が、レスポンスルール詳細画面の説明である。
次に、図5の説明に戻る。
次に、プロキシサーバ101のCPU201は、ステップS508において、クライアントPC104からレスポンスルールの移動要求を受け付けたか否かを判断する。この要求は、クライアントPCのディスプレイ上に表示されているルール設定画面600の移動ボタン626が押下された場合に発行されるものである。
そして、プロキシサーバ101のCPU201は、レスポンスルールの移動要求を受け付けたと判断した場合には(ステップS508でYES)、レスポンスルール移動画面を表示するための表示情報を生成し、レスポンスルールの移動要求を送信してきたクライアントPC104に対して送信する(ステップS509)。
プロキシサーバ101のCPU201は、レスポンスルールの移動要求を受け付けていないと判断した場合には(ステップS508でNO)、処理をステップS510に移行する。
なお、レスポンスルール移動画面は、図8に示すリクエストルール移動画面800と同様の項目から構成されている。それゆえ、レスポンスルール移動画面は、リクエストルール移動画面800の種類の表示欄801に、リクエストルールではなく、レスポンスルールと表示される画面である。
ウェブサーバ107から送信されるレスポンスデータがレスポンスルールに該当するかの判定は、ルール設定画面600のレスポンスルール620の各レコードのルールの配置順に従って行われる。
すなわち、レスポンスルール620の上側のレコードのルールから順番に適用される。このように、本実施例では、レスポンスルールの配置順がルールの適用順となっている。
そして、条件に合致したレスポンスルールがあった場合には、そのレスポンスルールに設定された動作を行う。
それゆえ、合致したレスポンスルールより適用順の低いレスポンスルールに該当するかの判定は行われない。
図8に示すレスポンスルール移動画面を用いて、レスポンスルールの配置順を変更することが可能となり、レスポンスルールを適用する順番を変更することが出来る。
レスポンスルール移動画面について、図8を用いて説明する
図8では、レスポンスルールの移動画面であることを表すため、ルールの種類を表す表示欄801にレスポンスルールと表示する。
802は、移動対象となるレスポンスルールの行番号の表示欄である。すなわち、802は、何行目のレスポンスルールを移動させるかが表示される表示欄である。
803は、移動対象のレスポンスルールを何行目のレスポンスルールの上側、又は下側に移動させるかを入力させる入力欄である。
804は、移動対象のレスポンスルールを803で指定した行番号のレスポンスルールの上側に移動させるか、下に移動させるかを選択するセレクトボックスである。
ユーザは、803で指定した行番号のレスポンスルールの上側に移動させたい場合は「上に」を、下側に移動させたい場合は「下に」を選択する。
そして、クライアントPC104のCPU201は、ユーザにより確定ボタン805が押下された場合、上記設定したレスポンスルールの移動要求をプロキシサーバ101に対して行う。また、クライアントPC104のCPU201は、ユーザによりキャンセルボタン806が押下された場合は、レスポンスルールの移動を実施せずに処理を終了する。
以上のようにして、レスポンスルールについてもリクエストルールと同様に図8に示す移動画面によるルール表示順位(適用順)の変更が可能となる。
プロキシサーバ101のCPU201は、クライアントPC104から、リクエストルールの詳細(情報)の登録要求、リクエストルールの移動要求、レスポンスルールの詳細(情報)の登録要求、レスポンスルールの移動要求、削除要求のいずれかを受信したか否かを判定する(ステップS510)。
そして、プロキシサーバ101のCPU201は、ステップS510において、リクエストルールの詳細(情報)の登録要求、リクエストルールの移動要求、レスポンスルールの詳細(情報)の登録要求、レスポンスルールの移動要求、削除要求のいずれかを受信したと判断した場合には(ステップS510でYES)、処理をステップS511に移行する。
次に、プロキシサーバ101のCPU201は、クライアントPC104から受信した、リクエストルールの詳細(情報)の登録要求、リクエストルールの移動要求、レスポンスルールの詳細(情報)の登録要求、レスポンスルールの移動要求、削除要求に従って、ルールDB102に記憶されているルールテーブル(9100、9200)を更新(登録/削除)して記憶保存する(ステップS511)。
ここでルールDBについて、図9を参照して説明する。
図9は、ルールDB102のデータ構成の一例を示す図である。
図9に示すように、ルールDB102には、クライアントPC104からウェブサーバ107に送信されるリクエストデータの中継制御に用いられるリクエストルールを記憶したリクエストルールテーブル9100と、当該リクエストに対してウェブサーバ107からクライアントPC104に送信されるレスポンスデータの中継制御に用いられるレスポンスルールを記憶したレスポンスルールテーブル9200とを備えている。
図9において、9101および9201は、それぞれリクエストルールとレスポンスルールのIDを記録する列であって、リクエストルールとレスポンスルールのそれぞれを一意に示すIDが記録される。すなわち、9101、9201は、それぞれ、リクエストルール詳細画面(図7)の702のIDの値、レスポンスルール詳細画面の702のIDの値が記憶される。
リクエストルール及びレスポンスルールは、それぞれのテーブルに記録されている順に適用される(上側のレコードのルールから順に適用される)。尚、リクエストルールとレスポンスルールの適用順を記録する列を追加して、その順番に従い、それぞれのルールを適用するように構成しても勿論構わない。
9102及び9202は、それぞれリクエストルールとレスポンスルールのルール名が記憶される列であって、各レコードのルールのルール名が記録される。すなわち、9102、9202には、それぞれリクエストルール詳細画面の703に入力されたルール名、レスポンスルール詳細画面の703に入力されたルール名が記憶される。
9103、9203には、それぞれ、リクエストルール詳細画面の714に入力されたデータ、レスポンスルール詳細画面の714に入力されたデータが記憶される。すなわち、9103、9203には、例えばクライアントPCを使用するユーザ名が記憶される。また、図7の入力欄714には、ユーザ名だけではなく、グループ名を入力するようにしてもよく、グループ名が入力された場合は、9103、9203にはグループ名が記憶されることになる。
9104及び9204は、それぞれリクエストルールとレスポンスルールのURLを記録する列である。すなわち、9104、9204には、それぞれ、リクエストルール詳細画面の705に入力されたURL、レスポンスルール詳細画面の705に入力されたURLが記憶される。
9105及び9205は、それぞれリクエストルールとレスポンスルールのカテゴリを記録する列である。すなわち、9105、9205には、それぞれ、リクエストルール詳細画面の707で選択・入力されたカテゴリ、レスポンスルール詳細画面の707で選択・入力されたカテゴリが記憶される。
9106および9206は、それぞれリクエストルールとレスポンスルールのファイル形式を記録する列であって、それぞれ、1つ又は複数のファイル形式が記録可能である。すなわち、9106、9206には、それぞれ、リクエストルール詳細画面の708で選択・入力されたファイル形式、レスポンスルール詳細画面の708で選択・入力されたファイル形式が記憶される。
9107および9207は、それぞれリクエストルールとレスポンスルールのファイルサイズを記録する列である。すなわち、9107、9207には、それぞれ、リクエストルール詳細画面の709で入力されたファイルサイズ、レスポンスルール詳細画面の709で入力されたファイルサイズが記憶される。
9108および9208は、それぞれリクエストルールとレスポンスルールのファイルサイズの条件を記録する列であって、それぞれ9107および9207に記録したファイルサイズ以上の場合にルールに合致させるか、若しくは、9107および9207に記録したファイルサイズ以下の場合にルールに合致させるかの情報が記録される。
すなわち、9108、9208には、それぞれ、リクエストルール詳細画面の710で選択された条件(「以上」か「以下」かの条件)、レスポンスルール詳細画面の710で選択された条件(「以上」か「以下」かの条件)が記憶される。
9109および9209は、それぞれリクエストルールとレスポンスルールのファイル形式と拡張子の一致条件を記録する列であって、それぞれ9106、9206で指定したファイル形式に対して、ファイル形式と拡張子が一致するもしくは一致しない場合にルールに合致させるかの情報が記録される。
すなわち、9109、9209には、それぞれ、リクエストルール詳細画面の711で選択された条件(ファイル形式と拡張子が一致「する」か「しない」かの条件)、レスポンスルール詳細画面の711で選択された条件(ファイル形式と拡張子が一致「する」か「しない」かの条件)が記憶される。
9110および9210は、それぞれリクエストルールとレスポンスルールのキーワード条件を記録する列である。
すなわち、9110、9210には、それぞれ、リクエストルール詳細画面の712で入力されたキーワード条件、レスポンスルール詳細画面の712で入力されたキーワード条件が記憶される。
9111および9210は、それぞれリクエストルールとレスポンスルールの動作を記録する列であって、リクエストデータもしくはレスポンスデータに合致した場合に通信を許可するもしくは禁止するというプロキシサーバ101に行わせる動作を記録する。
すなわち、9111、9211には、それぞれ、リクエストルール詳細画面の713で選択された動作、レスポンスルール詳細画面の713で選択された動作が記憶される。
以上がルールDB102の構成例を表す図9の説明である。なお、図9では、リクエストルールとレスポンスルールを別々のテーブルとして管理する例を示したが、一つのテーブル内に記録し、どちらのルールであるかを識別するための列を追加して管理しても勿論構わない。
以下、図5のフローチャートの説明に戻る。
プロキシサーバ107のCPU201は、ステップS512において、ステップS511で更新されたルールDB102(図9)に記憶されたリクエストルールテーブル9100、及びレスポンスルールテーブル9200を取得して、当該取得したデータを用いて、ルール設定画面600を表示するための表示情報を生成し、クライアントPC104に該表示情報を送信する(ステップS512)。
そして、当該表示情報を受信したクライアントPC104のCPU201は、当該表示情報に従って、クライアントPC104の表示部に更新されたルール設定画面600を表示する。
プロキシサーバ101のCPU201は、クライアントPC104から、リクエストルールの詳細(情報)の登録要求、リクエストルールの移動要求、レスポンスルールの詳細(情報)の登録要求、レスポンスルールの移動要求、削除要求のいずれも受信していないと判定された場合は(ステップS510:NO)、ルール設定処理を終了する。
以上がプロキシサーバ101のCPU201によって行われるルール設定処理の一例である。
以下に、図10を参照して、図4のステップS404に示した通信中継制御処理を詳細に説明する。
図10は、本発明における第3の制御処理の一例を示すフローチャートであり、図4のステップS404に示した通信中継制御処理の詳細を示すフローチャートに対応する。即ち、本処理は、プロキシサーバ101のCPU201によって行われる。尚、本処理を行う際に、CPU201は、図3の通信中継制御手段303および通信許可/禁止応答送信手段304としてプロキシサーバ101を機能させるためのプログラムをHDD204からRAM202にロードし、そのプログラムの制御に基づいて以下に示す処理を行うこととなる。
プロキシサーバ101のCPU201は、LAN105に流れるパケットを常時監視している。そして、プロキシサーバ101のCPU201は、クライアントPC104から広域ネットワーク106に設置されているウェブサーバ107に対してのリクエスト(リクエストデータやリクエストのデータとも言う)を受け付ける(ステップS1001)。
そして、プロキシサーバ101のCPU201は、ステップS1001で受け付けたリクエストされたURL(リクエストのデータに含まれるURL)をURLDB103(図12)の中から検索して、当該URLのWEBサイト又はWEBページのカテゴリを判定する(ステップS1002)。ここで、ステップS1002のURLカテゴリ判定処理の詳細について図11を参照して説明する。
図11は、図10のステップS1002に示したURLカテゴリ判定処理の詳細を示すフローチャートである。即ち、本処理は、プロキシサーバ101のCPU201によって行われる。
プロキシサーバ101のCPU201は、図11のステップS1101において、URLDB103の中から、リクエストされたURLのカテゴリを検索する。ここでURLDB103の詳細について図12を参照して説明する。
図12は、URLDB103のデータ構成の一例を示す図である。
URLDB103は、カテゴリごとにウェブサーバ107のリソースを表すURLを登録したデータベースである。
図12では、URL1203を、大カテゴリ1201と小カテゴリ1202に分類し、それぞれを関連付けて格納している。
図12の例では、例えば、「http://www.example.com/portal/」のURLで特定されるリソース(WEBページやWEBサイト)の内容のカテゴリは、「ポータルサイト」であることを示している。
図12では、URLDB103をデータテーブルとして説明しているが、URLで特定されるリソースのカテゴリを検索することができれば、他の形式で格納しても勿論構わない。
以下、図11のフローチャートの説明に戻る。
プロキシサーバ101のCPU201は、ステップS1101で、URLDB103の中から、リクエストされたURLのカテゴリが検索されたか否かを判定する(ステップS1102)。
そして、プロキシサーバ101のCPU201は、URLのカテゴリが検索されたと判定された場合(ステップS1102でYES)には、リクエストされたURLのカテゴリを、当該検索されたカテゴリに決定し、処理をステップS1003に移行する。
一方、プロキシサーバ101のCPU201は、ステップS1102において、該当するカテゴリがないと判定した場合(NO)には、リクエストされたURLのカテゴリがないと決定し(ステップS1104)、処理をステップS1003に移行する。
以下、図10のフローチャートの説明に戻る。
プロキシサーバ101のCPU201は、ステップS1001で受信したリクエストのデータからファイルやテキストデータ等のリクエストの詳細情報を取得する(ステップS1003)。
ここで、図13を参照して、ステップS1003に示すリクエスト詳細情報取得処理の詳細について説明する。
図13は、図10のステップS1003に示したリクエスト詳細情報取得処理の詳細を示すフローチャートである。即ち、本処理は、プロキシサーバ101のCPU201によって行われる。
プロキシサーバ101のCPU201は、ステップS1001で受信したリクエストデータにファイルが含まれているか否かを判定する(ステップS1301)。そして、リクエストデータにファイルが含まれていないと判定された場合は(ステップS1301でNO)、処理をステップS1308に移行する。
一方、ステップS1301で、リクエストデータにファイルが含まれていると判定された場合は(ステップS1301でYES)、当該ファイルのファイルサイズを取得する(ステップS1302)。ここで、ファイルサイズは、リクエストデータに含まれているファイルを解析して、当該ファイルのファイルサイズを計算することにより取得される。
次に、プロキシサーバ101のCPU201は、リクエストデータに含まれるファイルのファイル形式を判定する。ここで、ファイル形式は、ファイルの拡張子ではなく、ファイルに含まれるマジックナンバーを用いて判定される。
ファイルには、通常マジックナンバーと呼ばれるファイル形式ごとに特徴的な情報がファイルの先頭や末尾などに格納されている。
例えば、ファイル形式がPDFの場合は、ファイルの先頭5バイトが%PDF−となる。リクエストヘッダーに記載されたContent−Typeによらず、マジックナンバーでファイル形式を判定することでファイルに間違った拡張子が付与されている場合や、意図的に変更されている場合でも、本来のファイル形式を判定することが可能となる。尚、リクエストデータに含まれるファイルが圧縮されている場合は、そのファイルを解凍した上でファイル形式を判定する。
マジックナンバーによるファイル形式の判定では、あらかじめファイル形式ごとのマジックナンバーを知っておく必要がある。ここで、図14を参照してマジックナンバーによるファイル形式の判定で使用するファイル形式とマジックナンバーの対応表について説明する。
図14は、ファイル形式とマジックナンバーの対応表の構成の一例を示す図である。
図14では、ファイル形式をファイル形式1401の列に、対応するマジックナンバーをマジックナンバー1402の列に記録しているが、データテーブルではない他の形式で記録しても勿論構わない。尚、ファイル形式とマジックナンバーの対応表1400は、プロキシサーバ101内に備えていても、別のコンピュータ内に実装しても構わない。
以下、図13のフローチャートの説明に戻る。
次に、プロキシサーバ101のCPU201は、リクエストデータに含まれるファイルのファイル名から、当該ファイル名に含まれている拡張子を取得する(ステップS1304)。
次に、プロキシサーバ101のCPU201は、ステップS1303で判定したファイル形式と、ステップS1304で取得した拡張子が一致しているか否かを判定する(ステップS1305)。ここで、ファイル形式と拡張子が一致しているか否かを判定する処理について説明する。
ファイル形式には、通常付与される拡張子がある。例えば、ファイル形式がPDF(ポータブル・ドキュメント・フォーマット)であるファイルには、通常pdfが拡張子として付与される。また、ファイル形式がRTF(リッチテキストフォーマット)であるファイルには、通常rtfが拡張子として付与される。ファイル形式と付与されている拡張子が一致しているか否かの判定では、図17に示すようなファイル形式ごとに付与されるべき拡張子の対応表1700を使用する。
図17に示すファイル形式と拡張子の対応表1700には、ファイル形式をファイル形式1701に、当該ファイル形式の拡張子を拡張子1702に記憶されている。
ファイル形式と拡張子が一致しているか否かを判定する場合は、ステップS1303で判定されたファイル形式をファイル形式1701から検索し、検索されたファイル形式に対応する(同一レコードの)拡張子を全て拡張子1702の列から取得する。
そして、ステップS1304で取得した、ファイル名に付与されている拡張子が、当該取得した拡張子の中にある場合は、ファイル形式と拡張子が一致すると判断し、ない場合は一致しないと判断する。
ステップS1305で、ファイル形式と拡張子が一致すると判定された場合には、拡張子の偽装はないことを示し、ファイル形式と拡張子が一致しないと判定された場合には、拡張子の偽装があることを示している。
尚、ファイル形式と拡張子の対応表1700は、プロキシサーバ101内に備えていても、別のコンピュータ内に実装しても構わない。
また、不図示のメンテナンス画面を用意し、対応表1700に記憶されているファイル形式や拡張子を変更/登録できるようにしても勿論構わない。
以下、図13のフローチャートの説明に戻る。
次に、プロキシサーバ101のCPU201は、ステップS1303で判定されたファイルのファイル形式が、テキスト情報を含むファイルのファイル形式であるか否かを判定する(ステップS1306)。
図18は、テキスト情報を含むのファイル形式1801と、当該ファイル形式のファイルからテキスト情報を抽出するプログラム1802とが関連付けられて記憶されたテキスト情報抽出情報1800の一例を示す図である。テキスト情報抽出情報(図18)は、プロキシサーバ101の記憶部に記憶されている。
テキスト情報抽出情報1800には、図18に示すように、ファイル形式と、当該ファイル形式に適したプログラムが関連付けられている。
ステップS1306では、ステップS1303で判定されたファイルのファイル形式が、テキスト情報抽出情報1800(図18)のファイル形式1801に記憶されているか否かを判定することにより、テキスト情報を含むファイルのファイル形式であるか否かを判定する。
すなわち、ステップS1303で判定されたファイルのファイル形式が、テキスト情報抽出情報1800(図18)のファイル形式1801に記憶されている場合は、テキスト情報を含むファイルのファイル形式であると判定する。一方、テキスト情報抽出情報1800(図18)のファイル形式1801に記憶されていない場合は、テキスト情報を含むファイルのファイル形式であると判定する。
プロキシサーバ101のCPU201は、ステップS1306において、テキスト情報を含むファイルのファイル形式であると判定された場合は(YES)、テキスト情報抽出情報1800に、該ファイル形式に関連付けて記憶されているテキスト抽出プログラムを実行し、ステップS1001で受信したリクエストデータに含まれるファイルのテキスト情報を抽出し取得する(ステップS1307)。
以上のようにして、ファイルがテキスト情報を含む形式である場合は、ステップS1303で取得したファイルのファイル形式に適した方法でテキスト情報を取得することができる。
プロキシサーバ101のCPU201は、ステップS1306において、テキスト情報を含まないファイルのファイル形式であると判定された場合(NO)、すなわち、テキスト情報を含まない画像等のファイル形式であると判定された場合は、処理をステップS1308に移行する。
次に、プロキシサーバ101のCPU201は、ステップS1308では、リクエストデータに含まれるファイル以外のフィールドのデータからテキスト情報を取得する。ここでは、リクエストデータに含まれるリクエスト先のURL、リクエストデータに含まれる、クライアントPC104を使用しているユーザのユーザ名、パスワードを取得する。なお、ユーザのユーザ名、パスワードが暗号化されている場合は、復号して該ユーザ名、該パスワードを取得する。本実施の形態において、ここで取得されるユーザ名、パスワードは、プロキシ認証で用いられる情報として説明するが、ユーザ、又はクライアントPC104を識別可能な情報であれば、何でも構わない。
ステップS1301からステップS1308の処理で取得したリクエストデータの詳細情報(ファイル、ファイルサイズ、ファイル形式、ファイルの拡張子、ファイル内のテキスト情報、ファイル以外のフィールドのテキスト情報、リクエストのデータに含まれるURL、リクエストのデータに含まれるユーザ名とパスワードなど)は、リクエストルール(条件)とマッチ(合致)するかを判定する処理(ステップS1004)で使用する。
以下、図10のフローチャートの説明に戻る。
プロキシサーバ101のCPU201は、ステップS1004において、ステップS1003で取得したリクエストの詳細情報に対して、ルールDB102に登録されているリクエストルールを適用する。
すなわち、プロキシサーバ101のCPU201は、ステップS1003で取得したリクエストの詳細情報が、ルールDB102に登録されているリクエストルールの条件に一致するか否かを判定する。なお、ステップS1004のリクエストルールの適用処理の詳細処理は、図15を参照して後述する。
次に、プロキシサーバ101のCPU201は、ステップS1005において、ステップS1004のリクエストルール適用処理で設定されたリクエストデータの通信(中継)の動作設定が許可か禁止かを判定する。そして、禁止された動作設定であると判定した場合には(ステップS1005でNO)、プロキシサーバ101のCPU201は、リクエストを送信したクライアントPC104に対して、リクエストが禁止された旨を示す応答(通信不許可情報)を送信し(ステップS1012)、本フローチャートの処理を終了する。
一方、プロキシサーバ101のCPU201は、ステップS1004のリクエストルールの適用処理で設定されたリクエストデータの通信(中継)の動作設定が許可された動作設定であると判定された場合には(ステップS1005でYES)、ステップS1006に処理を進める。
ステップS1006では、プロキシサーバ101のCPU201は、クライアントPC104から送信されたリクエスト(リクエストのデータ)をウェブサーバ107に送信する。
このとき、プロキシサーバ101のCPU201は、リクエストを送信した通信回線を識別可能な識別子であるプロセスID2101を図21に示す通信管理テーブルに記憶する。
図21は、通信管理テーブル2100の一例である。
また、プロキシサーバ101のCPU201は、通信管理テーブル2100に記憶されたプロセスIDで特定される通信回線を用いて送信されたリクエストデータから取得したクライアントPCのユーザ名2104と、該リクエストデータから取得した当該クライアントPCのIPアドレス、該リクエストデータから取得したウェブサーバのURL2103とを、当該プロセスID2101と図21のように関連付けて記憶する。
次に、ステップS1007では、プロキシサーバ101のCPU201は、ウェブサーバ107からのレスポンスデータを受信するまで待機し、受信した場合(ステップS1007)には、ステップS1008以降の処理を実行する。
ステップS1008では、プロキシサーバ101のCPU201は、ステップS1007で受信したレスポンスの詳細情報(レスポンスデータに含まれるファイル、該ファイルのサイズ、該ファイルのファイル形式、該ファイルの拡張子、及びそれ以外のフィールドに含まれるテキスト情報、ウェブサーバ107のURL、クライアントPC104のユーザ名など)を取得する(レスポンス詳細情報取得処理)。
レスポンス詳細情報取得処理では、レスポンスデータの中から、レスポンスデータに含まれるファイル、該ファイルのサイズ、該ファイルのファイル形式、該ファイルの拡張子、及びそれ以外のフィールドに含まれるテキスト情報を取得する。
なお、レスポンスデータを送信するウェブサーバ107のURL、及び、リクエストデータを送信するクライアントPC104のユーザ名は、リクエストデータを中継した際に用いた通信回線を識別可能なプロセスIDと関連付けられて、図21の通信管理テーブル2100に記憶している。そのため、当該通信回線を介して受信したレスポンスデータは、当該通信回線のプロセスIDに関連付けられているURLのウェブサーバ107から送信され、当該プロセスIDに関連付けられているユーザ名のクライアントPC104に送信されるものであると特定することができる。すなわち、レスポンス詳細情報取得処理では、該通信管理テーブル2100を参照し、レスポンスデータを受信した通信回線のプロセスIDに関連付けられて記憶されたURL及びユーザ名を特定し、該URL及び該ユーザ名を通信管理テーブルから取得する。
レスポンス詳細情報処理の詳細処理については、図19を用いて説明する。
次に、プロキシサーバ101のCPU201は、ステップS1009では、ステップS1008で取得したレスポンスデータの詳細情報に対して、ルールDB102に登録されているレスポンスルールを適用する。なお、レスポンスルールの適用処理の詳細処理については、図20を用いて説明する。
次に、プロキシサーバ101のCPU201は、ステップS1010において、ステップS1009のレスポンスルール適用処理でクライアントPC104への通信(レスポンスデータの中継)が許可されたか禁止されたかを判定する。
そして、プロキシサーバ101のCPU201は、通信(中継)が禁止されたと判定した場合には(ステップS1010でNO)、リクエストを送信したクライアントPC104に対するレスポンスデータの中継を禁止する旨の応答を送信し(ステップS1012)、本フローチャートの処理を終了し、処理をステップS405に移行する。
一方、プロキシサーバ101のCPU201は、ステップS1009のレスポンスルールの適用処理で、レスポンスデータの通信(中継)が許可されたと判定された場合には(ステップS1010でYES)、ステップS1011に処理を進める。
次に、プロキシサーバ101のCPU201は、ステップS1011において、リクエストを送信したクライアントPC104に対して、ウェブサーバ107から受信したレスポンスデータを送信(中継)し、本フローチャートの処理を終了し、処理をステップS405に移行する。
以下に、図15を参照して、図10のステップS1004に示したリクエストルール適用処理の詳細処理に説明する。
図15は、図10のステップS1004に示したリクエストルール適用処理の詳細処理を示すフローチャートである。即ち、本処理は、プロキシサーバ101のCPU201によって行われる。
まず、プロキシサーバ101のCPU201は、図15のステップS1501において、未適用のリクエストルールがあるか否かを判断する。プロキシサーバ101のCPU201は、未適用のリクエストルールがある場合には(ステップS1501でYES)、リクエストルールテーブル9100に登録されているリクエストルールを適用順に1件ずつ取得する(ステップS1502)。
プロキシサーバ101のCPU201は、ステップS1503では、1502で取得したリクエストルールの各条件がリクエストデータにマッチ(合致)するか否かを判断する。ここで、図16を参照して、リクエストルールがリクエストデータにマッチするか否かを判定する処理の詳細処理について説明する。
図16は、図15のステップS1503に示したリクエストルールがリクエストデータにマッチするか否かを判定する処理の詳細処理を示すフローチャートである。即ち、本処理は、プロキシサーバ101のCPU201によって行われる。
プロキシサーバ101のCPU201は、図16のステップS1601において、リクエストルールテーブル9100から取得した当該リクエストルールのURL9104にURLが設定されているか否かを判定する。プロキシサーバ101のCPU201は、URLが設定されていないと判定された場合は(ステップS1601でNO)、ステップS1603に処理を進める。一方、URLが設定されていると判定された場合は(ステップS1601でYES)、ステップS1602に処理を進める。
プロキシサーバ101のCPU201は、ステップS1602では、当該リクエストルールのURL9104に設定されているURLが、ステップS1003でリクエストデータから取得したURLにマッチするか否かを判定する。プロキシサーバ101のCPU201は、マッチしないと判定された場合は(ステップS1602でNO)、ステップS1003で取得したリクエストデータが、ステップS1503で取得したリクエストルールの条件に該当しない(一致しない)と決定する(ステップS1616)。一方、プロキシサーバ101のCPU201は、マッチすると判断した場合は(ステップS1602でYES)、ステップS1603に処理を進める。
プロキシサーバ101のCPU201は、ステップS1603では、ステップS1502でリクエストルールテーブル9100から取得した当該リクエストルールのカテゴリ9105にカテゴリが設定されているか否かを判定する。プロキシサーバ101のCPU201は、カテゴリが設定されていない場合は(ステップS1603でNO)、ステップS1605に処理を進める。一方、カテゴリが設定されている場合は(ステップS1603でYES)、ステップS1604に処理を進める。
プロキシサーバ101のCPU201は、ステップS1604では、ステップS1502で取得したリクエストルールに設定されているカテゴリが、ステップS1002でのURLカテゴリ判定処理で判定されたカテゴリと同一か(マッチするか)否かを判定する。マッチしないと判定された場合は(ステップS1604でNO)、処理をステップS1616に移行する。また、ステップS1002のURLカテゴリ判定処理でカテゴリなしと判定された場合も当該リクエストルールがリクエストデータにマッチしないと判断して処理をステップS1616に移行する。一方、マッチすると判定された場合は(ステップS1604でYES)、ステップS1605に処理を進める。
プロキシサーバ101のCPU201は、ステップS1605では、ステップS1502で取得したリクエストルールのファイル形式9106にファイル形式が設定されているか否かを判断する。そして、ファイル形式が設定されていないと判定された場合は(ステップS1605でNO)、ステップS1607に処理を進める。一方、ファイル形式が設定されていると判定された場合は(ステップS1605でYES)、ステップS1606に処理を進める。
プロキシサーバ101のCPU201は、ステップS1606では、ファイル形式9106に設定されているファイル形式が、ステップS1303で判定されたファイルのファイル形式にマッチするか否かを判定する。マッチしないと判定された場合は(ステップS1606でNO)、処理をステップS1616に移行する。
また、プロキシサーバ101のCPU201は、リクエストデータにファイルが含まれていない場合も、当該リクエストルールがリクエストデータにマッチしないと判断して処理をステップS1616に移行する。一方、マッチすると判断した場合は(ステップS1606でYES)、CPU201は、ステップS1607に処理を進める。
プロキシサーバ101のCPU201は、ステップS1607では、ステップS1502で取得したリクエストルールのサイズ9107及びサイズ条件9108が設定されているか否かを判断する。サイズ及びサイズ条件が設定されていないと判定された場合は(ステップS1607でNO)、ステップS1609に処理を進める。一方、サイズ及びサイズ条件が設定されている場合は(ステップS1607でYES)、ステップS1608に処理を進める。
プロキシサーバ101のCPU201は、ステップS1608では、ステップS1302で取得したファイルのサイズが、ステップS1502で取得したリクエストルールのサイズ9107及びサイズ条件9108を満たすか(マッチするか)否かを判定する。マッチしないと判断した場合は(ステップS1608でNO)、処理をステップS1616に移行する。また、リクエストデータにファイルが含まれていない場合も、当該リクエストルールがリクエストデータにマッチしないと判断して処理をステップS1616に移行する。一方、マッチすると判断した場合は(ステップS1608でYES)、CPU201は、ステップS1609に処理を進める。
ステップS1609では、ステップS1509で取得したリクエストルールのファイル形式と拡張子9109にファイル形式と拡張子の一致条件が設定されているか否かを判断する。ファイル形式と拡張子の一致条件が設定されていないと判定された場合は(ステップS1609でNO)、ステップS1611に処理を進める。一方、ファイル形式と拡張子の一致条件が設定されていると判定された場合は(ステップS1609でYES)、ステップS1610に処理を進める。
プロキシサーバ101のCPU201は、ステップS1610では、図13のステップS1305での判定結果(ファイル形式と拡張子が一致するか否かの判定結果)と、ステップS1502で取得したリクエストルールの「ファイル形式と拡張子」9109に設定された一致する/一致しないという条件が、一致するか(マッチするか)否かを判定する。マッチしないと判定された場合は(ステップS1610でNO)、処理をステップS1616に移行する。また、リクエストデータにファイルが含まれていない場合も、当該リクエストルールがリクエストデータにマッチしないと判断して処理をステップS1616に移行する。一方、マッチすると判断した場合は(ステップS1610でYES)、CPU201は、ステップS1611に処理を進める。
プロキシサーバ101のCPU201は、ステップS1611では、ステップS1502で取得したリクエストルールのキーワード9110にキーワードが設定されているか否かを判断する。キーワードが設定されていないと判定された場合は(ステップS1611でNO)、ステップS1613に処理を進める。一方、キーワードが設定されている場合は(ステップS1611でYES)、ステップS1612に処理を進める。
プロキシサーバ101のCPU201は、ステップS1612では、ステップS1307及びステップS1308で取得したテキスト情報が、ステップS1502で取得したリクエストルールのキーワード9110に設定されているキーワードの条件を満たすか(マッチするか)否かを判定する。すなわち、ステップS1612では、ステップS1502で取得したリクエストルールのキーワード9110に設定されているキーワードが、ステップS1307及びステップS1308で取得したテキスト情報の中に含まれているかを判定する。マッチしないと判断した場合は(ステップS1612でNO)、処理をステップS1616に移行する。また、リクエストデータにテキスト情報が含まれない場合も、マッチしないと判断して処理をステップS1616に移行する。一方、マッチすると判断した場合は(ステップS1612でYES)、CPU201は、ステップS1613に処理を進める。
ステップS1613において、プロキシサーバ101のCPU201は、ステップS1502で取得したリクエストルールのユーザ/グループ9103にユーザ名又はグループ名が設定されているか否かを判定する。そして、ステップS1502で取得したリクエストルールのユーザ/グループ9103にユーザ名又はグループ名が設定されていると判定された場合は(ステップS1613でYES)、処理をステップS1614に移行する。一方、ユーザ/グループ9103にユーザ名又はグループ名が設定されていないと判定された場合は(ステップS1613でNO)、処理をステップS1615に移行する。
ステップS1614において、プロキシサーバ101のCPU201は、ステップS1308でリクエストデータから取得したユーザ名又はグループ名と、ステップS1502で取得したリクエストルールのユーザ名又はグループ名とが一致するか否かを判定する。そして、一致すると判定された場合は(ステップS1614でYES)、処理をステップS1615に移行する。
ステップS1615では、プロキシサーバ101のCPU201は、ステップS1502で取得したリクエストルールが、ステップS1003で取得したリクエストデータの詳細情報にマッチすると判定して(ステップS1503でYES)、処理をステップS1504に移行する。すなわち、ステップS1615では、ステップS1003で取得したリクエストデータの詳細情報が、ステップS1503で取得したリクエストルールの条件を満たす(一致する)と決定する。
ステップS1616では、ステップS1003で取得したリクエストデータの詳細情報が、ステップS1503で取得したリクエストルールの条件を満たさない(一致しない)と判定し(ステップS1503でNO)、処理をステップS1501に移行する。
以下、図15のフローチャートの説明に戻る。
プロキシサーバ101のCPU201は、ステップS1503において、リクエストデータの詳細情報が、ステップS1502で取得したリクエストルールにマッチすると判断した場合は(ステップS1503でYES)、当該リクエストルールの動作9111に設定されている動作を行う設定(動作設定が許可か禁止かの設定)を行い(ステップS1504)、処理をステップS1005に移行する。
一方、ステップS1503において、リクエストデータの詳細情報が当該リクエストルールにマッチしないと判断した場合は(ステップS1503でNO)、CPU201はステップS1501に処理を戻す。
そしてステップS1501で、未適用のリクエストルールがない(全てのリクエストルールを適用した)と判断した場合には(ステップS1501でNO)、CPU201は、デフォルト動作として予め設定されている(全てのリクエストルールに適合しなかった場合の)動作(中継の許可/禁止)を行う設定(動作設定が許可か禁止かの設定)を行い(ステップS1505)、処理をステップS1005に移行する。
以上が、図10のステップS1004のリクエストルール適用処理の詳細な説明である。
次に、図19を参照して、ステップS1008の詳細処理を説明する。
図19は、図10に示すステップS1008の詳細処理を示すフローチャートである。
即ち、本処理は、プロキシサーバ101のCPU201によって行われる。
プロキシサーバ101のCPU201は、ステップS1006で受信したレスポンスデータにファイルが含まれているか否かを判定する(ステップS1901)。そして、レスポンスデータにファイルが含まれていないと判定された場合は(ステップS1901でNO)、処理をステップS1908に移行する。
一方、ステップS1901で、レスポンスデータにファイルが含まれていると判定された場合は(ステップS1901でYES)、当該ファイルのファイルサイズを取得する(ステップS1902)。ここで、ファイルサイズは、レスポンスデータに含まれているファイルを解析して、当該ファイルのファイルサイズを計算することにより取得される。
次に、プロキシサーバ101のCPU201は、レスポンスデータに含まれるファイルのファイル形式を判定する。ここで、ファイル形式は、ファイルの拡張子ではなく、ファイルに含まれるマジックナンバーを用いて判定される。
ファイルには、通常マジックナンバーと呼ばれるファイル形式ごとに特徴的な情報がファイルの先頭や末尾などに格納されている。
例えば、ファイル形式がPDFの場合は、ファイルの先頭5バイトが%PDF−となる。レスポンスヘッダーに記載されたContent−Typeによらず、マジックナンバーでファイル形式を判定することでファイルに間違った拡張子が付与されている場合や、意図的に変更されている場合でも、本来のファイル形式を判定することが可能となる。尚、レスポンスデータに含まれるファイルが圧縮されている場合は、そのファイルを解凍した上でファイル形式を判定する。
マジックナンバーによるファイル形式の判定では、あらかじめファイル形式ごとのマジックナンバーを知っておく必要がある。ここでは、リクエストデータに含まれるファイルのファイル形式を判定するステップS1303と同様に、マジックナンバーによるファイル形式の判定で使用するファイル形式とマジックナンバーの対応表(図14)を用いて判定する。すなわち、ファイル内のマジックナンバーを取得し、当該取得したマジックナンバーに対応するファイル形式を、図14のファイル形式とマジックナンバーの対応表から特定することができる。
次に、プロキシサーバ101のCPU201は、レスポンスデータに含まれるファイルのファイル名から、当該ファイル名に含まれている拡張子を取得する(ステップS1904)。
次に、プロキシサーバ101のCPU201は、ステップS1903で判定したファイル形式と、ステップS1904で取得した拡張子が一致しているか否かを判定する(ステップS1905)。ここで、ファイル形式と拡張子が一致しているか否かを判定する処理について説明する。
ファイル形式には、通常付与される拡張子がある。例えば、ファイル形式がPDF(ポータブル・ドキュメント・フォーマット)であるファイルには、通常pdfが拡張子として付与される。また、ファイル形式がRTF(リッチテキストフォーマット)であるファイルには、通常rtfが拡張子として付与される。ファイル形式と付与されている拡張子が一致しているか否かの判定では、図17に示すようなファイル形式ごとに付与されるべき拡張子の対応表1700を使用する。
図17に示すファイル形式と拡張子の対応表1700には、ファイル形式をファイル形式1701に、当該ファイル形式の拡張子を拡張子1702に記憶されている。
ファイル形式と拡張子が一致しているか否かを判定する場合は、ステップS1903で判定されたファイル形式をファイル形式1701から検索し、検索されたファイル形式に対応する(同一レコードの)拡張子を全て拡張子1702の列から取得する。
そして、ステップS1904で取得した、ファイル名に付与されている拡張子が、当該取得した拡張子の中にある場合は、ファイル形式と拡張子が一致すると判断し、ない場合は一致しないと判断する。
ステップS1905で、ファイル形式と拡張子が一致すると判定された場合には、拡張子の偽装はないことを示し、ファイル形式と拡張子が一致しないと判定された場合には、拡張子の偽装があることを示している。
以下、図19のフローチャートの説明に戻る。
次に、プロキシサーバ101のCPU201は、ステップS1903で判定されたファイルのファイル形式が、テキスト情報を含むファイルのファイル形式であるか否かを判定する(ステップS1906)。
ステップS1906では、ステップS1903で判定されたファイルのファイル形式が、テキスト情報抽出情報1800(図18)のファイル形式1801に記憶されているか否かを判定することにより、テキスト情報を含むファイルのファイル形式であるか否かを判定する。
すなわち、ステップS1903で判定されたファイルのファイル形式が、テキスト情報抽出情報1800(図18)のファイル形式1801に記憶されている場合は、テキスト情報を含むファイルのファイル形式であると判定する。一方、テキスト情報抽出情報1800(図18)のファイル形式1801に記憶されていない場合は、テキスト情報を含むファイルのファイル形式であると判定する。
プロキシサーバ101のCPU201は、ステップS1906において、テキスト情報を含むファイルのファイル形式であると判定された場合は(YES)、テキスト情報抽出情報1800に、該ファイル形式に関連付けて記憶されているテキスト抽出プログラムを実行し、ステップS1006で受信したレスポンスデータに含まれるファイルのテキスト情報を抽出し取得する(ステップS1907)。
以上のようにして、ファイルがテキスト情報を含む形式である場合は、ステップS1903で取得したファイルのファイル形式に適した方法でテキスト情報を取得することができる。例えば、表計算のアプリケーションのファイル形式であれば、その形式に適したプログラムでテキスト情報を取得することができる。
プロキシサーバ101のCPU201は、ステップS1906において、テキスト情報を含まないファイルのファイル形式であると判定された場合(NO)、すなわち、テキスト情報を含まない画像等のファイル形式であると判定された場合は、処理をステップS1908に移行する。
次に、プロキシサーバ101のCPU201は、ステップS1908では、レスポンスデータに含まれるファイル以外のフィールドのデータからテキスト情報を取得する。
さらに、ここで、プロキシサーバ101のCPU201は、通信管理テーブル(図21)の中から、レスポンスデータが送信されたウェブサーバ107のURL、及びレスポンスデータの送信先であるクライアントPC104のユーザ名を取得する。
ここでは、リクエストの送信、及びレスポンスデータの受信で用いられる通信回線を特定可能なプロセスIDに関連付けて通信管理テーブル2100に記憶されている、ウェブサーバのURL2103、及びユーザ名2104を取得する。
ステップS1901からステップS1908の処理で取得したレスポンスデータの詳細情報(ファイル、ファイルサイズ、ファイル形式、ファイルの拡張子、ファイル内のテキスト情報、ファイル以外のフィールドのテキスト情報、URL、ユーザ名など)は、レスポンスルール(条件)とマッチ(合致)するかを判定する処理(ステップS1009)で使用する。
次に、図20を参照して、ステップS109の詳細処理を説明する。
図20は、図10に示すステップS1009の詳細処理を示すフローチャートである。即ち、本処理は、プロキシサーバ101のCPU201によって行われる。
まず、プロキシサーバ101のCPU201は、図20のステップS2001において、未適用のレスポンスルールがあるか否かを判断する。プロキシサーバ101のCPU201は、未適用のレスポンスルールがある場合には(ステップS2001でYES)、レスポンスルールテーブル9200に登録されているレスポンスルールを適用順に1件ずつ取得する(ステップS2002)。
プロキシサーバ101のCPU201は、ステップS2003では、1502で取得したレスポンスルールの各条件がレスポンスデータにマッチ(合致)するか否かを判断する。
図16は、ステップS1503の詳細処理として上述して説明してきたが、ここからは、図16をステップS2003の詳細処理として説明する。
ここで、図16を参照して、レスポンスルールがレスポンスデータにマッチするか否かを判定する処理の詳細処理について説明する。
図16は、図20のステップS2003に示したレスポンスルールがレスポンスデータにマッチするか否かを判定する処理の詳細処理を示すフローチャートである。即ち、本処理は、プロキシサーバ101のCPU201によって行われる。
プロキシサーバ101のCPU201は、図16のステップS1601において、レスポンスルールテーブル9200から取得した当該レスポンスルールのURL9204にURLが設定されているか否かを判定する。プロキシサーバ101のCPU201は、URLが設定されていないと判定された場合は(ステップS1601でNO)、ステップS1603に処理を進める。一方、URLが設定されていると判定された場合は(ステップS1601でYES)、ステップS1602に処理を進める。
プロキシサーバ101のCPU201は、ステップS1602では、当該レスポンスルールのURL9204に設定されているURLが、ステップS1908で取得したURLにマッチするか否かを判定する。プロキシサーバ101のCPU201は、マッチしないと判定された場合は(ステップS1602でNO)、ステップS1008で取得したレスポンスデータが、ステップS2003で取得したレスポンスルールの条件に該当しない(一致しない)と決定する(ステップS1616)。一方、プロキシサーバ101のCPU201は、マッチすると判断した場合は(ステップS1602でYES)、ステップS1603に処理を進める。
プロキシサーバ101のCPU201は、ステップS1603では、ステップS2002でレスポンスルールテーブル9200から取得した当該レスポンスルールのカテゴリ9205にカテゴリが設定されているか否かを判定する。プロキシサーバ101のCPU201は、カテゴリが設定されていない場合は(ステップS1603でNO)、ステップS1605に処理を進める。一方、カテゴリが設定されている場合は(ステップS1603でYES)、ステップS1604に処理を進める。
プロキシサーバ101のCPU201は、ステップS1604では、ステップS2002で取得したレスポンスルールに設定されているカテゴリが、ステップS1002でのURLカテゴリ判定処理で判定されたカテゴリと同一か(マッチするか)否かを判定する。
すなわち、ここでは、ステップS1908で取得したURLのカテゴリがステップS1002で判定されており、その判定結果であるカテゴリと、ステップS2002で取得したレスポンスルールに設定されているカテゴリとが同一か否かを判定する。そして、同一ではない(マッチしない)と判定された場合は(ステップS1604でNO)、処理をステップS1616に移行する。また、ステップS1002のURLカテゴリ判定処理でカテゴリなしと判定された場合も当該レスポンスルールがレスポンスデータにマッチしないと判断して処理をステップS1616に移行する。一方、マッチすると判定された場合は(ステップS1604でYES)、ステップS1605に処理を進める。
プロキシサーバ101のCPU201は、ステップS1605では、ステップS2002で取得したレスポンスルールのファイル形式9206にファイル形式が設定されているか否かを判断する。そして、ファイル形式が設定されていないと判定された場合は(ステップS1605でNO)、ステップS1607に処理を進める。一方、ファイル形式が設定されていると判定された場合は(ステップS1605でYES)、ステップS1606に処理を進める。
プロキシサーバ101のCPU201は、ステップS1606では、ファイル形式9206に設定されているファイル形式が、ステップS1903で判定されたファイルのファイル形式にマッチするか否かを判定する。マッチしないと判定された場合は(ステップS1606でNO)、処理をステップS1616に移行する。
また、プロキシサーバ101のCPU201は、レスポンスデータにファイルが含まれていない場合も、当該レスポンスルールがレスポンスデータにマッチしないと判断して処理をステップS1616に移行する。一方、マッチすると判断した場合は(ステップS1606でYES)、CPU201は、ステップS1607に処理を進める。
プロキシサーバ101のCPU201は、ステップS1607では、ステップS2002で取得したレスポンスルールのサイズ9207及びサイズ条件9208が設定されているか否かを判断する。サイズ及びサイズ条件が設定されていないと判定された場合は(ステップS1607でNO)、ステップS1609に処理を進める。一方、サイズ及びサイズ条件が設定されている場合は(ステップS1607でYES)、ステップS1608に処理を進める。
プロキシサーバ101のCPU201は、ステップS1608では、ステップS1902で取得したファイルのサイズが、ステップS2002で取得したレスポンスルールのサイズ9207及びサイズ条件9208を満たすか(マッチするか)否かを判定する。マッチしないと判断した場合は(ステップS1608でNO)、処理をステップS1616に移行する。また、レスポンスデータにファイルが含まれていない場合も、当該レスポンスルールがレスポンスデータにマッチしないと判断して処理をステップS1616に移行する。一方、マッチすると判断した場合は(ステップS1608でYES)、CPU201は、ステップS1609に処理を進める。
ステップS1609では、ステップS2002で取得したレスポンスルールのファイル形式と拡張子9209にファイル形式と拡張子の一致条件が設定されているか否かを判断する。ファイル形式と拡張子の一致条件が設定されていないと判定された場合は(ステップS1609でNO)、ステップS1611に処理を進める。一方、ファイル形式と拡張子の一致条件が設定されていると判定された場合は(ステップS1609でYES)、ステップS1610に処理を進める。
プロキシサーバ101のCPU201は、ステップS1610では、図13のステップS1905での判定結果(ファイル形式と拡張子が一致するか否かの判定結果[一致する/一致しない])と、ステップS2002で取得したレスポンスルールの「ファイル形式と拡張子」9209に設定された一致する/一致しないという条件が、一致するか(マッチするか)否かを判定する。マッチしないと判定された場合は(ステップS1610でNO)、処理をステップS1616に移行する。また、レスポンスデータにファイルが含まれていない場合も、当該レスポンスルールがレスポンスデータにマッチしないと判断して処理をステップS1616に移行する。一方、マッチすると判断した場合は(ステップS1610でYES)、CPU201は、ステップS1611に処理を進める。
プロキシサーバ101のCPU201は、ステップS1611では、ステップS2002で取得したレスポンスルールのキーワード9210にキーワードが設定されているか否かを判断する。キーワードが設定されていないと判定された場合は(ステップS1611でNO)、ステップS1613に処理を進める。一方、キーワードが設定されている場合は(ステップS1611でYES)、ステップS1612に処理を進める。
プロキシサーバ101のCPU201は、ステップS1612では、ステップS1907及びステップS1808で取得したテキスト情報が、ステップS2002で取得したレスポンスルールのキーワード9210に設定されているキーワードの条件を満たすか(マッチするか)否かを判定する。すなわち、ステップS1612では、ステップS2002で取得したレスポンスルールのキーワード9210に設定されているキーワードが、ステップS1907及びステップS1908で取得したテキスト情報の中に含まれているかを判定する。マッチしないと判断した場合は(ステップS1612でNO)、処理をステップS1616に移行する。また、レスポンスデータにテキスト情報が含まれない場合も、マッチしないと判断して処理をステップS1616に移行する。一方、マッチすると判断した場合は(ステップS1612でYES)、CPU201は、ステップS1613に処理を進める。
ステップS1613において、プロキシサーバ101のCPU201は、ステップS2002で取得したレスポンスルールのユーザ/グループ9203にユーザ名又はグループ名が設定されているか否かを判定する。そして、ステップS2002で取得したレスポンスルールのユーザ/グループ9203にユーザ名又はグループ名が設定されていると判定された場合は(ステップS1613でYES)、処理をステップS1614に移行する。一方、ユーザ/グループ9203にユーザ名又はグループ名が設定されていないと判定された場合は(ステップS1613でNO)、処理をステップS1615に移行する。
ステップS1614において、プロキシサーバ101のCPU201は、ステップS1908で通信管理テーブル(図21)から取得したユーザ名又はグループ名と、ステップS2002で取得したレスポンスルールのユーザ名又はグループ名とが一致するか否かを判定する。そして、一致すると判定された場合は(ステップS1614でYES)、処理をステップS1615に移行する。
ステップS1615では、プロキシサーバ101のCPU201は、ステップS2002で取得したレスポンスルールが、ステップS1008で取得したレスポンスデータの詳細情報にマッチすると判定して(ステップS2003でYES)、処理をステップS2004に移行する。すなわち、ステップS1615では、ステップS1008で取得したレスポンスデータの詳細情報が、ステップS2003で取得したレスポンスルールの条件を満たす(一致する)と決定する。
ステップS1616では、ステップS1008で取得したレスポンスデータの詳細情報が、ステップS2003で取得したレスポンスルールの条件を満たさない(一致しない)と判定し(ステップS2003でNO)、処理をステップS2001に移行する。
以下、図20のフローチャートの説明に戻る。
プロキシサーバ101のCPU201は、ステップS2003において、レスポンスデータの詳細情報が、ステップS2002で取得したレスポンスルールにマッチすると判断した場合は(ステップS2003でYES)、当該レスポンスルールの動作9211に設定されている動作を行う設定(動作設定が許可か禁止かの設定)を行い(ステップS2004)、処理をステップS1010に移行する。
一方、ステップS2003において、レスポンスデータの詳細情報が当該レスポンスルールにマッチしないと判断した場合は(ステップS2003でNO)、CPU201はステップS2001に処理を戻す。
そしてステップS2001で、未適用のレスポンスルールがない(全てのレスポンスルールを適用した)と判断した場合には(ステップS2001でNO)、CPU201は、デフォルト動作として予め設定されている(全てのレスポンスルールに適合しなかった場合の)動作(中継の許可/禁止)を行う設定(動作設定が許可か禁止かの設定)を行い(ステップS2005)、処理をステップS1010に移行する。
以上が、図10のステップS1009のレスポンスルール適用処理の詳細な説明である。
図10の説明に戻る。
次に、プロキシサーバ101のCPU201は、ステップS1010において、ステップS1009のレスポンスルール適用処理で設定されたレスポンスデータの通信(中継)の動作設定が許可か禁止かを判定する。そして、禁止された動作設定であると判定した場合には(ステップS1010でNO)、プロキシサーバ101のCPU201は、リクエストを送信したクライアントPC104に対して、レスポンスデータの中継が禁止された旨を示す応答(通信不許可情報)を送信し(ステップS1012)、本フローチャートの処理を終了する。
一方、プロキシサーバ101のCPU201は、ステップS1009のレスポンスルールの適用処理で設定されたレスポンスデータの通信(中継)の動作設定が許可された動作設定であると判定された場合には(ステップS1010でYES)、ステップS1011に処理を進める。
ステップS1011では、プロキシサーバ101のCPU201は、リクエストを送信したクライアントPC104に、当該リクエストの応答である、ウェブサーバ107から送信されたレスポンスデータを送信する。このとき、リクエストデータを送信する際に用いた通信回線を用いて、レスポンスデータを送信する。すなわち、当該通信回線を特定可能なプロセスID2101に関連付けて記憶されたクライアントPCのIPアドレスで特定されるクライアントPCにレスポンスデータを送信する。
以上のように、本発明によれば、ファイルのマジックナンバーからリクエストデータやレスポンスデータに含まれるファイルの形式を判定することで、ファイルに間違った拡張子が付与されている場合や、意図的に変更されている場合でも本来のファイル形式を判定し、その判定結果に基づきリクエストデータやレスポンスデータに含まれるファイルを検査し、あらかじめ設定されている制御ルールの各条件とマッチするか否かを判断することで、HTTPによるファイルの送受信を的確に制御(許可/禁止)することができる。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、リクエストルール詳細画面700や不図示のレスポンスルール詳細画面においてクライアントPC104のIPアドレスを設定できるようにしても良い。この場合は特定のIPアドレスを持つクライアントPC104が行う通信にのみリクエストルールやレスポンスルールを適用するといった制御が可能となる。
もしくは、リクエストルール詳細設定画面700や不図示のレスポンスルール詳細画面においてユーザおよびユーザグループを設定できるようにしても良い。この場合は、特定のユーザおよびユーザグループが行う通信にのみリクエストルールやレスポンスルールを適用するといった制御が可能になる。
また、HTTPSといった暗号化通信の場合は、リクエストやレスポンスの詳細情報を取得してリクエストルールやレスポンスルールを適用することができないが、その場合は暗号化通信であれば、通信を禁止するように設定可能にしても良い。もちろん、何らかの手段により、暗号化通信の詳細情報を取得できる場合は、リクエストルールやレスポンスルールを適用して通信の制御(許可/禁止)を行っても構わない。
以上説明したように、本実施の形態によれば、データの送受信先やファイル形式に応じて通信データに含まれるファイルの送受信制御を的確に行うことができる。
以上、本発明の一実施形態を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROM等を用いることができる。
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(基本システム或いはオペレーティングシステム)などが実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。