(57)【特許請求の範囲】
【請求項１】
１以上の参照ＵＲＬ（Uniform  Resource  Locator）の階層構造の上位層の文字列から順に段階的に連結した部分文字列を、連想配列のキーとして格納した部分文字列情報を記憶するＵＲＬ部分文字列格納部と、
マッチ対象ＵＲＬの階層構造の上位層の文字列から順に段階的に連結した部分文字列を生成する部分文字列生成部と、
前記生成されたマッチ対象ＵＲＬの部分文字列ごとに、当該部分文字列をキーとして前記部分文字列情報を検索する検索部とを備えることを特徴とするＵＲＬマッチング装置。
【請求項２】
前記部分文字列情報は、前記部分文字列と、当該部分文字列が前記参照ＵＲＬとどの程度一致するかを示した属性情報とを対応付けて示した情報であり、
前記検索部は、前記マッチ対象ＵＲＬの部分文字列をキーとして前記部分文字列情報を検索し、当該部分文字列の属性情報を出力することを特徴とする請求項１に記載のＵＲＬマッチング装置。
【請求項３】
前記属性情報は、前記部分文字列が前記参照ＵＲＬのドメイン部およびパス部それぞれの全部と一致するか一部と一致するかを示す情報であることを特徴とする請求項２に記載のＵＲＬマッチング装置。
【請求項４】
前記検索部は、前記検索された各部分文字列の属性情報を参照して、前記参照ＵＲＬと一致する度合いが高い部分文字列から優先的に出力することを特徴とする請求項２または請求項３に記載のＵＲＬマッチング装置。
【請求項５】
前記部分文字列情報における部分文字列は、前記参照ＵＲＬのトップレベルドメインの文字列から順に段階的に連結した文字列であり、前記参照ＵＲＬ間でそれぞれのＵＲＬのドメイン部で先頭部分が共通する文字列をトライ木またはパトリシア木の共通接頭辞として抽出した文字列であることを特徴とする請求項１ないし請求項４のいずれか１項に記載のＵＲＬマッチング装置。
【請求項６】
マッチ対象ＵＲＬの階層構造の上位層の文字列から順に段階的に連結した部分文字列を生成するステップと、
前記生成されたマッチ対象ＵＲＬの部分文字列ごとに、当該部分文字列をキーとして１以上の参照ＵＲＬの部分文字列情報を検索するステップとをコンピュータが実行し、
前記部分文字列情報は、前記１以上の参照ＵＲＬの階層構造の上位層の文字列から順に段階的に連結した部分文字列を連想配列のキーとして格納した情報である
ことを特徴とするＵＲＬマッチング方法。
【請求項７】
マッチ対象ＵＲＬの階層構造の上位層の文字列から順に段階的に連結した部分文字列を生成するステップと、
前記生成されたマッチ対象ＵＲＬの部分文字列ごとに、当該部分文字列をキーとして１以上の参照ＵＲＬの部分文字列情報を検索するステップとをコンピュータに実行させ、
前記部分文字列情報は、前記１以上の参照ＵＲＬの階層構造の上位層の文字列から順に段階的に連結した部分文字列を連想配列のキーとして格納した情報である
ことを特徴とするＵＲＬマッチングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＲＬ（Uniform  Resource  Locator）マッチング装置、ＵＲＬマッチング方法、および、ＵＲＬマッチングプログラムに関する。
【背景技術】
【０００２】
悪質なＷｅｂサイトや悪質なＷｅｂコンテンツからＷＷＷ(World  Wide  Web)を利用するユーザを保護するために、フィルタリングが実施されている。フィルタリングは、悪質なＷｅｂサイトや悪質なＷｅｂコンテンツのＵＲＬ（悪性ＵＲＬ）を示したブラックリストを利用し、このリストに含まれるＵＲＬやＦＱＤＮ（Fully  Qualified  Domain  Name、サーバのホスト名）へのアクセスを防止するものである。このフィルタリングに用いられるブラックリストは、アンチウィルスベンダ等の組織によって、独自の観点で作成されている（非特許文献１参照）。【０００３】
一方、攻撃者は、自らのＵＲＬがフィルタリングの対象になるのを回避するために、ＵＲＬの文字列を部分的に変化させることがある。例えば、http://www.example.com/index1.htmlをhttp://www.example.com/index2.htmlに変化させることがある。そこで、このようにＵＲＬの文字列を部分的に変化させた場合でもフィルタリングの対象とするため、同一ＦＱＤＮ上に存在するＷｅｂコンテンツを悪性ＵＲＬに類似するＵＲＬと見なし、フィルタリングの対象とする技術も提案されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】“Google  Safe  Browsing”、[online]、[平成25年11月5日検索]、インターネット<https://developers.google.com/safe-browsing/>
【非特許文献２】Zhou  Zhou  他、“A  High-Performance  URL  Lookup  Engine  for  URL  Filtering  Systems”,IEEE  ICC、2010年
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、前記した技術において、悪性ＵＲＬに類似するＵＲＬをフィルタリングの対象とすると誤検知が発生するおそれがある。また、類似するＵＲＬをフィルタリングの対象とすると、多数のＵＲＬとのマッチングを行う必要があるため、マッチング処理に時間がかかってしまうという問題もある。特に、通常、ブラックリストを用いたフィルタリングは、ネットワークのゲートウェイやＷｅｂプロキシにおいて行われ、多数の通信先ＵＲＬを対象にマッチングを行う必要があるため、マッチングの高速化は重要な問題である。そこで本発明は、前記した問題を解決し、ＵＲＬが部分的に変化したとしても高速にマッチングを行う手段を提供することを課題とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本発明は、１以上の参照ＵＲＬ（Uniform  Resource  Locator）の階層構造の上位層の文字列から順に段階的に連結した部分文字列を連想配列のキーとして格納した部分文字列情報を記憶するＵＲＬ部分文字列格納部と、マッチ対象ＵＲＬの階層構造の上位層の文字列から順に段階的に連結した部分文字列を生成する部分文字列生成部と、前記生成されたマッチ対象ＵＲＬの部分文字列ごとに、当該部分文字列をキーとして前記部分文字列情報を検索する検索部とを備えることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、ＵＲＬが部分的に変化したとしても高速にマッチングを行うことができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、各実施形態のＵＲＬマッチング装置を含むシステムの構成の一例を示す図である。
【図２】図２は、図１のＵＲＬマッチング装置の処理の概要を示す図である。
【図３】図３は、図１のＵＲＬマッチング装置により生成される部分文字列の一例を示す図である。
【図４】図４は、部分文字列情報の一例を示す図である。
【図５】図５は、図１のＵＲＬマッチング装置の構成を示す機能ブロック図である。
【図６】図６は、図１のＵＲＬマッチング装置により生成される部分文字列の一例を示す図である。
【図７】図７は、図１のＵＲＬマッチング装置が保持する部分文字列情報の一例を示す図である。
【図８】図８は、部分文字列情報のキーとなる部分文字列の実装の一例を示す図である。
【図９】図９は、図１のＵＲＬマッチング装置の処理手順を示すフローチャートである。
【図１０】図１０は、ＵＲＬのドメイン部の各要素の並べ替えの一例を示す図である。
【図１１】図１１は、部分文字列の共通接頭辞を説明するための図である。
【図１２】図１２は、ＵＲＬマッチングプログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら、本発明の実施形態を第１の実施形態から第３の実施形態に分けて説明する。なお、これらの実施形態により本発明が限定されるものではない。
【００１０】
（第１の実施形態）
まず、図１を用いて、各実施形態のＵＲＬマッチング装置１０を含むシステムの構成例を説明する。図１は、各実施形態のＵＲＬマッチング装置を含むシステムの構成の一例を示す図である。なお、以下の例では、参照ＵＲＬは、悪質なＷｅｂサイトや悪質なＷｅｂコンテンツのＵＲＬ（悪性ＵＲＬ）のリスト（例えば、ＵＲＬブラックリスト）である場合を例に説明するが、これに限定されない。
【００１１】
システムは、ＵＲＬマッチング装置１０、ユーザ端末２０、Ｗｅｂプロキシ３０を含んで構成される。ユーザ端末２０は、Ｗｅｂプロキシ３０経由でネットワークへアクセスする。Ｗｅｂプロキシ３０は、ユーザ端末２０がネットワークへアクセスするときの中継装置であり、ユーザ端末２０のアクセス先ＵＲＬを記録する。Ｗｅｂプロキシ３０は、この記録したアクセス先ＵＲＬをマッチ対象ＵＲＬとしてＵＲＬマッチング装置１０へ送信する。
【００１２】
ＵＲＬマッチング装置１０は、アクセス先ＵＲＬがＵＲＬブラックリストＡ，Ｂに示されるＵＲＬ群（参照ＵＲＬ）とマッチするか否かを判断する。すなわち、ＵＲＬマッチング装置１０は、ユーザ端末２０のアクセス先ＵＲＬをマッチ対象ＵＲＬとして取得し、ＵＲＬブラックリスト（悪性ＵＲＬのリスト。例えば、ＵＲＬブラックリストＡ，Ｂ）を収集する。そして、ＵＲＬマッチング装置１０は、この収集したブラックリストに示されるＵＲＬを参照ＵＲＬとして、マッチ対象ＵＲＬとのマッチングを行う。そして、ＵＲＬマッチング装置１０は、マッチング結果（例えば、参照ＵＲＬに対しマッチ対象ＵＲＬがどの程度一致しているかを示した情報）をＷｅｂプロキシ３０等へ通知する。
【００１３】
このようにすることで、ＵＲＬマッチング装置１０は、ユーザ端末２０の管理者等に、ユーザ端末２０のアクセス先ＵＲＬが悪性ＵＲＬに対しどの程度マッチしているかを通知することができる。
【００１４】
次に、図２を用いて、ＵＲＬマッチング装置１０の処理の概要を説明する。図２は、図１のＵＲＬマッチング装置の処理の概要を示す図である。
【００１５】
ＵＲＬマッチング装置１０は、参照ＵＲＬ（つまり、ブラックリストに示される悪性ＵＲＬ）を部分文字列、例えば、「.」や「/」で区切られる文字列で分割する。そして、ＵＲＬマッチング装置１０は、分割した文字列のうち、階層構造の上位層の文字列から順に段階的に連結した複数の部分文字列を生成する。例えば、ＵＲＬマッチング装置１０は、参照ＵＲＬの部分文字列Ａ，Ｂ，Ｃ，Ｄを生成する（（１）分割）。例えば、参照ＵＲＬが「http://www.example.co.jp/path1/path2/index.php?id=123」である場合、図３の符号３１〜符号３６に示すような部分文字列を生成する。ここでのＵＲＬの部分文字列の生成は、例えば、特開２０１２-１１８７１３号公報に記載される技術を用いる。
【００１６】
その後、ＵＲＬマッチング装置１０は、生成した部分文字列を連想配列により格納する（（２）格納）。連想配列とは、文字列をキーとする配列であり、実装例としては、トライ木やパトリシア木等がある。このように参照ＵＲＬの部分文字列を連想配列により格納することで、マッチ対象ＵＲＬの部分文字列を高速に検索できる。この連想配列の詳細は後記するが、連想配列におけるキー（部分文字列）に対応するバリュー（値）は、例えば、キーに示される部分文字列が参照ＵＲＬのどの部分に該当するかを示した情報（属性情報）である。具体例を挙げると、当該部分文字列が、参照ＵＲＬのドメインの一部分（部分ドメイン）か全部（完全ドメイン）か、また参照ＵＲＬのパス部の一部分（部分パス）か全部（完全パス）かを示す情報である（図４参照）。
【００１７】
次に、ＵＲＬマッチング装置１０は、マッチ対象ＵＲＬを分割し、部分文字列Ｅ，Ｆ，Ｇ，Ｈを生成する（（３）分割）。
【００１８】
そして、ＵＲＬマッチング装置１０は、生成されたマッチ対象ＵＲＬの部分文字列を、連想配列に格納された部分文字列から検索し（（４）検索）、その検索結果を出力する（（５）出力）。例えば、ＵＲＬマッチング装置１０は、マッチ対象ＵＲＬの部分文字列を検索し、当該部分文字列の属性情報や、一致（マッチ）した部分文字列等を出力する。
【００１９】
このようにすることで、ＵＲＬマッチング装置１０は、マッチ対象ＵＲＬが参照ＵＲＬに部分的に一致する場合でも、そのことをユーザに通知することができる。さらに、ＵＲＬマッチング装置１０は、マッチ対象ＵＲＬが、参照ＵＲＬとどの程度一致するのかを通知することができる。また、ＵＲＬマッチング装置１０において、参照ＵＲＬの部分文字列は連想配列により格納されるので、キーとなる部分文字列が多数ある場合でもマッチ対象ＵＲＬの部分文字列を高速に検索することができる。
【００２０】
次に、ＵＲＬマッチング装置１０の構成を説明する。図５は、図１のＵＲＬマッチング装置の構成を示す機能ブロック図である。
【００２１】
図５に示すように、ＵＲＬマッチング装置１０は、入出力部１１、マッチング処理部１２１、ＵＲＬ部分文字列生成部１２２、ＵＲＬ部分文字列格納処理部１２３、ＵＲＬ部分文字列検索部１２４、ＵＲＬ部分文字列格納部１３を備える。
【００２２】
入出力部１１は、ＵＲＬマッチング装置１０のデータ入出力を司る。入出力部１１は、例えば、前記した参照ＵＲＬや、マッチ対象ＵＲＬの入力を受け付けたり、参照ＵＲＬとマッチ対象ＵＲＬとのマッチングの結果（部分文字列情報からの検索結果）を出力したりする。この入出力部１１は、インターネット等でデータ送受信を行うための通信インタフェース機能を備えていてもよい。
【００２３】
マッチング処理部１２１、ＵＲＬ部分文字列生成部１２２、ＵＲＬ部分文字列格納処理部１２３、ＵＲＬ部分文字列検索部１２４は、ＵＲＬマッチング装置１０の備えるＣＰＵ（Central  Processing  Unit）によるプログラム実行処理や専用のハードウェアにより実現される。
【００２４】
マッチング処理部１２１は、参照ＵＲＬとマッチ対象ＵＲＬとのマッチングを行い、その結果を入出力部１１経由で出力する。具体的には、マッチング処理部１２１は、入出力部１１経由で参照ＵＲＬを取得すると、この参照ＵＲＬをＵＲＬ部分文字列生成部１２２に受け渡し、ＵＲＬ部分文字列生成部１２２により生成された部分文字列をＵＲＬ部分文字列格納処理部１２３経由でＵＲＬ部分文字列格納部１３に格納させる。また、マッチング処理部１２１は、入出力部１１経由でマッチ対象ＵＲＬを取得すると、同様に、マッチ対象ＵＲＬをＵＲＬ部分文字列生成部１２２に受け渡し、ＵＲＬ部分文字列生成部１２２により生成された部分文字列を受け取る。そして、マッチング処理部１２１は、このマッチ対象ＵＲＬの部分文字列をＵＲＬ部分文字列検索部１２４に受け渡す。その後、マッチング処理部１２１は、ＵＲＬ部分文字列検索部１２４から当該部分文字列の検索の結果を受け取ると、その検索の結果を入出力部１１経由で出力する。
【００２５】
ＵＲＬ部分文字列生成部１２２は、受け取ったＵＲＬ（例えば、参照ＵＲＬやマッチ対象ＵＲＬ）の部分文字列を生成し、生成した部分文字列をマッチング処理部１２１へ返す。ここでのＵＲＬの部分文字列の生成は、例えば、以下のようにして行われる。
【００２６】
まず、前提となるＵＲＬの構成から説明する。ＵＲＬは、ＲＦＣ（Request  For  Comments）１７３８に規定されるとおり、http://＜ドメイン部＞/<パス部>という構成をとる。このドメイン部にはＷｅｂサイトのＦＱＤＮが記述される。また、パス部には当該Ｗｅｂサイト上のＷｅｂコンテンツの場所を示す文字列がディレクトリ形式で記述される。ドメイン部は「．（ドット）」を区切り文字として、要素を右から左に接続した文字列であり、例えば、www.example.co.jp等と表される。ドメイン部の各要素は右から左に上位概念から下位概念を表し、最も右の要素（jp）をトップレベルドメイン、右から２番目をセカンドレベルドメイン、右から３番目をサードレベルドメインと呼ぶ。
【００２７】
パス部は「/（スラッシュ）」を区切り文字として、要素を左から右に接続した文字列であり、例えば、/path1/path2/index.html等と表される。パス部の各要素は左から右に上位概念から下位概念を表す。パス部の末尾には「?」で接続される文字列（ＵＲＬパラメータ）も付与できる。例えば、/path1/path2/index.html?id=123のようにid=123というＵＲＬパラメータも付与できる。ＵＲＬ部分文字列生成部１２２は、このように構成されるＵＲＬの各要素について上位概念（階層構造の上位層）の文字列から順に段階的に連結した複数の部分文字列を生成する。
【００２８】
このＵＲＬ部分文字列生成部１２２が生成する部分文字列を、図３、図６に例示する。例えば、部分文字列の生成の対象となるＵＲＬが「http://www.example.co.jp/path1/path2/index.php?id=123」である場合を考える。この場合、当該ＵＲＬから図３の符号３１〜符号３６に示す６つの部分文字列が生成される。つまり、「http://www.example.co.jp/path1/path2/index.php?id=123」について、ドメイン部が「www.example.co.jp」の場合、ＦＱＤＮの「www」を抜かした部分文字列、ＦＱＤＮを示す部分文字列、パス部の最上位の階層までの部分文字列、パス部の上位から２番目の階層までの部分文字列、パス部の上位から３番目の階層までの部分文字列、パス部の末尾まで含む部分文字列が生成される。
【００２９】
なお、ＵＲＬ部分文字列生成部１２２は、部分文字列の生成の際、パブリックサフィックス（co.jpやjp等、それ自体が不特定多数のドメインを配下に持つドメイン）については部分文字列の生成対象外としてもよい。
【００３０】
さらに、ＵＲＬ部分文字列生成部１２２が生成する部分文字列は、図６に例示するように「*（ワイルドカード）」を含んでいてもよい。このようにすることで、ＵＲＬ部分文字列検索部１２４において、ドメイン部のホスト名が一部変更されたＵＲＬについても部分文字列情報の部分文字列とのマッチングの対象とすることができる。例えば、参照ＵＲＬがhttp://www.example.co.jp/path1/index.php?id=abcである場合、http://mail.example.co.jp/path1/index.php?id=abcについてもマッチさせることができる。
【００３１】
ＵＲＬ部分文字列格納処理部１２３は、ＵＲＬ部分文字列生成部１２２により生成された参照ＵＲＬの部分文字列を連想配列により格納した部分文字列情報を作成する。前記したとおり、連想配列はキーと、当該キーに対応する値（バリュー）とのペアからなるが、ここでのキーはＵＲＬの部分文字列であり、バリューは当該部分文字列の属性情報である。属性情報は、例えば、キーに示される部分文字列が参照ＵＲＬのどの部分に該当するかを示した情報である。
【００３２】
図４、図７は、部分文字列情報の一例を示す図である。図４に示す部分文字列情報は、http://www.example.co.jp/path1/path2/index.php?id=123という参照ＵＲＬに関する部分文字列情報を示した情報である。図４に示す部分文字列情報において、キーとなる部分文字列は「example.co.jp」、「www.example.co.jp」、「www.example.co.jp/path1/」、「www.example.co.jp/path1/path2/」、「www.example.co.jp/path1/path2/index.php?」、「http://www.example.co.jp/path1/path2/index.php?id=123」であり、それぞれに対するバリューは、「部分ドメイン」、「完全ドメイン」、「完全ドメイン・部分パス」、「完全ドメイン・部分パス」、「完全ドメイン・部分パス」、「完全ドメイン・完全パス」という属性情報である。「部分ドメイン」とは参照ＵＲＬの部分的なドメイン名であることを意味し、「完全ドメイン」とは参照ＵＲＬの完全なドメイン名（つまりＦＱＤＮ）であることを意味する。同様にパスについても、「部分パス」とは参照ＵＲＬの部分的なパス名、「完全パス」とは参照ＵＲＬの完全なパス名を意味する。
【００３３】
この部分文字列情報のキーとして、参照ＵＲＬの階層ごとに段階的に区切った部分文字列を設定することで、ＵＲＬ部分文字列検索部１２４が、マッチ対象ＵＲＬに対し、ＵＲＬの上位階層の文字列は同じであるが、下位階層の文字列（例えば、パス部等）が異なるＵＲＬ等、文字列の一部が異なるＵＲＬのマッチング結果を得ることができる。
【００３４】
また、ＵＲＬ部分文字列格納処理部１２３は、部分文字列情報において部分文字列を連想配列のキーとして格納することで、当該部分文字列情報に格納される要素数が増えた場合でも、検索速度の低下を抑制できる。
【００３５】
なお、部分文字列情報に付与される属性情報は、前記した情報以外に、当該ＵＲＬの部分文字列が、参照ＵＲＬに対し、どの程度一致するかを示した数値（一致する割合や一致する文字数）等を示した情報であってもよい。
【００３６】
また、図７に例示するように部分文字列情報のキーの欄の部分文字列について「*（ワイルドカード）」を用いてもよい。
【００３７】
なお、前記したとおり、部分文字列情報のキーとなる部分文字列は、例えば、トライ木やパトリシア木のような木構造により実装される。図８は、部分文字列情報のキーとなる部分文字列の実装の一例を示す図である。例えば、「http://www.example.co.jp/path1/path2/」と「http://www.example.co.jp/path11/path2/」と「http://www.example.co.jp/path1/path12/」と、「http://www.example.co.jp/path11/path12/」のように一部が異なる部分文字列について、これらがキーとして格納される場合、図８に例示するように、ＵＲＬの部分文字列の共通部分を共通ノードとした木構造により実装される。このようにすることで、部分文字列情報のキーとなる部分文字列を効率よく格納することができる。
【００３８】
ＵＲＬ部分文字列検索部１２４は、ＵＲＬ部分文字列生成部１２２から、マッチ対象ＵＲＬの部分文字列を受け取ると、この部分文字列それぞれについて、当該部分文字列をキーとして部分文字列情報を検索する。例えば、ＵＲＬ部分文字列検索部１２４は、マッチ対象ＵＲＬの部分文字列をキーとし、部分文字列情報から当該部分文字列の属性情報を検索する。検索結果は、入出力部１１経由で出力する。ここでの検索結果は、例えば、検索の結果、当該部分文字列の属性情報がヒットしたことや、属性情報がヒットした部分文字列、ヒットした属性情報、ヒットする属性情報がなかった、つまり該当する部分文字列がなかった等の情報である。
【００３９】
例えば、ＵＲＬ部分文字列検索部１２４が、図４に示す部分文字列情報を検索した結果、「www.example.co.jp/path1/」がマッチした場合、当該部分文字列に対する属性値は「完全ドメイン・部分パス」であるという検索結果を出力する。ＵＲＬ部分文字列検索部１２４が、このような属性情報を出力することで、ＵＲＬマッチング装置１０のユーザは、マッチ対象ＵＲＬが、参照ＵＲＬに対しどの程度一致（マッチ）したかを知ることができる。
【００４０】
ＵＲＬ部分文字列格納部１３は、ＵＲＬ部分文字列格納処理部１２３により作成された部分文字列情報を記憶する。このＵＲＬ部分文字列格納部１３は、ＵＲＬマッチング装置１０の備える記憶手段（例えば、ＨＤＤ（Hard  Disk  Drive）、ＲＡＭ（Random  Access  Memory）等）により実現される。
【００４１】
次に、図９を用いて、ＵＲＬマッチング装置１０の処理手順を説明する。図９は、図１のＵＲＬマッチング装置の処理手順を示すフローチャートである。
【００４２】
まず、ＵＲＬマッチング装置１０のマッチング処理部１２１は、入出力部１１経由で参照ＵＲＬを取得すると（Ｓ１）、この参照ＵＲＬをＵＲＬ部分文字列生成部１２２に受け渡し、ＵＲＬ部分文字列生成部１２２は参照ＵＲＬの部分文字列を生成する（Ｓ２）。
【００４３】
次に、マッチング処理部１２１は、Ｓ２で生成された参照ＵＲＬの部分文字列をＵＲＬ部分文字列格納処理部１２３に受け渡し、ＵＲＬ部分文字列格納処理部１２３は、当該部分文字列を連想配列により格納し、部分文字列情報を作成する（Ｓ３）。つまり、ＵＲＬ部分文字列格納処理部１２３は、部分文字列情報のキーとして、Ｓ２で生成された部分文字列を配し、それぞれの部分文字列に対する値（バリュー）として、当該部分文字列の属性情報を対応付ける。すなわち、ＵＲＬ部分文字列格納処理部１２３は、Ｓ２で生成された部分文字列ごとに、当該部分文字列が、参照ＵＲＬのどの部分か（例えば、参照ＵＲＬのドメイン部の全部か一部か、また、パス部の全部か一部か）を属性情報として付与した部分文字列情報を作成する。
【００４４】
その後、マッチング処理部１２１が入出力部１１経由でマッチ対象ＵＲＬを取得すると（Ｓ４）、このマッチ対象ＵＲＬをＵＲＬ部分文字列生成部１２２に受け渡し、ＵＲＬ部分文字列生成部１２２は、マッチ対象ＵＲＬの部分文字列を生成する（Ｓ５）。そして、マッチング処理部１２１は、Ｓ５で生成されたマッチ対象ＵＲＬの部分文字列をＵＲＬ部分文字列検索部１２４に受け渡し、ＵＲＬ部分文字列検索部１２４は、このマッチ対象ＵＲＬの部分文字列をキーとして、部分文字列情報から属性情報を検索する（Ｓ６：部分文字列検索）。そして、ＵＲＬ部分文字列検索部１２４は、検索結果を出力する（Ｓ７）。
【００４５】
このようにすることで、ＵＲＬマッチング装置１０は、マッチ対象ＵＲＬが参照ＵＲＬに部分的に一致する場合でも、そのことをユーザに通知することができる。また、ＵＲＬマッチング装置１０は、部分文字列情報に参照ＵＲＬの部分文字列を連想配列のキーとして格納しておくので、マッチ対象ＵＲＬの部分文字列の検索を高速に行うことができる。
【００４６】
（第２の実施形態）
なお、ＵＲＬ部分文字列検索部１２４による検索の結果、複数のマッチ結果が得られる場合もある。例えば、参照ＵＲＬがhttp://www.example.co.jp/path1/path2/index.php?id=123であり、マッチ対象ＵＲＬがhttp://www.example.co.jp/path1/path2/test.htmlの場合がある。この場合、一致する部分文字列は、example.co.jp（部分ドメイン）、www.example.co.jp（完全ドメイン）、www.example.co.jp/path1/（完全ドメイン・部分パス）、www.example.co.jp/path1/path2/（完全ドメイン・部分パス）であり、複数のマッチ結果が得られることになる。この場合、ＵＲＬ部分文字列検索部１２４は、参照ＵＲＬにマッチした度合いの高いものから優先的に検索結果として出力してもよい。
【００４７】
つまり、部分文字列情報の属性情報に示される、部分文字列のマッチの度合いは、マッチの度合いが高い順に以下のようになる。完全ドメイン・完全パス→完全ドメイン・部分パス→部分ドメイン・部分パス→部分ドメイン。したがって、ＵＲＬ部分文字列検索部１２４は、マッチ結果が複数存在する場合は、マッチの度合いが高いものから優先的に出力する。例えば、前記した例でいうと、ＵＲＬ部分文字列検索部１２４は、マッチの度合いが高い属性情報である「完全ドメイン・部分パス」を出力する。
【００４８】
このようにすることで、ＵＲＬマッチング装置１０のユーザは、マッチ対象ＵＲＬが参照ＵＲＬにどの程度マッチしたかを確認しやすくなる。
【００４９】
さらに、ＵＲＬ部分文字列検索部１２４は、前記した参照ＵＲＬとのマッチの度合いを、文字列情報から検索された属性情報のみならず、マッチした部分文字列の文字数も含めて判断するようにしてもよい。例えば、前記した例でいうと、属性情報が「完全ドメイン・部分パス」の部分文字列が２つある。すなわち、www.example.co.jp/path1/（完全ドメイン・部分パス）と、www.example.co.jp/path1/path2/（完全ドメイン・部分パス）がある。このような場合、ＵＲＬ部分文字列検索部１２４は、これらの部分文字列のうち部分文字列の文字列の長いものから優先的に出力する。例えば、ＵＲＬ部分文字列検索部１２４は、これらの部分文字列のうち、文字列が最も長いものを出力する。
【００５０】
前記した例でいうと、www.example.co.jp/path1/の文字列よりwww.example.co.jp/path1/path2/の文字列が長い。よって、ＵＲＬ部分文字列検索部１２４は、www.example.co.jp/path1/path2/の方を選択し、出力する。このようにすることで、ＵＲＬマッチング装置１０のユーザは、マッチ対象ＵＲＬのどの階層の文字列まで参照ＵＲＬと一致しているかを確認しやすくなる。
【００５１】
（第３の実施形態）
なお、部分文字列情報のキー部分（つまり、部分文字列の部分）におけるキーとなるＵＲＬの部分文字列については、ドメイン部の各要素を左右逆に配置するようにしてもよい。
【００５２】
図１０は、ＵＲＬのドメイン部の各要素の並べ替えの一例を示す図である。ここでは、www.example.co.jpを例に説明する。ＵＲＬ部分文字列生成部１２２は、図１０に示すように、www.example.co.jpの各要素を左右逆に並べ替え、jp.co.example.wwwにする。その後、ＵＲＬ部分文字列格納処理部１２３は、並べ替えられたjp.co.example.wwwを部分文字列情報のキーとして格納する。
【００５３】
つまり、ＵＲＬ部分文字列格納処理部１２３は、部分文字列情報のキー欄に、参照ＵＲＬのドメイン部のトップレベルドメイン(例えば、jp)やセカンドレベルドメイン（例えば、co.jp）を先頭にして配置する。このようにすることで、部分文字列情報のキーとなる部分文字列をトライ木やパトリシア木等の木構造で配置した場合において、各部分文字列の接頭辞となる文字列に共通する部分が少ない場合でも、各部分文字列を効率よく格納することができる。
【００５４】
例えば、２つの参照ＵＲＬのドメイン部がそれぞれwww.example.co.jpとmail.explain.co.jpである場合を考える。この場合、それぞれのドメイン部の文字列が先頭部分から異なるので通常であれば、トライ木やパトリシア木等における共通接頭辞は存在しない。しかし、www.example.co.jpとmail.explain.co.jpについて要素を左右逆に配置するとjp.co.example.wwwとjp.co.explain.mailとなる。これにより、図１１に示すように、jp.co.exまでを部分文字列の共通接頭辞とすることができるので、部分文字列情報のキー欄の部分文字列を効率よく格納できる。
【００５５】
なお、反転した各要素の文字列連結時に用いられる分離記号は、例えば、「.（ドット）」や「_（アンダースコア）」等である。また、参照ＵＲＬのドメイン部について左右逆に配置された部分文字列をキーとする部分文字列情報に対し、ＵＲＬ部分文字列検索部１２４が検索を行う際には、マッチ対象ＵＲＬのドメイン部について左右逆に配置した部分文字列を用いて検索を行う。
【００５６】
（プログラム）
また、ＵＲＬマッチング装置１０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。この場合、コンピュータがプログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかるプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上記実施形態と同様の処理を実現してもよい。以下に、ＵＲＬマッチング装置１０と同様の機能を実現するＵＲＬマッチングプログラムを実行するコンピュータの一例を説明する。
【００５７】
図１２は、ＵＲＬマッチングプログラムを実行するコンピュータを示す図である。図１２に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【００５８】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。ディスクドライブ１１００には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０およびキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。
【００５９】
ここで、図１２に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。上記実施形態で説明した各テーブルは、例えばハードディスクドライブ１０９０やメモリ１０１０に記憶される。
【００６０】
また、ＵＲＬマッチングプログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、ハードディスクドライブ１０９０に記憶される。具体的には、上記実施形態で説明したＵＲＬマッチングが実行する各処理が記述されたプログラムモジュールが、ハードディスクドライブ１０９０に記憶される。
【００６１】
また、ＵＲＬマッチングプログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【００６２】
なお、ＵＲＬマッチングプログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、ＵＲＬマッチングプログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００６３】
１０    ＵＲＬマッチング装置
１１    入出力部
１３    ＵＲＬ部分文字列格納部
２０    ユーザ端末
３０    Ｗｅｂプロキシ
１２１  マッチング処理部
１２２  ＵＲＬ部分文字列生成部
１２３  ＵＲＬ部分文字列格納処理部
１２４  ＵＲＬ部分文字列検索部
【図１】
0005989919.tif 000002
【図２】
0005989919.tif 000003
【図３】
0005989919.tif 000004
【図４】
0005989919.tif 000005
【図５】
0005989919.tif 000006
【図６】
0005989919.tif 000007
【図７】
0005989919.tif 000008
【図８】
0005989919.tif 000009
【図９】
0005989919.tif 000010
【図１０】
0005989919.tif 000011
【図１１】
0005989919.tif 000012
【図１２】
0005989919.tif 000013