(57)【要約】    【課題】  リンク構造解析中に、誤って商品を購入したり、会員登録したりするおそれを低減し、適切にリンク構造解析を行うことのできる装置を提供する。    【解決手段】  入力有リンク先アドレス抽出手段１２は、診断対象サーバ装置６の対象ウェブサイトから取得した所定ページに含まれる入力項目のあるリンク先アドレスを抽出する。リンク無効化ページ生成・送信手段１６は、入力項目のあるリンクが含まれる所定ページにつき、当該入力有リンク以外のリンクを無効化したリンク無効化ページを生成する。リンク無効化ページを受信したクライアント端末装置４は、これを画面に表示する。クライアント端末装置４の操作者は、リンク無効化ページの入力項目に入力を行い、送信ボタンをクリックする。入力情報転送手段１８は、これを診断対象サーバ装置６に与え、そのレスポンスとしてページを受信する。【選択図】  図１
2012014227.tif 000002
【特許請求の範囲】
【請求項１】
クライアント端末装置と診断対象サーバ装置と通信可能な診断サーバ装置であって、
所定ページに含まれる入力無リンクのリンク先アドレスを抽出する入力無リンク先アドレス抽出手段と、
所定ページに含まれる入力有リンクのリンク先アドレスを抽出する入力有リンク先アドレス抽出手段と、
前記入力無リンク先アドレスのページを、診断対象サーバ装置に要求し、取得したページを所定ページとして、前記入力無リンク先アドレス抽出手段および前記入力有リンク先アドレス抽出手段に与えるリンク先ページ取得手段と、
前記入力有リンク先アドレスの含まれる前記所定ページにおける、当該入力有リンク以外のリンクを無効化したリンク無効化ページを生成して、クライアント端末装置に送信するリンク無効化ページ生成・送信手段と、
前記無効化ページを受けたクライアント端末装置において、操作者によって入力項目に入力された操作者入力情報を受信し、診断対象サーバ装置に送信する入力情報転送手段と、
前記入力情報を受けた診断対象サーバ装置からレスポンスとして送信されてくる返信ページを受信し、当該返信ページを所定ページとして、前記入力無リンク先アドレス抽出手段および前記入力有リンク先アドレス抽出手段に与える返信ページ受信手段と、
入力無リンク先アドレス抽出手段および入力有リンク先アドレス抽出手段によって抽出されたリンク先アドレスに基づいて、リンク構造を決定するリンク構造決定手段と、
前記リンク構造に基づいて、診断対象サーバ装置の診断を実行する診断実行手段と、
を備えた診断サーバ装置。
【請求項２】
請求項１の診断サーバ装置において、
前記リンク無効化ページ生成・送信手段は、前記所定ページのユーザ入力項目への入力は可能とし、リンク記述を無効化したリンク無効化ページを生成して送信することを特徴とする診断サーバ装置。
【請求項３】
請求項１の診断サーバ装置において、
前記リンク無効化ページ生成・送信手段は、前記所定ページ全体を画像とし、ユーザ入力項目およびリンク記述を無効とした画像部分と、ユーザ入力項目への入力を可能とした入力部分とを備えたリンク無効化ページを生成して送信することを特徴とする診断サーバ装置。
【請求項４】
請求項１〜３のいずれかの診断サーバ装置において、
前記リンク無効化ページ生成・送信手段は、少なくとも以下のいずれかによって、前記所定ページ中のリンク記述を無効化することを特徴とする診断サーバ装置。
(1)リンク記述をコメント記述に書き換える。
(2)リンク記述を完全に削除する。
(3)リンク記述の少なくとも一部を削除することで、リンク記述を文法的に誤ったものとする。
(4)リンク記述に記述を加えることで、リンク記述を文法的に誤ったものとする。
(5)リンク記述を書き換え、予め用意している警告ページへのリンク記述とする。
【請求項５】
クライアント端末装置と診断対象サーバ装置と通信可能な診断サーバ装置をコンピュータによって実現するための診断サーバプログラムであって、コンピュータを、
所定ページに含まれる入力無リンクのリンク先アドレスを抽出する入力無リンク先アドレス抽出手段と、
所定ページに含まれる入力有リンクのリンク先アドレスを抽出する入力有リンク先アドレス抽出手段と、
前記入力無リンク先アドレスのページを、診断対象サーバ装置に要求し、取得したページを所定ページとして、前記入力無リンク先アドレス抽出手段および前記入力有リンク先アドレス抽出手段に与えるリンク先ページ取得手段と、
前記入力有リンク先アドレスの含まれる前記所定ページにおける、当該入力有リンク以外のリンクを無効化したリンク無効化ページを生成して、クライアント端末装置に送信するリンク無効化ページ生成・送信手段と、
前記無効化ページを受けたクライアント端末装置において、操作によって入力項目に入力された入力情報を受信し、診断対象サーバ装置に送信する入力情報転送手段と、
前記入力情報を受けた診断対象サーバ装置からレスポンスとして送信されてくる返信ページを受信し、当該返信ページを所定ページとして、前記入力無リンク先アドレス抽出手段および前記入力有リンク先アドレス抽出手段に与える返信ページ受信手段と、
入力無リンク先アドレス抽出手段および入力有リンク先アドレス抽出手段によって抽出されたリンク先アドレスに基づいて、リンク構造を決定するリンク構造決定手段と、
前記リンク構造に基づいて、診断対象サーバ装置の診断を実行する診断実行手段として機能させることを特徴とする診断サーバプログラム。
【請求項６】
クライアント端末装置と診断対象サーバ装置と通信可能なリンク構造解析装置であって、
所定ページに含まれる入力無リンクのリンク先アドレスを抽出する入力無リンク先アドレス抽出手段と、
所定ページに含まれる入力有リンクのリンク先アドレスを抽出する入力有リンク先アドレス抽出手段と、
前記入力無リンク先アドレスのページを、診断対象サーバ装置に要求し、取得したページを所定ページとして、前記入力無リンク先アドレス抽出手段および前記入力有リンク先アドレス抽出手段に与えるリンク先ページ取得手段と、
前記入力有リンク先アドレスの含まれる前記所定ページにおける、当該入力有リンク以外のリンクを無効化したリンク無効化ページを生成して、クライアント端末装置に送信するリンク無効化ページ生成・送信手段と、
前記無効化ページを受けたクライアント端末装置において、操作者によって入力項目に入力された入力情報を受信し、診断対象サーバ装置に送信する入力情報転送手段と、
前記入力情報を受けた診断対象サーバ装置からレスポンスとして送信されてくる返信ページを受信し、当該返信ページを所定ページとして、前記入力無リンク先アドレス抽出手段および前記入力有リンク先アドレス抽出手段に与える返信ページ受信手段と、
入力無リンク先アドレス抽出手段および入力有リンク先アドレス抽出手段によって抽出されたリンク先アドレスに基づいて、リンク構造を決定するリンク構造決定手段と、
を備えたリンク構造解析装置。
【請求項７】
クライアント端末装置と診断対象サーバ装置と通信可能なリンク構造解析装置をコンピュータによって実現するためのリンク構造解析プログラムであって、コンピュータを
所定ページに含まれる入力無リンクのリンク先アドレスを抽出する入力無リンク先アドレス抽出手段と、
所定ページに含まれる入力有リンクのリンク先アドレスを抽出する入力有リンク先アドレス抽出手段と、
前記入力無リンク先アドレスのページを、診断対象サーバ装置に要求し、取得したページを所定ページとして、前記入力無リンク先アドレス抽出手段および前記入力有リンク先アドレス抽出手段に与えるリンク先ページ取得手段と、
前記入力有リンク先アドレスの含まれる前記所定ページにおける、当該入力有リンク以外のリンクを無効化したリンク無効化ページを生成して、クライアント端末装置に送信するリンク無効化ページ生成・送信手段と、
前記無効化ページを受けたクライアント端末装置において、操作者によって入力項目に入力された入力情報を受信し、診断対象サーバ装置に送信する入力情報転送手段と、
前記入力情報を受けた診断対象サーバ装置からレスポンスとして送信されてくる返信ページを受信し、当該返信ページを所定ページとして、前記入力無リンク先アドレス抽出手段および前記入力有リンク先アドレス抽出手段に与える返信ページ受信手段と、
入力無リンク先アドレス抽出手段および入力有リンク先アドレス抽出手段によって抽出されたリンク先アドレスに基づいて、リンク構造を決定するリンク構造決定手段として機能させるためのリンク構造解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ウェブサイトの脆弱性診断などに用いることができるリンク構造解析に関するものである。
【背景技術】
【０００２】
ウェブサイトに対する外部からの攻撃に備えるため、ウェブサイトに脆弱性が無いかどうかを診断することが行われている。たとえば、開示されているＵＲＬから類推されるフォルダ名をＵＲＬとしてウェブブラウザにダイレクトに手入力することにより、本来ユーザに開示すべきでない情報が表示されてしまうという脆弱性（ディレクトリ・リスティングという）がないかどうかを診断することが行われている。
【０００３】
このような脆弱性診断を行うためには、複数のページがリンクされて構成されているウェブサイトのリンク構造を予め解析する必要がある。リンク構造を把握することにより、ページのチェック漏れを防いで、適切な診断を行うことができる。
【０００４】
特許文献１、特許文献２には、ウェブサイトにアクセスして、自動的にリンク構造を解析する装置が開示されている。これらの装置を用いれば、ウェブサイトのリンク構造を取得することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２２３４８５
【特許文献２】特開２００８−２４２８０３
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１、特許文献２に記載されているように、各ページ（ＨＴＭＬ）に埋め込まれたリンクの記述を取り出し、さらにリンク先のページに埋め込まれたリンクの記述を取り出すという処理を繰り返すことで、リンク構造を解析することができる。したがって、特許文献１、特許文献２に記載の技術によれば、自動的にリンク構造を解析できるという利点を得ることができる。
【０００７】
しかしながら、特許文献１、特許文献２の技術においては、次のような問題点が生じていた。
【０００８】
ウェブサイトを構成するページの中には、ユーザに入力を求めるページも存在する。たとえば、ユーザ名、パスワードの入力を求めるページ、商品購入のためにクレジットカード番号の入力を求めるページなどである。これらページでは、ユーザ入力がなされないと、リンク先のページを取得できないことになる。これらユーザ入力が必要なページについても、プログラムによって自動的に入力を行って、リンク先のページを取得するということも考えられる。
【０００９】
しかし、これらページの中には、正しいユーザ入力がされた場合と、誤ったユーザ入力がされた場合とで、リンク先のページが異なるように設定されている場合がある。正しい入力、誤った入力を自動的に生成することは困難であり、このため、プログラムによるリンク解析処理には限界があった。
【００１０】
また、ページの内容、ユーザ入力の内容によっては、物販サイトでの会員登録や購入などのアクションが実際に行われてしまうことがあるため、この点においてもプログラムによる自動処理には限界があった。
【００１１】
かといって、ユーザ入力を人手によって行いながらリンク構造を解析する場合には、操作者のミスにより、脆弱性診断を行おうとしているページとは違ったページに遷移してしまうという問題点が生じる可能性がある。
【００１２】
そこで、この発明は、上記のような問題点を解決して、リンク構造解析中に、誤って商品を購入したり、会員登録したりするおそれを低減し、適切にリンク構造解析を行うことのできる装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
(1)この発明に係る診断サーバ装置は、クライアント端末装置と診断対象サーバ装置と通信可能な診断サーバ装置であって、所定ページに含まれる入力無リンクのリンク先アドレスを抽出する入力無リンク先アドレス抽出手段と、所定ページに含まれる入力有リンクのリンク先アドレスを抽出する入力有リンク先アドレス抽出手段と、前記入力無リンク先アドレスのページを、診断対象サーバ装置に要求し、取得したページを所定ページとして、前記入力無リンク先アドレス抽出手段および前記入力有リンク先アドレス抽出手段に与えるリンク先ページ取得手段と、前記入力有リンク先アドレスの含まれる前記所定ページにおける、当該入力有リンク以外のリンクを無効化したリンク無効化ページを生成して、クライアント端末装置に送信するリンク無効化ページ生成・送信手段と、前記無効化ページを受けたクライアント端末装置において、操作者によって入力項目に入力された操作者入力情報を受信し、診断対象サーバ装置に送信する入力情報転送手段と、前記入力情報を受けた診断対象サーバ装置からレスポンスとして送信されてくる返信ページを受信し、当該返信ページを所定ページとして、前記入力無リンク先アドレス抽出手段および前記入力有リンク先アドレス抽出手段に与える返信ページ受信手段と、入力無リンク先アドレス抽出手段および入力有リンク先アドレス抽出手段によって抽出されたリンク先アドレスに基づいて、リンク構造を決定するリンク構造決定手段と、前記リンク構造に基づいて、診断対象サーバ装置の診断を実行する診断実行手段とを備えている。
【００１４】
したがって、操作者の入力を必要とするページが存在しても、操作者の入力ミスによる混乱を防止して、適切なリンク構造の解析を行って、適切な診断を行うことができる。
【００１５】
(2)この発明に係る診断サーバ装置は、リンク無効化ページ生成・送信手段は、前記所定ページのユーザ入力項目への入力は可能とし、リンク記述を無効化したリンク無効化ページを生成して送信することを特徴としている。
【００１６】
したがって、ページの外観を維持しつつ、入力無リンクを無効化し、入力有リンクを有効にしたページを、クライアント端末装置に送信することができる。
【００１７】
(3)この発明に係る診断サーバ装置は、リンク無効化ページ生成・送信手段は、前記所定ページ全体を画像とし、ユーザ入力項目およびリンク記述を無効とした画像部分と、ユーザ入力項目への入力を可能とした入力部分とを備えたリンク無効化ページを生成して送信することを特徴としている。
【００１８】
したがって、これから診断しようとするリンク先とは異なるリンク先に遷移する可能性がなく、適切な診断を行うことができる。
【００１９】
(4)この発明に係る診断サーバ装置は、リンク無効化ページ生成・送信手段は、少なくとも以下のいずれかによって、前記所定ページ中のリンク記述を無効化することを特徴としている。
【００２０】
(i)リンク記述をコメント記述に書き換える。
【００２１】
(ii)リンク記述を完全に削除する。
【００２２】
(iii)リンク記述の少なくとも一部を削除することで、リンク記述を文法的に誤ったものとする。
【００２３】
(iv)リンク記述に記述を加えることで、リンク記述を文法的に誤ったものとする。
【００２４】
(v)リンク記述を書き換え、予め用意している警告ページへのリンク記述とする。
【００２５】
この発明において、「リンク」とは、ユーザの操作により他のページに遷移するように意図された仕組みをいう。
【００２６】
「入力無リンク先アドレス抽出手段」は、実施形態においては、ステップＳ５、Ｓ６がこれに対応する。
【００２７】
「入力有リンク先アドレス抽出手段」は、実施形態においては、ステップＳ５、Ｓ６がこれに対応する。
【００２８】
「リンク無効化ページ生成・送信手段」は、実施形態では、ステップＳ７、Ｓ１０がこれに対応する。
【００２９】
「入力情報転送手段」は、実施形態では、ステップＳ１１、Ｓ１２がこれに対応する。
【００３０】
「返信ページ受信手段」は、実施形態では、ステップＳ１３がこれに対応する。
【００３１】
「リンク構造決定手段」は、実施形態では、ステップＳ１６がこれに対応する。
【００３２】
「診断実行手段」は、実施形態では、ステップＳ１７がこれに対応する。
【００３３】
「プログラム」とは、ＣＰＵにより直接実行可能なプログラムだけでなく、ソース形式のプログラム、圧縮処理がされたプログラム、暗号化されたプログラム等を含む概念である。
【図面の簡単な説明】
【００３４】
【図１】この発明の一実施形態による診断サーバ装置２の機能ブロック図である。
【図２】診断サーバ装置２のハードウエア構成である。
【図３】診断サーバプログラム４４のフローチャートである。
【図４】診断サーバプログラム４４のフローチャートである。
【図５】診断サーバプログラム４４のフローチャートである。
【図６】診断サーバ装置２から診断対象サーバ装置６に送信されるＨＴＭＬリクエストの例である。
【図７】図６のリクエストに対して、診断対象サーバ装置６から返信されてくるＨＴＭＬレスポンスの例である。
【図８】ＨＴＭＬレスポンスをブラウザで表示した画面を示す図である。
【図９】リンク無効化ページの例である。
【図１０】アドレスを書き換えたリンク無効化ページの例である。
【図１１】解析されたリンク構造の例である。
【図１２】他の実施形態によるリンク無効化ページの例である。
【発明を実施するための形態】
【００３５】
１．診断サーバ装置の全体構成
図１に、この発明の一実施形態による診断サーバ装置２の機能ブロック図を示す。
【００３６】
入力無リンク先アドレス抽出手段１０は、診断対象サーバ装置６の対象ウェブサイトから取得した所定ページに含まれる入力項目の無いリンク先アドレスを抽出する。
【００３７】
入力有リンク先アドレス抽出手段１２は、診断対象サーバ装置６の対象ウェブサイトから取得した所定ページに含まれる入力項目のあるリンク先アドレスを抽出する。
【００３８】
リンク先ページ取得手段１４は、入力無リンク先アドレス抽出手段１０によって抽出されたリンク先アドレスに基づいて、診断対象サーバ装置６からページを取得する。そして、取得したページを、所定ページとして入力無リンク先アドレス抽出手段１０、入力有リンク先アドレス抽出手段１２に与える。したがって、順次、リンク先アドレスが取得される。
【００３９】
リンク無効化ページ生成・送信手段１６は、入力項目（ＩＤ、パスワードなど）のあるリンク（入力有リンク）が含まれる所定ページにつき、当該入力有リンク以外のリンクを無効化したリンク無効化ページを生成する。また、入力有リンクのリンク先アドレスは、本来、診断対象サーバ装置６のアドレスとなっているが、これを診断サーバ装置２自らのアドレスに書き換える。このようにして生成したリンク無効化ページをクライアント端末装置４に送信する。
【００４０】
リンク無効化ページを受信したクライアント端末装置４は、これを画面に表示する。クライアント端末装置４の操作者は、リンク無効化ページの入力項目に入力を行い、送信ボタンをクリックする。これにより、入力項目に入力された入力情報が、入力有リンク項目のリンク先アドレスである診断サーバ装置２に返信されてくる。
【００４１】
入力情報を受けた診断サーバ装置２の入力情報転送手段１８は、上記にて書き換えを行った元のアドレス（診断対象サーバ装置６）に転送する。診断対象サーバ装置６は、この入力情報を受けて、ページを返信する。診断サーバ装置２の返信サーバ受信手段２０は、受信したページを所定ページとして入力無リンク先アドレス抽出手段１０、入力有リンク先アドレス抽出手段１２に与える。したがって、入力有リンクについても、順次、リンク先アドレスが取得される。
【００４２】
リンク構造決定手段２２は、上記のようにして収集されたリンク先アドレスに基づき、診断対象ウェブサイトのリンク構造を決定する。診断実行手段２４は、決定されたリンク構造に基づいて、診断対象ウェブサイトの各ページごとに、順次、脆弱性診断を実行する。
【００４３】
２．ハードウエア構成
図２に、この発明の一実施形態による診断サーバ装置２のハードウエア構成を示す。ＣＰＵ３０には、ディスプレイ３２、メモリ３４、ハードディスク３６、キーボード／マウス３８、通信回路４０、ＣＤ−ＲＯＭドライブ４８が接続されている。通信回路４０は、インターネットなどを介して、クライアント端末装置４、診断対象サーバ装置６と通信を行うためのものである。
【００４４】
ハードディスク３６には、オペレーティングシステム（たとえばWINDOWS（商標））４２、診断サーバプログラム４４が記録されている。
【００４５】
診断サーバプログラム４４は、オペレーティングシステム４２と協働してその機能を発揮するものである。また、診断サーバプログラム４４は、ＣＤ−ＲＯＭ５０に記録されていたものを、ＣＤ−ＲＯＭドライブ４８を介して、インストールしたものである。
【００４６】
３．診断サーバプログラムの処理
図３〜図５に、診断サーバプログラム４４のフローチャートを示す。診断を依頼するユーザは、クライアント端末装置４を操作してブラウザソフトウエアを起動し、診断サーバ装置２にアクセスする。これを受けて、診断サーバ装置２のＣＰＵ３０は、診断対象となるサイトのＵＲＬの入力を求める画面を、クライアント端末装置４に送信する。クライアント端末装置４を操作するユーザは、診断対象サイトのＵＲＬを入力し、これを診断サーバ装置２に返送する。たとえば、ユーザは、診断対象サイトのトップＵＲＬを入力することにより、診断対象サイト全体の診断を求めることができる。
【００４７】
診断サーバ装置２のＣＰＵ３０は、診断対象サイトのＵＲＬを受信し、調査ＵＲＬリスト５２として、ハードディスク３６に記録する（ステップＳ１）。次に、ＣＰＵ３０は、調査ＵＲＬリスト５２から、１つのＵＲＬを取得する（ステップＳ２）。ここでは、調査ＵＲＬリスト５２には、診断対象サイトのトップＵＲＬのみが記録されているので、これを取り出すことになる。
【００４８】
ＣＰＵ３０は、取り出したＵＲＬが、既に調査済みであるかどうかを、ハードディスク３６に記録されている調査済ＵＲＬリスト５４を参照して判断する（ステップＳ３）。調査済みであれば、調査ＵＲＬリスト５２の次のＵＲＬを取得し（ステップＳ２）、同様に調査済みであるか否かを判断する。ここでは、調査済ＵＲＬリストには何も記録されていないので未調査であるとして、調査済ＵＲＬリスト５４に、上記ＵＲＬを記録しステップＳ４に進む。
【００４９】
ステップＳ４において、ＣＰＵ３０は、当該ＵＲＬに対してリクエストを送信し、そのレスポンスを受け取る。つまり、診断対象サーバ装置６の診断対象サイトにアクセスして、ページを取得する。ＣＰＵ３０は、上記のリクエストおよびレスポンス（ページ）を、ハードディスク３６のリクエスト・レスポンス・リスト５６に記録する。記録されたリクエストおよびレスポンスの例を、図６、図７に示す。図６がリクエストであり、図７がこれに対応するレスポンスである。
【００５０】
次に、ＣＰＵ３０は、レスポンスとして受信したページを、所定ページとして、当該ページに含まれるリンクを抽出する。たとえば、図７において、formタグ１００やaタグ１０２等がリンクである。したがって、ＣＰＵ３０は、<formで始まるタグや、<aで始まるタグを抽出することにより、リンクを抽出することができる。このほか、JAVA（商標）アプレットなどが記述されている場合には、その内容に、リンクが含まれていないかどうかを判断する。
【００５１】
ＣＰＵ３０は、所定ページから抽出したリンクの内、ユーザ入力項目を伴ったリンクがあるか否かを判断する（ステップＳ６）。たとえば、formタグなどは、ブラウザによって表示されると、図８の１０４に示すように、ユーザが入力するための入力欄を伴っている。この明細書では、このようなリンクを、入力有リンクと呼ぶ。また、入力項目を伴わないリンクを、入力無リンクと呼ぶ。
【００５２】
ＣＰＵ３０は、所定ページに入力有リンクが含まれている場合にはステップＳ７を実行し、入力有リンクが含まれていない場合にはステップＳ８を実行する。たとえば、図７に示すようなページであれば、入力有リンク１００が含まれているので、ＣＰＵ３０は、ステップＳ７を実行する。ステップＳ７においては、入力有リンク１００以外の入力無リンクを無効にしたリンク無効化ページを生成する。つまり、入力有リンク１００のみが有効なページを生成する。なお、入力有リンク１００が２以上含まれるページの場合には、これら複数の入力有リンク１００は、全て無効化しない。
【００５３】
この実施形態では、入力無リンクのタグを、コメントタグに変えることによってリンクの無効化を図っている。たとえば、図７の入力無リンク１０２において<a href=...>と記載されているところを、<!a href=...>と書き換えることにより、リンクを無効化している。このようにして生成されたリンク無効化ページを図９に示す。
【００５４】
ＣＰＵ３０は、このようにして生成したリンク無効化ページおよびそのＵＲＬを、ハードディスク３６の無効化ページリスト５８に記録する。
【００５５】
次に、ＣＰＵ３０は、所定ページに含まれる入力無リンクを、調査ＵＲＬリスト５２に登録する（ステップＳ８）。
【００５６】
続いて、ＣＰＵ３０は、調査ＵＲＬリスト５２に記録されたＵＲＬにおいて、未処理のものがあるかどうかを判断する（ステップＳ９）。未処理のものが残っていれば、ステップＳ２に戻って、次のＵＲＬを対象として調査を行う。このようにして、リクエスト・レスポンス・リスト５６には、リンク構造を決定するためのデータが蓄積される。したがって、入力有ページまでのリンク構造は、リクエスト・レスポンス・リスト５６を解析することで決定することができる。また、無効化ページリスト５８には、リンク無効化ページが蓄積される。
【００５７】
ステップＳ９において、未処理のものが残っていないと判断すると、ＣＰＵ３０は、ステップＳ１０に進み、入力有ページから先のリンク構造を決定するために必要なデータを収集する。
【００５８】
ステップＳ１０において、ＣＰＵ３０は、無効化ページリスト５８から、一つの無効化ページを読み出し、そのリンク無効化ページの入力有リンクのリンク先アドレスを、診断サーバ装置２自らのアドレスに書き換える。たとえば、図９のリンク無効化ページにおける、formタグ１００のリンク先を、http://www.furutani.co.jp/cgi-bin/term.cgiから、自らのアドレスであるhttp://www.proxy.co.jp/cgi-bin/term.cgiに書き換える。書き換えられたリンク無効化ページを図１０に示す。
【００５９】
ＣＰＵ３０は、このようにしてアドレスを書き換えたリンク無効化ページを、クライアント端末装置４にリクエストとして送信する。クライアント端末装置４のブラウザソフトウエアは、これをディスプレイに表示する。たとえば、図８に示すような画面を表示する。この画面では、入力有リンク１０４は有効であり（但しリンク先アドレスは書き換えられている）、入力無リンク１０６は無効となっている。
【００６０】
クライアント端末装置４の操作者は、入力有リンク１０４のユーザ入力項目に所定値の入力を行う。入力を行うのは人間であるので、適切な判断のもと、入力を行うことができる。例えば、実際に商品を購入してしまうような入力は行わない。また、入力無リンク１０６は無効とされているので、ユーザが誤ってクリックしても、そのリンク先に遷移することが無く、混乱を生じるおそれが無い。
【００６１】
クライアント端末装置４の操作者がユーザ入力項目に入力を行い、送信ボタンをクリックすると、ユーザによる入力値を伴ったデータが、レスポンスとして診断サーバ装置２に送り返されてくる（ステップＳ１１）。このとき、このレスポンスには、上記にて書き換えられたアドレスが含まれている。
【００６２】
ＣＰＵ３０は、これを受けて、レスポンスに含まれるアドレスを、元のアドレスに戻すように再書き換えを行った上で、診断対象サーバ装置６に対し、リクエストとして送信する（ステップＳ１２）。続いて、このリクエストに対するレスポンスとして返信されてくるページを受信する（ステップＳ１３）。ＣＰＵ３０は、このとき、リクエストとレスポンスを、リクエスト・レスポンス・リスト５６に記録する。
【００６３】
ＣＰＵ３０は、取得したページに、リンクが含まれているかどうかを判断する（ステップＳ１４）。含まれていれば、ステップＳ６以下を実行する。含まれていなければ、無効化ページリスト５８において、未処理となっているリンク無効化ページがあるかどうかを判断する（ステップＳ１５）。
【００６４】
未処理のリンク無効化ページがあれば、ステップＳ１０に戻って、次のリンク無効化ページを無効化ページリスト５８から読み出して、ステップＳ１１以下の処理を行う。
【００６５】
未処理のリンク無効化ページがなくなれば、ＣＰＵ３０は、蓄積したリクエスト・レスポンス・リスト５６に基づいて、リンク構造を決定する（ステップＳ１６）。たとえば、図６、図７のリクエスト・レスポンスに基づき、http://www.furutani.co.jpは、http://www.furutani.co.jp/cgi-bin/term.cgi、http://www.furutani.co.jp/office/ronbun/BP.htmlにリンクしていることが決定できる。このようにして、決定したリンク構造の例を、図１１に示す。
【００６６】
次に、ＣＰＵ３０は、決定したリンク構造に基づいて、各ページごとに順次、脆弱性の診断を実行する（ステップＳ１７）。脆弱性診断の項目としては、ＳＱＬインジェクション、クロスサイト・スクリプティング、クロスサイト・リクエスト・フォージェリなどがある。脆弱性診断のアルゴリズムは、従来周知の手法を用いればよいので、ここでは詳述しない。なお、一部または全部の脆弱性診断を、操作者の手作業によって行ってもよい。
【００６７】
４．その他の実施形態
(1)上記実施形態では、タグを書き換えてコメントタグにすることによってリンクの無効化を行っている。しかし、リンク記述を完全に削除することによって無効化してもよい。また、リンク記述の少なくとも一部を削除することで、リンク記述を文法的に誤ったものとしたり、リンク記述に記述を加えることで、リンク記述を文法的に誤ったものとしてもよい。あるいは、リンク記述を書き換え、予め用意しているブラウザ戻るボタンで元のページに戻って下さいとの警告を表示する警告ページへのリンク記述としてもよい。この場合には、診断サーバプログラム４４は、警告ページに対しては、解析処理を行わないように設定しておくとよい。
【００６８】
(2)上記実施形態では、図８に示すように、入力無リンク１０６を無効化することで、リンク無効化ページを生成している。しかし、図１２に示すように、ページに含まれる全てのリンクを無効にして（たとえば、イメージ画像として表示する）フレームに表示し、他のフレームにユーザ入力が可能な入力有リンク１１０を表示するようにして、リンク無効化ページを生成するようにしてもよい。
【００６９】
(3)上記実施形態では、ウェブの脆弱性診断におけるリンク構造の解析について説明したが、他の用途のためのリンク構造の解析にも適用することができる。
【００７０】
(4)上記実施形態において、診断対象を限定するために、リンクの階層などによって、リンク構造解析に限度を設けるようにしてもよい。
【図１】
2012014227.tif 000003
【図２】
2012014227.tif 000004
【図３】
2012014227.tif 000005
【図４】
2012014227.tif 000006
【図５】
2012014227.tif 000007
【図６】
2012014227.tif 000008
【図７】
2012014227.tif 000009
【図９】
2012014227.tif 000010
【図１０】
2012014227.tif 000011
【図１１】
2012014227.tif 000012
【図８】
2012014227.tif 000013
【図１２】
2012014227.tif 000014