(57)【特許請求の範囲】
【請求項１】
アプリケーションのサービスが起動された場合に動作する、
動的に文書を生成するための情報が記述され前記アプリケーションのサービスに対応した動的文書生成ファイルを読み込む読込手段と、
読み込んだ前記動的文書生成ファイルに所定の形式に従って入力項目ごとにコメントとして記述されたチェック情報を取得するチェック情報取得手段と、
取得した前記チェック情報をチェックファイルに書き込むチェック情報書込手段と、
前記チェックファイルを保持するチェックファイル記憶手段とを備え、
前記アプリケーションに入力データが送信された場合に動作する、
入力された入力データと前記チェックファイル記憶手段に保持された前記チェック情報とを前記入力項目ごとに比較する比較手段と、
前記比較手段が比較した結果に基づいて、前記入力データが設計上適正なデータであるかどうかを判定する判定手段と、
前記判定手段が判定した結果に基づいて、対応する処理を実行する対応処理実行手段とを備える情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記チェック情報に前記入力データのサイズを制限する情報、及び、文字コードの種別を制限する情報の少なくとも一の情報が含まれる情報処理装置。
【請求項３】
請求項２に記載の情報処理装置において
前記入力データにクロスサイトスクリプティングが含まれる場合に、当該クロスサイトスクリプティングを無害化するＸＳＳ無害化手段を備え、
前記比較手段が、前記ＸＳＳ無害化手段にて無害化された結果に基づいて前記チェック情報に含まれる入力データのサイズを制限する情報又は入力データのサイズの情報を変更して比較を行う情報処理装置。
【請求項４】
請求項１ないし３のいずれかに記載の情報処理装置において、
前記入力項目ごとに処理種別を識別するためのキーワードが設定されて前記チェック情報に含まれており、
前記比較手段が、操作された処理種別のキーワードが設定されている入力項目に入力された入力データについてのみ比較処理を行う情報処理装置。
【請求項５】
請求項１ないし４のいずれかに記載の情報処理装置において、
前記動的文書生成ファイルに記述された入力項目に関する定義情報に基づいて、前記チェック情報を当該動的文書生成ファイルにコメントとして記述するチェック情報記述手段を備える情報処理装置。
【請求項６】
アプリケーションのサービスが起動された場合に、
コンピュータが、
動的に文書を生成するための情報が記述され前記アプリケーションのサービスに対応した動的文書生成ファイルを読み込む読込ステップと、
読み込んだ前記動的文書生成ファイルに所定の形式に従って入力項目ごとにコメントとして記述されたチェック情報を取得して、チェックファイル記憶手段に保持するチェック情報取得ステップとを実行し、
前記アプリケーションに入力データが送信された場合に、
前記コンピュータが、
入力された入力データと前記チェックファイル記憶手段に保持された前記チェック情報とを前記入力項目ごとに比較する比較ステップと、
前記比較ステップが比較した結果に基づいて、前記入力データが設計上適正なデータであるかどうかを判定する判定ステップと、
前記判定ステップが判定した結果に基づいて、対応する処理を実行する対応処理実行ステップとを実行する情報処理方法。
【請求項７】
アプリケーションのサービスが起動された場合に、
コンピュータを、
動的に文書を生成するための情報が記述され前記アプリケーションのサービスに対応した動的文書生成ファイルを読み込む読込手段、
読み込んだ前記動的文書生成ファイルに所定の形式に従って入力項目ごとにコメントとして記述されたチェック情報を取得するチェック情報取得手段、
取得した前記チェック情報をチェックファイルに書き込むチェック情報書込手段、
前記チェックファイルを保持するチェックファイル記憶手段として機能させ、
前記アプリケーションに入力データが送信された場合に、
前記コンピュータを、
入力された入力データと前記チェックファイル記憶手段に保持された前記チェック情報とを前記入力項目ごとに比較する比較手段、
前記比較手段が比較した結果に基づいて、前記入力データが設計上適正なデータであるかどうかを判定する判定手段、
前記判定手段が判定した結果に基づいて、対応する処理を実行する対応処理実行手段としてコンピュータを機能させる情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力されたデータがシステムの設計上適正なデータであるかどうかを判定する情報処理装置等に関する。
【背景技術】
【０００２】
クライアントから入力されたデータをチェックする技術として、以下に示す技術が知られている。
【０００３】
第１の技術として、クライアント側からの入力情報からデータを取り出し、チェックして格納するという一連の処理を、一元化、自動化することによって、効率良くＷｅｂシステムを開発することのできる技術が知られている（例えば、特許文献１参照）。この技術は、入力データに入力キーワードチェックパターン情報をＨＴＭＬ形式のデータに予め組み込み、クライアント側から送られてきた入力情報をサーバ側にて処理してシステムを構築する際に、システムの構築に必要なデータ項目に基づいて、前記入力情報からのデータ取り出し処理と、取り出したデータをチェックする処理と、チェックしたデータを所定の領域に格納する処理とを行うものである。
【０００４】
第２の技術として、プログラミングの知識のないユーザであっても、業務仕様の枠組みの中から、誤入力／誤登録を未然に防止可能な入力支援機能を有する複雑なウェブアプリケーションを容易に生成可能にし、ウェブアプリケーションの開発作業、業務仕様の変更に起因する変更保守作業を格段に軽減でき、開発期間を格段に短縮することができる技術が知られている（例えば、特許文献２参照）。この技術は、入出力テーブル内の複数のデータ項目の定義情報と前記各データ項目の属性情報に基づいて、コード生成部が、「前記各データ項目に対応するデータを前記各データ項目の属性に応じた入力形式で入力処理する項目表示プログラム」、「前記各データ項目に対応する入力データに対して前記各データ項目の属性に応じたチェック処理を行うデータチェックプログラム」、「前記各データ項目に対応するデータを前記各データ項目の属性に応じた出力形式で出力処理する入力データ整形表示プログラム」を生成する構成を特徴とするものである。
【０００５】
第３の技術として、バッファオーバーフローに対して、根本的な対処であるプログラムソースの修正や修正パッチの適用を迅速に行えるようにする技術が知られている（例えば、特許文献３参照）。この技術は、バッファオーバーフロー攻撃の発生を検知すると、プログラム開発者に提供する分析情報として、攻撃の対象となったバッファの存在する場所の情報と、そのバッファを確保した関数の情報とを抽出するとともに、そのバッファ確保からバッファオーバーフロー攻撃までの関数の呼び出し履歴の情報を抽出できる場合には、その情報を抽出する。この分析情報を受けて、プログラム開発者がプログラムを修正し対処情報を作成するので、既知分析情報記憶手段に分析情報に対応付ける形で対処情報を記憶しておき、抽出した分析情報が既知分析情報記憶手段が登録されている場合には、その分析情報に対応付けられる対処情報に基づいてバッファオーバーフロー攻撃に対する対処処理を実行するものである。
【０００６】
第４の技術として、プログラマに一切負担をかけずに、検出漏れなく、少ない誤検出で、バッファオーバーフロー脆弱性を検出する技術が知られている（例えば、特許文献４参照）。この技術は、解析対象となるプログラムから、確保された領域を示す領域式と、前記領域式が示す領域においてアクセスする位置を指定する指数式とを含む領域アクセス式を検出し、前記領域式が示す領域のサイズ式を検出し、前記領域アクセス式を含む命令を実行すると前記領域式が示す領域外へのアクセスとなるバッファオーバーフローが発生するバッファオーバーフロー条件を前記指数式と前記サイズ式とを用いて算出し、前記ソースプログラムの上流側に配置された命令から前記領域アクセス式を含む命令へ至るまでの命令の実行経路を特定し、前記実行経路上に配置された代入命令に基づき前記バッファオーバーフロー条件を前記実行経路の上流へ向けて遡及させ、前記バッファオーバーフロー条件の上流での表現を求めるものである。
【特許文献１】特許第３６２４２４８号公報
【特許文献２】特開２００５−５５９５１号公報
【特許文献３】特開２００６−５３７６０号公報
【特許文献４】特開２００６−３１３６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、第１の技術は、クライアント側で入力されたデータをチェックするために、入力データに入力キーワードチェックパターン情報を付加して送信するため、悪意のあるクライアントの場合、改竄が行われてしまうというリスクがあり、セキュリティ上の課題を有する。
【０００８】
また、第２の技術は、プログラムの生成に関しては、開発作業、業務仕様の変更に起因する変更保守作業を格段に軽減できるが、入力項目と属性ごとにチェックプログラムを生成しているためチェックプログラムの容量が大きくなってしまい、プログラム生成後にプログラム開発者がレビュー等を行う場合には作業に手間が掛かってしまうため、作業の軽減が不十分であるという課題を有する。
【０００９】
さらに、第３の技術は、バッファオーバーフローが発生した後に分析結果をプログラム開発者に提供し、プログラム開発者はその分析結果を踏まえてプログラムの修正を行うため、バッファオーバーフローの対応が後手に回ってしまい、被害が拡大してしまう可能性があるという課題を有する。
【００１０】
さらにまた、第４の技術はプログラムの解析が必要となるため、プログラムを解析するためのプログラムの開発に時間を要してしまい、作業工数が増えてしまうという課題を有する。
【００１１】
そこで、本発明は前記課題を解決するためになされたものであり、開発者の負担を軽減しつつ、入力項目のチェックを安全で迅速に行うことができる情報処理装置、情報処理方法、及び、情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本願に開示する情報処理装置は、アプリケーションのサービスが起動された場合に動作する、動的に文書を生成するための情報が記述され前記アプリケーションのサービスに対応した動的文書生成ファイルを読み込む読込手段と、読み込んだ前記動的文書生成ファイルに所定の形式に従って入力項目ごとにコメントとして記述されたチェック情報を取得するチェック情報取得手段と、取得した前記チェック情報をチェックファイルに書き込むチェック情報書込手段と、前記チェックファイルを保持するチェックファイル記憶手段とを備え、前記アプリケーションに入力データが送信された場合に動作する、入力された入力データと前記チェックファイル記憶手段に保持された前記チェック情報とを前記入力項目ごとに比較する比較手段と、前記比較手段が比較した結果に基づいて、前記入力データが設計上適正なデータであるかどうかを判定する判定手段と、前記判定手段が判定した結果に基づいて、対応する処理を実行する対応処理実行手段とを備えるものである。ここで、動的文書生成ファイルとは、例えばＪＳＰ（Java  Server  Pages:なお「Java」は登録商標である。）ファイルをいう。
【００１３】
このように、本願に開示する情報処理装置においては、動的文書生成ファイルに入力項目ごとにコメントとしてチェック情報が記述されており、そのチェック情報に基づいて入力データの適正を判定する判定手段を備えるため、管理者側で処理をクローズすることができ、ユーザによる改竄等のリスクを回避してセキュリティを保つことができるという効果を奏する。
【００１４】
また、動的文書生成ファイルにコメントとしてチェック内容を記述するだけで、入力項目ごとにチェックロジック等のプログラムを生成する必要がなくなるため、開発者の作業を大幅に軽減することができ、作業工数を削減することができるという効果を奏する。
【００１５】
さらに、チェック情報はコメントとして記述されるため、ファイル上のどの位置に記述しても良く、例えば、入力項目ごとにＪＳＰのコードとチェック情報を併記することで、視認性を向上させてレビューや保守、メンテナンス作業等を効率よく行うことができるという効果を奏する。
【００１６】
さらにまた、チェック情報はコメントとして記述されるため、動的文書生成ファイルを展開する際に余分なメモリの使用を抑えることができ、システムの資源を有効的に活用することができるという効果を奏する。
【００１７】
さらにまた、入力データの適正を判定した結果に応じて、対応する処理を実行する対応処理実行手段を備えるため、例えば、緊急性を要する処理が必要な場合には、迅速に対応することができ、緊急性を要しない場合は、後程じっくり対応することも可能となる。つまり、入力データに応じて臨機応変に対応することができるという効果を奏する。
【００１８】
なお、例えば、ユーザ端末から送信された入力データが不適正であり、緊急性を要する対応が必要な場合には、セッション自体を解放するような処理を行ってもよい。そうすることで被害の拡大を最小限に抑えることができる。
【００２０】
情報処理装置は、前記チェック情報に前記入力データのサイズを制限する情報、及び、文字コードの種別を制限する情報の少なくとも一の情報が含まれるものである。
なお、Ｗｅｂアプリケーションを利用するシステムにおいては、一般的に入力項目には文字数や文字コードが制限されている場合が多い。それにも関わらず文字数違反や文字コード違反のデータが入力された場合は、特殊なツールを利用した悪意のある攻撃であると見なすことができる。従って、上記チェック情報を含むことで、悪意のある攻撃を検出して、それに応じた処置（セッション解放等）を行うことができる。
【００２１】
情報処理装置は、前記入力データにクロスサイトスクリプティングが含まれる場合に、当該クロスサイトスクリプティングを無害化するＸＳＳ（Cross  Site  Scripting）無害化手段を備え、前記比較手段が、前記ＸＳＳ無害化手段にて無害化された結果に基づいて前記チェック情報に含まれる入力データのサイズを制限する情報又は入力データのサイズの情報を変更して比較を行うものである。
【００２２】
なお、チェック情報の文字数の制限値を変更する場合は、ＸＳＳの無害化により増えた文字数分を制限値に加算する処理を行い、入力データのサイズの値を変更させる場合は、ＸＳＳの無害化により増えた文字数分を入力データのサイズの値から減算する処理を行う。
【００２３】
情報処理装置は、前記入力項目ごとに処理種別を識別するためのキーワードが設定されて前記チェック情報に含まれており、前記比較手段が、操作された処理種別のキーワードが設定されている入力項目に入力された入力データについてのみ比較処理を行うものである。
【００２４】
情報処理装置は、前記動的文書生成ファイルに記述された入力項目に関する定義情報に基づいて、前記チェック情報を当該動的文書生成ファイルにコメントとして記述するチェック情報記述手段を備えるものである。
【００２５】
これまで、本発明を装置として示したが、所謂当業者であれば明らかであるように本発明を方法、及び、プログラムとして捉えることもできる。これら前記の発明の概要は、本発明に必須となる特徴を列挙したものではなく、これら複数の特徴のサブコンビネーションも発明となり得る。
【発明を実施するための最良の形態】
【００２６】
以下、本発明の実施の形態を説明する。本発明は多くの異なる形態で実施可能である。従って、本実施形態の記載内容のみで本発明を解釈すべきではない。また、本実施形態の全体を通して同じ要素には同じ符号を付けている。
【００２７】
以下の実施の形態では、主に装置について説明するが、所謂当業者であれば明らかな通り、本発明は方法、及び、コンピュータを動作させるためのプログラムとしても実施できる。また、本発明はハードウェア、ソフトウェア、または、ハードウェア及びソフトウェアの実施形態で実施可能である。プログラムは、ハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光記憶装置、または、磁気記憶装置等の任意のコンピュータ可読媒体に記録できる。さらに、プログラムはネットワークを介した他のコンピュータに記録することができる。
【００２８】
（本発明の第１の実施形態）
（１．構成と機能）
（１−１  ハードウェア構成）
図１は、本実施形態に係る情報処理装置のハードウェアの構成図である。情報処理装置１００は、ＣＰＵ(Central  Processing  Unit)１０１、ＲＡＭ(Random  Access  Memory)１０２、ＲＯＭ(Read  Only  Memory)１０３、フラッシュメモリ(Flash  memory)１０４、外部記憶装置であるＨＤ(Hard  disk)１０５、ＬＡＮ(Local  Area  Network)カード１０６、マウス１０７、キーボード１０８、ビデオカード１０９、このビデオカード１０９と電気的に接続する表示装置であるディスプレイ１０９ａ、サウンドカード１１０、このサウンドカード１１０と電気的に接続する音出力装置であるスピーカ１１０ａ及びフレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等の記憶媒体を読み書きするドライブ１１１からなる。
なお、上記ハードウェア構成はあくまで一例を示したものであり、構成要素の変更をすることができるのは当然である。
【００２９】
（１−２  モジュール構成と機能）
図２は、本実施形態に係る情報処理装置のモジュール構成図である。情報処理装置１００は、チェック情報抽出部２１０と、チェック処理部２２０と、ＪＳＰファイル２３０と、チェックファイル２４０とを備える。チェック情報抽出部２１０は、ＪＳＰファイル読込部２１１と、チェックファイル作成部２１２と、チェック情報取得部２１３と、チェック情報書込部２１４とを備え、チェック処理部２２０は、データ入力部２２１と、チェックパターン決定部２２２と、比較処理部２２３と、判定処理部２２４と、チェック結果処置部２２５とを備える。
【００３０】
ＪＳＰファイル読込部２１１は、ＪＳＰファイル２３０を読み込む処理を行う。ＪＳＰファイルは開発者により予め作成されており、所定の書式に従って、コメントとして入力項目ごとにチェック情報が記述されている。チェック情報の具体例として、例えば、入力項目のサイズチェックを行うためのサイズ制限値や入力項目に使用する文字コードを制限する情報等が含まれる。
【００３１】
チェックファイル作成部２１２は、チェック対象となるＪＳＰファイルに対応するチェックファイルを作成する処理を行う。具体的には、ＪＳＰファイル読込部２１１が読み込んだ情報からチェック対象となるＪＳＰファイルを特定する情報としてＪＳＰファイルのファイル名を取得し、そのファイル名に該当するチェックファイルがチェックファイル２４０に存在するかどうかを確認する。該当するチェックファイルが存在していれば何もしないが、該当するチェックファイルが存在していなければ、チェックファイルを作成する。
【００３２】
チェック情報取得部２１３は、ＪＳＰファイル読込部２１１が読み込んだ情報からチェック情報を抽出して取得する処理を行う。
チェック情報書込部２１４は、チェック情報取得部２１３が取得したチェック情報をチェックファイルに書き込む処理を行う。ここで、チェックファイルに既に書き込まれている項目については最新情報を優先して上書きする。
【００３３】
データ入力部２２１は、ユーザから入力された入力データを受け付ける処理を行う。
チェックパターン決定部２２２は、データ入力部２２１が受け付けた入力データに基づいて、チェック対象となる入力項目ごとに該当するチェック情報をチェックファイル２４０から抽出して決定する処理を行う。
【００３４】
比較処理部２２３は、データ入力部２２１が受け付けた入力データとチェックパターン決定部２２２が決定したチェック情報を入力項目ごとに比較する処理を行う。
判定処理部２２４は、比較処理部２２３が比較した結果に基づいて、入力データが設計上適正なデータであるかどうかを判定する処理を行う。設計上適正なデータかどうかの判定は、例えば、入力項目に入力できる文字数の制限を満たしているかどうかや、使用できる文字コードの制限を満たしているかどうかにより判定される。
【００３５】
チェック結果処置部２２５は、判定処理部２２４が判定した結果に応じた処置を決定して実行する処理を行う。例えば、判定結果が悪意のある攻撃であるような場合には、即座にセッションの解放を行ったり、入力ミスの場合には警告を表示するような処理を行う。
【００３６】
ＪＳＰファイル２３０は、Ｗｅｂページを生成してユーザの端末に表示するように動作させるためのコードが記述されたファイルである。本実施形態では、このＪＳＰファイルにコメントとして入力項目のチェック情報を所定の書式に従って記述する。チェック情報はコメントとして記述されるため、Ｗｅｂページの生成には影響を及ぼすことがない。また、コメントであるため、チェック情報によりメモリを消費することもない。また、所定の書式を簡略化すれば、開発者がチェック情報を容易に記述することも可能となる。
【００３７】
チェックファイル２４０は、ＪＳＰファイルに記述されたチェック情報が書き込まれたファイルである。ＪＳＰファイルからチェック情報の箇所のみを抽出して記述されている。このチェックファイル２４０は、チェック対象となるＪＳＰファイルごとに作成される。
【００３８】
なお、チェックファイル２４０、チェックファイル作成部２１２、チェック情報書込部２１４、及び、チェックパターン決定部２２２は必ずしも備える構成としなくてもよい。その場合、チェック情報取得部２１３が取得した情報とデータ入力部２２１が受け付けた入力データとを比較処理部２２３が比較するようにしてもよい。
【００３９】
（２．動作）
（２−１  情報処理装置の動作概要）
以下に、本実施形態に係る情報処理装置の動作を示す。図３は、本実施形態に係る情報処理装置の動作を模式的に示した図である。装置起動時にＪＳＰファイルをオープンし、チェック対象となるＪＳＰのファイル名を取得し、そのファイル名に該当するチェックファイルの存在を確認する。チェックファイルがない場合は新たに作成する。次に、ＪＳＰファイルから入力項目ごとのチェック情報を取得し、該当するチェックファイルに書き込む。ここまでが装置起動時に実行される処理であり、チェック情報抽出部２１０により実行される処理である。
【００４０】
次に、入力データのチェックを行う。仮に、図３に示すような不正大量データが入力されたとする。入力データは項目ごとにチェックファイルに基づいてチェックされる。ここでは、入力項目Ａに不正大量データが含まれているとすると、入力項目Ａが入力されると共に、チェックファイルから入力項目Ａのチェック情報が読み出される。そして、入力データとチェック情報が比較され、大量不正データによる攻撃を受けたと判定される。
なお、具体的な判定方法については後述する。
【００４１】
大量不正データによる攻撃は、メモリの枯渇を招きシステムに多大な損害を与える可能性が高いため、メモリ領域のセッション情報１（ここでは、セッション１から大量不正データが送信されたとする）を即座に解放して、メモリの枯渇を防止する。正常なデータが入力されて送信された場合は、継続して業務処理等の通常の処理を行う。
【００４２】
（２−２  情報処理装置の動作詳細）
上記処理動作の詳細をフローチャートを用いて説明する。図４は、チェック情報抽出部の動作を示すフローチャートであり、図５は、チェック処理部の動作を示すフローチャートである。
まず、チェック情報抽出部２１０の動作について説明する。Ｗｅｂアプリケーションのサービスが起動され、指定したフォルダ配下の全ＪＳＰファイル名を取得する（ステップＳ４０１）。この時、サブフォルダも含めてＪＳＰファイルを検索する。取得したファイルを１つずつオープンし（ステップＳ４０２）、ファイルの１行目に記述されているチェック対象のＪＳＰ名を取得する（ステップＳ４０３）。チェック対象のＪＳＰ名のチェックファイルが存在するかどうかを判定し（ステップＳ４０４）、存在しなければ取得したＪＳＰ名でチェックファイルを作成する（ステップＳ４０５）。ＪＳＰファイル内にコメントで記述された入力項目ごとのチェック情報を取得し（ステップＳ４０６）、取得したチェック情報をチェックファイルに書き込む（ステップＳ４０７）。全てのファイルについてチェックファイルの作成処理が終了したら、Ｗｅｂアプリケーションのサービス起動を終了する。
【００４３】
次に、チェック処理部２２０の処理について説明する。チェック処理が開始されると、Ｗｅｂアプリケーションへ送信された入力データを受け付ける（ステップＳ５０１）。処理対象となるＪＳＰ名より、利用するチェックファイルを決定し（ステップＳ５０２）、決定されたチェックファイルをオープンする（ステップＳ５０３）。チェックファイルに書き込まれているチェック対象項目を１つずつチェックする（ステップＳ５０４）。以降の処理は、全てのチェック項目について処理が完了するまで繰り返して行われる。
【００４４】
入力データが制限容量を超えているかどうかを判定し（ステップＳ５０５）、制限容量を超えていれば、入力元のクライアントとのセッション情報、変数値等を全て解放して（ステップＳ５０６）、チェック処理を終了する。制限容量を超えていなければ入力データが適正なデータであるかどうかが判定され（ステップＳ５０７）、適正なデータでなければサニタイズ処理又は警告（注意、エラーも含む）処理を行う（ステップＳ５０８）。業務処理用のデータとして部品へ値をセットし、全てのチェック対象項目について処理が完了したら、チェック処理を終了する。
【００４５】
（２−３  チェック情報の抽出とチェック処理の関係）
ここでは、上記チェック情報を抽出する処理とチェック処理との関係についてさらに詳細に説明する。図６は、チェック情報抽出部とチェック処理部との処理関係を示す図である。図６において、ＪＳＰファイル２３０は、ｓａｍｐｌｅ０１．ｊｓｐ、ｓａｍｐｌｅ０２．ｊｓｐ、及び、ｓａｍｐｌｅ０２＿１．ｊｓｐを有する。ｓａｍｐｌｅ０２＿１．ｊｓｐはｓａｍｐｌｅ０２．ｊｓｐのサブ画面に該当するＪＳＰファイルであり、チェック内容が重複している入力項目が存在している。各ＪＳＰファイルを読み込み、各ＪＳＰのファイルの１行目から、［＠＠ｐａｃｋに付与した名前］．ｐａｔｔｅｒｎ（例えば、ｓａｍｐ０ｌｅ１．ｐａｔｔｅｒｎ）という名前のチェックファイルが存在するかどうかを確認し、存在していなければｓａｍｐｌｅ０１．ｐａｔｔｅｒｎという名前のチェックファイルを生成する。
【００４６】
チェックファイル２１４が存在している場合、又は生成されたら、ＪＳＰファイルからチェック情報を取得し、チェックファイルに書き込む。ここで、チェック情報は、「＜％−−」から「−−％＞」で囲まれた箇所である。これは、ＪＳＰファイルのコード上ではコメントを意味し、ＪＳＰファイルの動作には何も影響を与えず、開発者が自由に書き込むことができる書式である。従って、図に示すように入力項目に関するロジックとチェック情報とを併記して記述することで、開発者の視認性を向上させることも可能である。取得したチェック情報（Ｔｘｔ＿Ｄａｔａ０１＝ｂｙｔｅ￥：１０；Ｎ；）はｓａｍｐｌｅ０１．ｐａｔｔｅｒｎファイルに書き書き込まれチェックファイルが用意される。
【００４７】
ｓａｍｐｌｅ０２．ｊｓｐ、ｓａｍｐｌｅ０２＿１．ｊｓｐについても同様の処理が行われ、ｓａｍｐｌｅ０２．ｐａｔｔｅｒｎという名前のチェックファイルが用意される。この時、ｓａｍｐｌｅ０２．ｊｓｐとｓａｍｐｌｅ０２＿１．ｊｓｐのいずれにもＴｘｔ＿Ｄａｔａ０３についてのチェック情報が含まれている。このような場合は、ｓａｍｐｌｅ０２．ｐａｔｔｅｒｎには追記／上書きされる。つまり後に処理された内容でチェックファイルが用意される。
【００４８】
なお、ｓａｍｐｌｅ０２．ｊｓｐとｓａｍｐｌｅ０２＿１．ｊｓｐのチェックファイルを同一のチェックファイルとしたが、それぞれ個別にチェックファイルを用意するようにしてもよい。
【００４９】
また、同一のチェック情報が存在する場合に、後処理の内容で追加／上書きするようにしたが、チェック内容が厳しい方の情報（例えば、制限容量が１００バイトと８０バイトであれば８０バイト、文字コードが全角＋半角と半角のみであれば半角のみ）を優先してチェックファイルに書き込むようにしてもよい。
さらに、ファイルの更新日時に基づいて、最新の更新日時のファイルに記述されたチェック情報を優先してチェックファイルに書き込むようにしてもよい。
【００５０】
このようにして生成されたチェックファイルを利用してチェック処理が行われる（図右端のフロー）。ｓａｍｐｌｅ０１．ｊｓｐのＷｅｂ画面で値が入力されてｓｕｂｍｉｔされると、入力データに基づいてｓａｍｐｌｅ０１．ｐａｔｔｅｒｎファイルが読み込まれ、そのチェック情報に基づいてチェック処理が行われる。ここでは、Ｔｘｔ＿Ｄａｔａ０１が１０バイト以内、Ｔｘｔ＿Ｄａｔａ０２が４バイト以内であるかどうかがチェックされる。超えている場合は不正と見なしてセッションを終了する。バイト数のチェックをクリアした場合は、必要に応じて文字コードのチェック、ＸＳＳのチェックが行われる。ここでは、Ｔｘｔ＿Ｄａｔａ０１が全角のみかどうか、Ｔｘｔ＿Ｄａｔａ０２が半角数値のみかどうか、それぞれにＸＳＳが含まれているかどうかがチェックされる。違反していれば、サニタイズ処理や警告メッセージ等が表示される。ｓａｍｐｌｅ０２．ｊｓｐ、ｓａｍｐｌｅ０２＿１．ｊｓｐのファイルについても同様のチェックが行われる。全ての入力データがチェックをクリアしたら業務処理等の内部処理に移行する。
【００５１】
このように、本実施形態に係る情報処理装置によれば、ＪＳＰファイルに入力項目ごとにコメントとしてチェック情報が記述されており、そのチェック情報に基づいて入力データの適正を判定する判定手段を備えるため、管理者側で処理をクローズすることができ、ユーザによる改竄等のリスクを回避してセキュリティを保つことができる。
【００５２】
また、ＪＳＰファイルにコメントとしてチェック内容を記述するだけで、入力項目ごとにチェックロジック等のプログラムを生成する必要がなくなるため、開発者の作業を大幅に軽減することができ、作業工数を削減することができる。
【００５３】
さらに、チェック情報はコメントとして記述されるため、ファイル上のどの位置に記述しても良く、入力項目ごとにＪＳＰのコードとチェック情報を併記することで、視認性を向上させてレビューや保守、メンテナンス作業等を効率よく行うことができる。
【００５４】
さらにまた、チェック情報はコメントとして記述されるため、ＪＳＰファイルを展開する際に余分なメモリの使用を抑えることができ、システムの資源を有効的に活用することができる。
【００５５】
さらにまた、入力データの適正を判定した結果に応じて、対応する処理を実行する対応処理実行手段を備えるため、例えば、緊急性を要する処理が必要な場合には、セッションを解放する等して迅速に対応することができ、緊急性を要しない場合は、後程じっくり対応することも可能となる。つまり、入力データに応じて臨機応変に対応することができる。
【００５６】
さらにまた、チェック情報取得部２１３が取得したチェック情報をチェックファイル２４０が保持するため、入力データをチェックする際に、ＪＳＰファイルの中身を全て参照する必要がなく、チェックファイル２４０に格納されている情報のみを参照すればよく、処理時間を短縮することができる。特に、ＪＳＰファイルのファイルサイズが大きい場合やコメント以外のコードが大量に記述されている場合には、大きな効果となり得る。
【００５７】
さらにまた、入力データのサイズを制限する情報及び文字コードの種別を制限する情報の少なくとも一の情報に基づいて入力データをチェックするため、ツールを用いたバッファオーバーフロー等の攻撃を検出することができ、セキュリティを強化することができる。
【００５８】
（本発明の第２の実施形態）
以下に、本発明の第２の実施形態について説明するが、ここでは、第１の実施形態を前提にしており、第１の実施形態と重複する部分については説明を省略する。
（１．構成と機能）
図７は、本実施形態に係る情報処理装置のモジュール構成図である。第１の実施形態と異なる点は、比較処理部２２３が、ＸＳＳ無害化処理部２２３ａと情報変更処理部２２３ｂと比較部２２３ｃとを備える点である。
【００５９】
ＸＳＳ無害化処理部２２３ａは、入力データにＸＳＳが含まれている場合に、ＸＳＳをサニタイズする処理を行う。具体的には、「＜」、「＆」等のＨＴＭＬ上の制御コードが入力データに含まれる場合に、Ｗｅｂアプリケーションに害を及ぼさないように、予め定められた他の文字に置き換える処理を行う。例えば、「＜」は「＆ｌｔ；」に置き換えられる。
【００６０】
情報変更処理部２２３ｂは、ＸＳＳ無害化処理部２２３ａがサニタイズした結果に応じて、制限容量の大きさ又は入力データの容量を変更する処理を行う。ＸＳＳ無害化処理部２２３ａがサニタイズすることで、入力データの文字列のサイズが大きくなる場合がある。上記の例で言えば、「＜」を「＆ｌｔ；」に置き換えたら、文字数が３文字増える。そのような場合に、制限容量を超えていても正常な入力データとして判定するために情報を増減させる。
【００６１】
なお、チェック情報の文字数の制限値を変更する場合は、ＸＳＳの無害化により増えた文字数分を制限値に加算する処理を行い、入力データのサイズの値を変更させる場合は、ＸＳＳの無害化により増えた文字数分を入力データのサイズの値から減算する処理を行う。
【００６２】
比較部２２３ｃは、情報変更処理部２２３ｂが変更した情報に基づいて、入力データとチェック情報を比較する処理を行う。
その他の構成要素については、第１の実施形態と同様であるため説明は省略する。
【００６３】
（２．動作）
以下に、本実施形態に係る情報処理装置の動作について説明する。第１の実施形態と異なるのはチェック処理部２２０の動作である。チェック情報抽出部２１０の動作については第１の実施形態と同様であるため説明は省略する。
【００６４】
図８は、チェック処理部２２０の動作を示すフローチャートである。ステップＳ５０１からステップＳ５０４までの処理は、第１の実施形態と同じであるため説明は省略する。ステップＳ５０４でループ処理に入る。まず、入力データにＸＳＳが含まれるかどうかが判定され（ステップＳ５０４ａ）、含まれていなければステップＳ５０５の処理に進む。含まれていればサニタイズ処理を行い（ステップＳ５０４ｂ）、チェック情報の制限容量又は入力データの容量を変更して（ステップＳ５０４ｃ）、ステップＳ５０５の処理に進む。
【００６５】
ステップＳ５０５では、入力データが制限容量を超えているかどうかを判定、制限容量を超えていれば、入力元のクライアントとのセッション情報、変数値等を全て解放して（ステップＳ５０６）、チェック処理を終了する。制限容量を超えていなければ入力データが適正なデータであるかどうかが判定され（ステップＳ５０７）、適正なデータでなければ警告（注意、エラーも含む）処理を行う（ステップＳ５０８）。業務処理用のデータとして部品へ値をセットし、全てのチェック対象項目について処理が完了したら、チェック処理を終了する。なお、ステップＳ５０５以降の処理で第１の実施形態と異なるのは、ステップＳ５０８ａにてサニタイズ処理を行わない点である。これは、ステップＳ５０４ｂにて既にサニタイズ処理を行っているためである。
【００６６】
このように、本実施形態に係る情報処理装置によれば、ＸＳＳを無害化するＸＳＳ無害化処理部２２３ａを備えるため、ＸＳＳを無害化することができると共に、無害することで入力データの文字数が制限値を超えてしまった場合であっても、チェック情報の文字数の制限値又は入力データのサイズの値を変更することで、正常な入力データとして判定を行うことができ、システムの動作に矛盾（正常なデータであるにも関わらずバッファオーバーフローであると判定してしまう状況）が生じることを防止することができる。
【００６７】
（本発明の第３の実施形態）
以下に、本発明の第３の実施形態について説明するが、ここでは、第１の実施形態又は第２の実施形態を前提にしており、第１の実施形態又は第２の実施形態と重複する部分については説明を省略する。
【００６８】
本実施形態に係る情報処理装置の構成及び動作は、第１の実施形態又は第２の実施形態と同じであるが、入力データの構成及びチェックファイルの構成が異なる。図９は、本実施形態に係る情報処理装置の処理を示す図である。図９において、ｓａｍｐｌｅ０１．ｊｓｐは、画面９０１を生成するファイルであるとする。画面９０１は、３種類の処理（登録、更新、削除）を行う画面である。登録処理及び更新処理の場合は、入力データの全てをチェックする必要があり、削除処理の場合は、コードのみをチェックすればよい。つまり、処理の種別によりチェック対象となる入力項目が変わるため、不要なチェック処理を行わないように、ＪＳＰファイル及びチェックファイルの内容を追加する。
【００６９】
具体的には、入力項目ごとに処理種別を識別するためのキーワードを設定し、そのキーワードに応じてチェック処理を行う。図９においては、Ｔｘｔ＿Ｄａｔａ０１については、登録、更新及び削除の全ての場合にチェック処理を行う必要があるため、特にキーワードは設定しない。Ｔｘｔ＿Ｄａｔａ０２については、登録及び更新の場合にチェック処理を行う必要があるため「ＩＮＳＥＲＴ」や「ＵＰＤＡＴＥ」といったキーワードをチェックファイル中に記述しておく。そして、比較処理の際には、画面９０１でのｓｕｂｍｉｔ情報から、３つの処理のうち、いずれの処理が実行されたかを判定して、その処理に該当する入力項目のみをチェックファイルから読み出してチェック処理を行う。
【００７０】
このように、本実施形態に係る情報処理装置によれば、処理の種別に応じて、対象となる入力データ及びチェック情報を選択して処理を行うため、必要なチェック処理のみを実行することで、処理を効率的に行うことができる。
【００７１】
（本発明の第４の実施形態）
以下に、本発明の第４の実施形態について説明するが、ここでは、第１の実施形態、第２の実施形態又は第３の実施形態を前提にしており、第１の実施形態、第２の実施形態又は第３の実施形態と重複する部分については説明を省略する。
【００７２】
図１０は、本実施形態に係る情報処理装置のモジュール構成図である。第１の実施形態と異なる点は、チェック情報記述部１０１０を備える点である。
チェック情報記述部１０１０は、ＪＳＰファイル２１３に記述されているプログラムコードに基づいてチェック情報を生成して記述する処理を行う。ＪＳＰファイルには、所定の規則に基づいて入力項目に関する情報が項目ごとに記述されている。例えば、図６におけるｓａｍｐｌｅ０１．ｊｓｐファイルには入力項目としてＴｘｔ＿Ｄａｔａ０１とＴｘｔ＿Ｄａｔａ０２という名称で定義された入力項目の情報が記述されている。それぞれの入力項目は、文字タイプ、サイズ、最大文字長等の情報が定義されて記述されている。これらの情報を解析することで、ＪＳＰファイルのコメントとしてのチェック情報を生成して記述することができる。
【００７３】
このように、本実施形態に係る情報処理装置によれば、ＪＳＰファイルに記述されたコードに基づいて前記チェック情報を生成するため、開発者の負担を軽減して作業工数を削減できる。
【００７４】
（その他の実施形態）
図１１は、本実施形態に係る情報処理装置の活用事例を示す図である。情報処理装置１００の処理は、Ｗｅｂアプリフレームワークにおける事前処理の中のＷｅｂセキュリティ対策処理に該当する。このように、フレームワークの中で事前に入力データのセキュリティチェックを行うことで、業務アプリケーションにおけるデータのチェックロジックを作成する必要がなくなるため、業務アプリケーションの開発者の作業工数の削減を実現することができる。
【００７５】
以上の前記各実施形態により本発明を説明したが、本発明の技術的範囲は実施形態に記載の範囲には限定されず、これら各実施形態に多様な変更又は改良を加えることが可能である。そして、かような変更又は改良を加えた実施の形態も本発明の技術的範囲に含まれる。このことは、特許請求の範囲及び課題を解決する手段からも明らかなことである。
【図面の簡単な説明】
【００７６】
【図１】第１の実施形態に係る情報処理装置のハードウェアの構成図である。
【図２】第１の実施形態に係る情報処理装置のモジュール構成図である。
【図３】第１の実施形態に係る情報処理装置の動作を模式的に示した図である。
【図４】第１の実施形態に係る情報処理装置のチェック情報抽出部の動作を示すフローチャートである。
【図５】第１の実施形態に係る情報処理装置のチェック処理部の動作を示すフローチャートである。
【図６】第１の実施形態に係る情報処理装置のチェック情報抽出部とチェック処理部との処理関係を示す図である。
【図７】第２の実施形態に係る情報処理装置のモジュール構成図である。
【図８】第２の実施形態に係る情報処理装置のチェック処理部の動作を示すフローチャートである。
【図９】第３の実施形態に係る情報処理装置の処理を示す図である
【図１０】第４の実施形態に係る情報処理装置のモジュール構成図である。
【図１１】その他の実施形態に係る情報処理装置の活用事例を示す図である。
【符号の説明】
【００７７】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ＲＯＭ
１０４  フラッシュメモリ
１０５  ＨＤ
１０６  ＬＡＮカード
１０７  マウス
１０８  キーボード
１０９  ビデオカード
１０９ａ  ディスプレイ
１１０  サウンドカード
１１０ａ  スピーカ
１１１  ドライブ
２１０  チェック情報抽出部
２１１  ＪＳＰファイル読込部
２１２  チェックファイル作成部
２１３  チェック情報取得部
２１４  チェック情報書込部
２２０  チェック処理部
２２１  データ入力部
２２２  チェックパターン決定部
２２３  比較処理部
２２３ａ  ＸＳＳ無害化処理部
２２３ｂ  情報変更処理部
２２３ｃ  比較部
２２４  判定処理部
２２５  チェック結果対応部
２３０  ＪＳＰファイル
２４０  チェックファイル
１０１０  チェック情報記述部
【図１】
0005003557.tif 000002
【図２】
0005003557.tif 000003
【図３】
0005003557.tif 000004
【図４】
0005003557.tif 000005
【図５】
0005003557.tif 000006
【図６】
0005003557.tif 000007
【図７】
0005003557.tif 000008
【図８】
0005003557.tif 000009
【図９】
0005003557.tif 000010
【図１０】
0005003557.tif 000011
【図１１】
0005003557.tif 000012