(57)【要約】【課題】出力先に応じた漏れのないエスケープ処理を容易に可能とする。【解決手段】中立文字変換情報記憶手段１ａは、特殊文字を各サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する。安全文字変換情報記憶手段１ｂは、中立文字を第２段サービス提供手段１ｆで文字参照に用いられる１文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する。第１の変換手段１ｃは、中立文字変換情報記憶手段１ａに記憶された中立文字変換情報に基づき、データに含まれる特殊文字を中立文字に変換し、第１段サービス提供手段１ｄに出力する。第２の変換手段１ｅは、第１段サービス提供手段１ｄの処理後データを受け付けると、安全文字変換情報記憶手段１ｂに記憶された安全文字変換情報に基づき、処理後データに含まれる中立文字の少なくとも一部を安全文字列に変換し、第２段サービス提供手段１ｆに出力する。【選択図】図１
2009301456.tif 000002
【特許請求の範囲】
【請求項１】
第１段サービス提供手段および前記第１段サービス提供手段の要求に応じた処理を行う第２段サービス提供手段の処理に用いるデータを変換する処理をコンピュータに実行させるデータ変換プログラムにおいて、
前記コンピュータを、
特殊文字を前記第１段サービス提供手段および前記第２段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段、
前記中立文字を前記第２段サービス提供手段で文字参照に用いられる１文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段、
前記データが入力されると、前記中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて前記データに含まれる前記特殊文字を前記中立文字に変換した第１の変換データを生成し、当該第１の変換データを前記第１段サービス提供手段に出力する第１の変換手段、
前記第１段サービス提供手段の前記第１の変換データに対する処理により生成される処理後データが前記第１段サービス提供手段から出力されると、前記安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて前記処理後データに含まれる前記中立文字の少なくとも一部を前記安全文字列に変換した第２の変換データを生成し、前記第２段サービス提供手段に出力する第２の変換手段、
として機能させることを特徴とするデータ変換プログラム。
【請求項２】
前記安全文字変換情報には、前記中立文字と前記安全文字列との対応付けが前記処理後データのデータ構造を構成する構成要素毎に設定されており、
前記第２の変換手段は、前記処理後データに含まれる前記中立文字が属する前記構成要素を判定し、前記安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて、前記中立文字の少なくとも一部を、当該中立文字が属する構成要素に応じた前記安全文字列に変換する、
ことを特徴とする請求項１記載のデータ変換プログラム。
【請求項３】
前記中立文字のうち、復元可能な前記特殊文字を定義した特殊文字復元情報を記憶する特殊文字復元情報記憶手段を更に有し、
前記第１の変換手段は、前記特殊文字復元情報記憶手段に記憶された前記特殊文字復元情報および前記中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて、前記第１の変換データに含まれる前記中立文字の少なくとも一部を、当該中立文字に対応する前記特殊文字に復元して、前記第１段サービス提供手段に出力する、
ことを特徴とする請求項１記載のデータ変換プログラム。
【請求項４】
前記中立文字は、文字フォントが未定義の文字コードで表される文字であることを特徴とする請求項１記載のデータ変換プログラム。
【請求項５】
前記安全文字列は、前記第２段サービス提供手段の処理に応じて前記特殊文字をエスケープするエスケープ文字を含むことを特徴とする請求項１記載のデータ変換プログラム。
【請求項６】
第１段サービス提供手段および前記第１段サービス提供手段の要求に応じた処理を行う第２段サービス提供手段の処理に用いるデータを変換するデータ変換装置において、
特殊文字を前記第１段サービス提供手段および前記第２段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段と、
前記中立文字を前記第２段サービス提供手段で文字参照に用いられる１文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段と、
前記データが入力されると、前記中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて前記データに含まれる前記特殊文字を前記中立文字に変換した第１の変換データを生成し、当該第１の変換データを前記第１段サービス提供手段に出力する第１の変換手段と、
前記第１段サービス提供手段の前記第１の変換データに対する処理により生成される処理後データが前記第１段サービス提供手段から出力されると、前記安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて前記処理後データに含まれる前記中立文字の少なくとも一部を前記安全文字列に変換した第２の変換データを生成し、前記第２段サービス提供手段に出力する第２の変換手段と、
を有することを特徴とするデータ変換装置。
【請求項７】
第１段サービス提供手段および前記第１段サービス提供手段の要求に応じた処理を行う第２段サービス提供手段の処理に用いるデータを変換するデータ変換装置のデータ変換方法において、
第１の変換手段が、前記データが入力されると、特殊文字を前記第１段サービス提供手段および前記第２段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて前記データに含まれる前記特殊文字を前記中立文字に変換した第１の変換データを生成して、当該第１の変換データを前記第１段サービス提供手段に出力し、
第２の変換手段が、前記第１段サービス提供手段の前記第１の変換データに対する処理により生成される処理後データが前記第１段サービス提供手段から出力されると、前記中立文字を前記第２段サービス提供手段で文字参照に用いられる１文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて前記処理後データに含まれる前記中立文字の少なくとも一部を前記安全文字列に変換した第２の変換データを生成して、前記第２段サービス提供手段に出力する、
ことを特徴とするデータ変換方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ変換プログラム、データ変換装置およびデータ変換方法に関し、特に、サービス提供手段の処理に用いるデータを変換するデータ変換プログラム、データ変換装置およびデータ変換方法に関する。
【背景技術】
【０００２】
従来、インターネット等のネットワークを介して、サーバがクライアントに様々なサービスを提供するシステムが利用されている。このようなシステムでは、サーバとして、例えば、ウェブアプリケーションを実行するウェブサーバが用いられる。ウェブアプリケーションは、ＨＴＴＰ（HyperText Transfer Protocol）により、ＨＴＭＬ（HyperText Markup Language）等で記述されたウェブページをクライアントに送信し、複数のサービスに関して統一的なインタフェースをクライアントに提供する。また、ウェブアプリケーションは、クライアントから受信したリクエストに応じた処理を行い、そのレスポンスをクライアントに送信する。
【０００３】
クライアントから送信されるリクエストには、クライアントの情報を示すパラメータ（例えば、ＣｏｏｋｉｅやＰＯＳＴ値等）が含まれる。このパラメータは、ウェブアプリケーションの処理に利用されたり、ウェブアプリケーションが更に連携する他システムに対して送信する命令に利用されたりする。ウェブアプリケーションと連携する他システムとしては、例えば、データベース（ＤＢ：DataBase）システムがある。ウェブアプリケーションは、クライアントからの処理に応じてデータベースにアクセスするためのＳＱＬ（Structured Query Language）文を生成する。また、ウェブアプリケーションは、クライアントからのリクエストに応じた処理の結果を、ＨＴＭＬ文等のレスポンスによりクライアントのブラウザに送信する。
【０００４】
ここで、ウェブアプリケーションが生成するブラウザへのレスポンスやＳＱＬ文等の命令には、クライアントから送信されるリクエストに含まれるパラメータをそのまま含むことが多い。このため、パラメータに不正なスクリプトやＳＱＬ文等の命令が含まれていると、クライアントのブラウザやデータベースで想定されていない動作が引き起こされる可能性がある。この問題を故意に利用した攻撃手法は、例えば、クロスサイトスクリプティング（ＸＳＳ：Cross Site Scripting）やＳＱＬインジェクションとして知られている。
【０００５】
クロスサイトスクリプティングとは、ウェブアプリケーションが入力されたパラメータに含まれる不正スクリプトをそのままレスポンスのＨＴＭＬ文に含めてクライアントに送信し、ブラウザで不正スクリプトが実行されることで引き起こされる攻撃である。この攻撃を受けたクライアントは、入力した個人情報やＣｏｏｋｉｅを第３者に盗み取られたり、なりすましの被害を受けたりする可能性がある。
【０００６】
また、ＳＱＬインジェクションとは、ウェブアプリケーションが入力されたパラメータに含まれる不正な命令をそのままＳＱＬ文に含めてデータベースシステムに送信し、データベースシステムで不正な命令が実行されることで引き起こされる攻撃である。この攻撃を受けると、データベースに不正にアクセスされ、登録された情報の漏洩や改ざん等の被害を受ける可能性がある。
【０００７】
そこで、このような攻撃に対し、十分なセキュリティ対策を講じて、システム利用の安全性を確保することが求められている。そして、このために、パラメータに含まれる不正な命令となりうる制御文字を正しくエスケープ処理する方法が用いられている。
【０００８】
この方法として、クライアントとウェブサーバとの間でリクエストを仲介するウェブアプリケーションファイアウォール（ＷＡＦ：Web Application Firewall）を設ける方法が知られている。ウェブアプリケーションファイアウォールを用いると、リクエストに含まれるパラメータを検査し、攻撃とみなされる不正な文字が含まれる場合には、該当の文字をエスケープ処理したり、リクエストを拒絶したりして、不正な文字をウェブサーバの前段で排除することができる。しかし、ウェブアプリケーションファイアウォールでは、ウェブサーバの前段でリクエストを判定するために、攻撃手法毎での対策が難しいという問題がある。例えば、クロスサイトスクリプティングやＳＱＬインジェクション等を同一の設定できめ細かく防止しようとすると、一方の出力先にとっては正常なリクエストも拒絶の対象になってしまい、不便な場合がある。
【０００９】
これに対し、クロスサイトスクリプティングやＳＱＬインジェクション等の攻撃毎に検査対象の文字を予め登録し、ＨＴＭＬ文やＳＱＬ文等の出力先に応じて必要な検査対象の文字を読み出して、出力先毎にきめ細かな検査およびエスケープ処理を可能とする方法が知られている（例えば、特許文献１，２参照）。
【００１０】
また、出力先に応じた適切なエスケープ処理を設定するために、ウェブアプリケーションへのリクエストに検査用のトレース値を挿入して送信し、レスポンスに含まれるトレース値からパラメータの出力先を予め検査する方法も知られている（例えば、特許文献３，４参照）。
【００１１】
また、ＳＱＬインジェクションに対して、ウェブアプリケーションがＳＱＬ文における命令を暗号化して生成し、データベースへのアクセスの前にプロキシサーバで復号する方法も知られている（例えば、非特許文献１参照）。この方法を用いると、リクエストに含まれるパラメータに不正なＳＱＬ命令が存在していたとしても、正しく暗号化されていなければＳＱＬ命令として復号されることはないため、ＳＱＬインジェクションによる攻撃を防止することができる。
【００１２】
更に、データベースには暗号化した情報を登録し、ウェブアプリケーションがクライアントからのリクエストに含まれるパラメータ部分を暗号化した状態でＳＱＬ文を生成し、データベースにアクセスする方法も知られている（例えば、非特許文献２参照）。この方法を用いると、パラメータ部分に不正なＳＱＬ文が含まれていてもＳＱＬ実行時には暗号化された文字列としか認識されないため、攻撃者による不正なＳＱＬ文の実行を防止することができる。
【特許文献１】特開２００７−０４７８８４号公報
【特許文献２】特開２００４−５３３６７６号公報
【特許文献３】特開２００４−１６４６１７号公報
【特許文献４】特開２００７−００４６８５号公報
【非特許文献１】S.W.Boyd and A.D.Keromytis, "SQLrand : Preventing SQL Injection Attacks", the 2nd Applied Cryptography and Network Security (ACNS) Conference, 2004-06.
【非特許文献２】長野文昭、外２名、「ユーザの入力値の暗号化によるＳＱＬインジェクション攻撃防御手法」、コンピュータセキュリティシンポジウム２００６（ＣＳＳ２００６）、社団法人情報処理学会、2006年10月
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかし、上記特許文献１〜４に記載の方法では、ＨＴＭＬ文やＳＱＬ文等の複数の出力先に応じてエスケープ処理の対象とする文字を網羅的に設定する必要がある。このため、設定に漏れが生じ易く、漏れた設定によって攻撃を受ける可能性がある。
【００１４】
更に、上記非特許文献１，２に記載の方法では、暗号化された命令文を復号するためのプロキシサーバの設置やデータベースの登録情報の暗号化等、導入におけるシステムへの影響が大きいという問題がある。また、暗号化・復号のための鍵を管理する必要があり、この鍵を盗み取られてしまうと、第３者に不正にデータベースにアクセスされてしまうという問題がある。このように、暗号化技術を利用すると、サーバ管理者にかかる負担が過大となる。そのため、サーバ管理者への負担が少なくてすむエスケープ処理技術を用いて、ＳＱＬインジェクション攻撃等からの高い安全性を確保する技術が求められている。
【００１５】
本件はこのような点に鑑みてなされたものであり、出力先に応じた漏れのないエスケープ処理を容易に可能とするデータ変換プログラム、データ変換装置およびデータ変換方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記課題を解決するために、第１段サービス提供手段および第１段サービス提供手段の要求に応じた処理を行う第２段サービス提供手段の処理に用いるデータを変換する処理をコンピュータに実行させるデータ変換プログラムが提供される。このデータ変換プログラムを実行するコンピュータは、中立文字変換情報記憶手段、安全文字変換情報記憶手段、第１の変換手段および第２の変換手段を有する。中立文字変換情報記憶手段は、特殊文字を第１段サービス提供手段および第２段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する。安全文字変換情報記憶手段は、中立文字を第２段サービス提供手段で文字参照に用いられる１文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する。第１の変換手段は、データが入力されると、中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいてデータに含まれる特殊文字を中立文字に変換した第１の変換データを生成し、この第１の変換データを第１段サービス提供手段に出力する。第２の変換手段は、第１段サービス提供手段の第１の変換データに対する処理により生成される処理後データが第１段サービス提供手段から出力されると、安全文字変換情報記憶手段に記憶された安全文字変換情報に基づいて処理後データに含まれる中立文字の少なくとも一部を安全文字列に変換した第２の変換データを生成し、第２段サービス提供手段に出力する。
【００１７】
このようなデータ変換プログラムを実行するコンピュータによれば、第１の変換手段により、データが入力されると、特殊文字を第１段サービス提供手段および第２段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて、データに含まれる特殊文字を中立文字に変換した第１の変換データが生成され、この第１の変換データが第１段サービス提供手段に出力される。そして、第２の変換手段により、第１段サービス提供手段の第１の変換データに対する処理により生成される処理後データが第１段サービス提供手段から出力されると、中立文字を第２段サービス提供手段で文字参照に用いられる１文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段に記憶された安全文字変換情報に基づいて、処理後データに含まれる中立文字の少なくとも一部が安全文字列に変換した第２の変換データが生成され、第２段サービス提供手段に出力される。
【００１８】
また、上記課題を解決するために、上記データ変換プログラムを実行するコンピュータと同様の処理を行うデータ変換装置およびデータ変換方法が提供される。
【発明の効果】
【００１９】
上記データ変換プログラム、データ変換装置およびデータ変換方法によれば、出力先に応じた漏れのないエスケープ処理が容易に可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、本実施の形態を図面を参照して詳細に説明する。まず、本実施の形態の概要について説明し、その後、本実施の形態の具体的な内容を説明する。
図１は、本実施の形態の概要を示す図である。図１に示すコンピュータ１は、本実施の形態のデータ変換プログラムを実行する。これにより、コンピュータ１は、第１段サービス提供手段および第１段サービス提供手段からの要求に応じた処理を行う第２段サービス提供手段の処理に用いるデータを変換する。コンピュータ１は、中立文字変換情報記憶手段１ａ、安全文字変換情報記憶手段１ｂ、第１の変換手段１ｃ、第１段サービス提供手段１ｄ、第２の変換手段１ｅおよび第２段サービス提供手段１ｆを有する。
【００２１】
中立文字変換情報記憶手段１ａは、特殊文字を第１段サービス提供手段１ｄおよび第２段サービス提供手段１ｆが使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する。中立文字とは、例えば、文字コードの外字領域等で第１段サービス提供手段１ｄおよび第２段サービス提供手段１ｆで使用しない文字コードで示される文字である。
【００２２】
安全文字変換情報記憶手段１ｂは、中立文字を第２段サービス提供手段１ｆで文字参照に用いられる１文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する。文字参照による安全文字列と特殊文字との対応付けは、第２段サービス提供手段１ｆの処理に用いる制御文字に応じて予め定義される。
【００２３】
第１の変換手段１ｃは、データが入力されると、中立文字変換情報記憶手段１ａに記憶された中立文字変換情報に基づいてデータに含まれる特殊文字を中立文字に変換した第１の変換データを生成する。そして、第１の変換手段１ｃは、生成した第１の変換データを第１段サービス提供手段１ｄに出力する。
【００２４】
第１段サービス提供手段１ｄは、第１の変換手段１ｃから取得した第１の変換データに基づいて処理を行う。第１段サービス提供手段１ｄは、第２段サービス提供手段１ｆと連携して処理を実行可能であり、第２段サービス提供手段１ｆに要求する命令を含む第１の変換データに対する処理後データを生成する。第１段サービス提供手段１ｄは、生成した処理後データを第２の変換手段１ｅに出力する。第１段サービス提供手段１ｄは、例えば、ウェブアプリケーションである。
【００２５】
第２の変換手段１ｅは、第１段サービス提供手段１ｄから第１の変換データの処理後データを取得すると、安全文字変換情報記憶手段１ｂに記憶された安全文字変換情報に基づいて処理後データに含まれる中立文字を安全文字列に変換した第２の変換データを生成する。そして、第２の変換手段１ｅは、生成した第２の変換データを第２段サービス提供手段１ｆに出力する。
【００２６】
第２段サービス提供手段１ｆは、第２の変換手段１ｅから取得した第２の変換データに基づいて処理を行う。第２段サービス提供手段１ｆは、例えば、データベース（以下、ＤＢと略記する）システムである。
【００２７】
このように、コンピュータ１は、入力されたデータに対して２段階の変換処理を施す。１段階目の変換処理では、データに含まれる特殊文字が全て中立文字に変換される。すなわち、例え入力データに不正な命令が含まれていたとしても、全て安全な文字列に変換することができる。
【００２８】
また、２段階目の変換処理では、第１段サービス提供手段１ｄにおける処理後のデータに含まれる中立文字のうちの一部が第２段サービス提供手段１ｆにおける処理に応じて安全文字列に変換される。すなわち、２段階目の変換処理では、既に安全な中立文字に変換済みの文字のうち第２段サービス提供手段１ｆで利用可能な文字のみを再度変換する。このため、例え設定に漏れが生じたとしても、第２段サービス提供手段１ｆに送信されるデータは、不正な文字列を含むことがないのでセキュリティ性が高い。また、この変換処理を行うために、第２段サービス提供手段１ｆにおける処理で利用可能な安全文字列のデータを安全文字変換情報記憶手段１ｂに予め登録しておくだけでよいので、その設定が容易である。
【００２９】
ところで、図１に示した技術は、インターネットを介したウェブサービスに特に有用である。そこで、図１に示した技術を適用したウェブシステムの例を用いて本実施の形態を図面を参照して詳細に説明する。
【００３０】
図２は、本実施の形態のウェブシステムの構成を示す図である。図２に示すウェブシステムは、インターネット２０を介して登録されたユーザに対して掲示板や電子メールの送受信サービスを提供する。本実施の形態に係るウェブシステムでは、ウェブサーバ１００が非武装地帯（ＤＭＺ：DeMilitarized Zone）のネットワーク３０に接続されている。また、ＤＢサーバ２００およびメールサーバ３００がネットワーク４０に接続されている。
【００３１】
ネットワーク３０，４０は、ファイアウォール３１を介して接続され、また、ネットワーク３０とインターネット２０とがファイアウォール３１を介して接続されている。ファイアウォール３１は、インターネット２０と直接通信を行うＤＭＺのネットワーク３０とインターネット２０と直接通信を行わない内部側のネットワーク４０との間のＩＰ（Internet Protocol）通信を制御し、内部側のネットワーク４０のセキュリティを確保する。
【００３２】
更に、インターネット２０には、端末装置２１，２２，２３が接続されている。端末装置２１，２２，２３は、ウェブシステムを利用するクライアントである。
ウェブサーバ１００は、端末装置２１，２２，２３に提供するサービスの機能を実現するウェブアプリケーションを実行する。ウェブサーバ１００は、端末装置２１，２２，２３にウェブアプリケーションを利用するためのインタフェースを提供する。このインタフェースは、例えば、ＨＴＭＬ文で記述されたウェブページである。ウェブサーバ１００は、端末装置２１，２２，２３からのリクエストに応じて、リクエストに含まれるパラメータを利用したウェブページを含むＨＴＭＬ文等のレスポンスを動的に生成する。レスポンスは、ウェブサーバ１００から端末装置２１，２２，２３にＨＴＴＰにより送信されて、端末装置２１，２２，２３のブラウザ（以下では、単にブラウザという場合、端末装置２１，２２，２３のブラウザを指すものとする）で実行され、その内容が出力される。
【００３３】
また、端末装置２１，２２，２３を使用するユーザは、ウェブページの出力内容に従って操作を行い、ウェブサーバ１００に対して、利用する処理内容に応じたリクエストを送信することで、ウェブアプリケーションが提供するサービスを利用することができる。
【００３４】
ＤＢサーバ２００は、ウェブシステムのユーザ情報を記憶／管理するデータベースシステムである。ＤＢサーバ２００には、ウェブサーバ１００で稼動するサービスで利用されるデータが格納されている。ＤＢサーバ２００は、ウェブサーバ１００のウェブアプリケーションから送信される命令（ＳＱＬ文）に基づいて、ユーザ情報の照会や更新等の処理を行う。ＤＢサーバ２００には、例えば、各ユーザのＩＤやパスワード等が登録される。
【００３５】
メールサーバ３００は、上記ウェブシステムのユーザが作成する電子メールの送受信や保存等を行うサーバである。メールサーバ３００は、ウェブサーバ１００のウェブアプリケーションからの命令に基づいて、電子メールの送信処理を行う。
【００３６】
以下の説明では、ＤＢサーバ２００とメールサーバ３００とを合わせて業務サーバと呼ぶこととする。
ここで、ウェブサーバ１００のウェブアプリケーションが実行する機能に関して説明する。このウェブアプリケーションは、例として、ユーザに与えられたＩＤおよびパスワードを照合して、ウェブシステムへのログイン処理を行うものとする。そして、ウェブアプリケーションは、正常にログインしたユーザに、掲示板や電子メールの送受信サービスを提供する。
【００３７】
ウェブアプリケーションは、端末装置からのリクエストに応じて、リクエストに含まれるパラメータを含んだＨＴＭＬ文等によるレスポンス（例えば、掲示板への記事入力後画面）を生成して、リクエスト元の端末装置に送信する。
【００３８】
また、ウェブアプリケーションは、端末装置からのリクエストに応じてＤＢサーバ２００やメールサーバ３００と連携した処理を行う。このため、ウェブアプリケーションは、ＤＢサーバ２００やメールサーバ３００が処理を実行するための命令を生成する。例えば、ウェブアプリケーションは、ログイン処理を行う際には、ＤＢサーバ２００に登録されたユーザ情報を参照する。この場合、ウェブアプリケーションは、ＤＢサーバ２００で処理を実行するためのＳＱＬ文を生成する。以下の説明では、ウェブアプリケーションが生成する業務サーバへの命令も含めてレスポンスと呼ぶこととする。
【００３９】
ウェブアプリケーションは、レスポンスを生成する際に、端末装置２１，２２，２３から送信されたリクエストに含まれるユーザ情報等のパラメータを挿入する。
このようなウェブサーバ１００では、クライアントから取得したパラメータに不正なスクリプトやＳＱＬ命令が含まれていると、クロスサイトスクリプティング（以下、ＸＳＳと略記する）やＳＱＬインジェクション等による攻撃を受ける可能性がある。
【００４０】
しかし、ウェブサーバ１００では、このようなパラメータに対して、適正にエスケープ処理を施して上記の攻撃を防止する。以下の説明では、このようなウェブサーバ１００の機能構成に関して更に詳細に説明する。
【００４１】
図３は、ウェブサーバのハードウェア構成を示す図である。ウェブサーバ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ＨＤＤ（Hard disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５および通信インタフェース１０６が接続されている。
【００４２】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションソフト（以下、アプリケーションという）のプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００４３】
ＨＤＤ１０３は、データを記憶するためのディスク装置である。ＨＤＤ１０３には、ＯＳのプログラムやアプリケーションのプログラムが格納される。また、ＨＤＤ１０３には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００４４】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。通信インタフェース１０６は、ネットワーク３０に接続されている。通信インタフェース１０６は、ネットワーク３０を介して、ファイアウォール３１、端末装置２１，２２，２３、および他のサーバとの間でデータの送受信を行う。
【００４５】
なお、端末装置２１，２２，２３、ＤＢサーバ２００およびメールサーバ３００も同様のハードウェア構成により実現される。
また、以下の説明では、端末装置２１，２２，２３のうち、端末装置２１を用いて説明するが端末装置２２，２３に関しても同様の説明となる。
【００４６】
図４は、ウェブサーバの機能を示すブロック図である。ウェブサーバ１００には、端末装置２１がインターネット２０を介して接続される。また、ウェブサーバ１００には、ネットワーク３０，４０を介してＤＢサーバ２００およびメールサーバ３００が接続される。
【００４７】
ウェブサーバ１００は、データ変換部１１０、特殊文字復元テーブル記憶部１２０およびウェブアプリケーション１３０を有する。
データ変換部１１０は、端末装置２１とウェブアプリケーション１３０間およびウェブアプリケーションと業務サーバ間で送受信されるリクエストやレスポンスを中継する。そして、データ変換部１１０は、中継するリクエストやレスポンスのパラメータに含まれる文字列を必要に応じて変換する処理を行う。
【００４８】
データ変換部１１０は、中立文字変換テーブル記憶部１１１、安全文字変換テーブル記憶部１１２、中立文字変換部１１３、特殊文字復元部１１４、サービス間通信制御部１１５、安全文字変換部１１６および構成特定部１１７を有する。
【００４９】
中立文字変換テーブル記憶部１１１は、特殊文字を中立文字に対応付けた中立文字変換テーブルを記憶する。
ここで、特殊文字とは、ウェブアプリケーション１３０、ブラウザおよび業務サーバにおける処理に特別な作用を与える文字であり、例えば、「＆」や「＜」等の記号が該当する。
【００５０】
中立文字とは、ウェブアプリケーション１３０、ブラウザおよび業務サーバの各処理で使用しない文字である。例えば、文字コードとしてユニコード（Ｕｎｉｃｏｄｅ）を用いる場合、中立文字には、私用領域（外字領域）に含まれる文字コードで示される文字を用いることができる。また、各処理で使用しないと考えられる文字（例えば、オーガム文字）を中立文字として用いてもよい。以下の説明では、ユニコードを使用する文字コードとする。
【００５１】
安全文字変換テーブル記憶部１１２は、ブラウザや業務サーバの各処理で使用可能な特殊文字に対する文字参照用の１文字以上の安全文字列に中立文字を対応付けた安全文字変換テーブルを記憶する。ここで、文字参照用の安全文字列とは、ＤＢサーバ２００やメールサーバ３００の各処理で利用可能なエスケープ用の文字列である。例えば、ブラウザ上に「＆」記号を出力したい場合、ＨＴＭＬ文では「＆」記号に対応する安全文字列「＆ａｍｐ；」を記述する。
【００５２】
中立文字変換部１１３は、端末装置２１からリクエストを受け付けると、中立文字変換テーブル記憶部１１１に記憶された中立文字変換テーブルを参照して、リクエストのパラメータに含まれる特殊文字を中立文字に変換する。そして、中立文字変換部１１３は、中立文字変換後のリクエストを特殊文字復元部１１４に出力する。
【００５３】
特殊文字復元部１１４は、中立文字変換部１１３から中立文字変換後のリクエストを取得すると、そのリクエストの出力先となるウェブアプリケーション１３０を特定する。そして、特定したウェブアプリケーション１３０に対応する特殊文字復元テーブルを特殊文字復元テーブル記憶部１２０から取得する。そして、特殊文字復元部１１４は、取得した特殊文字復元テーブルおよび中立文字変換テーブル記憶部１１１に記憶された中立文字変換テーブルに基づいて、中立文字変換後のリクエストに含まれる中立文字の一部を特殊文字に復元する。ここで復元される特殊文字は、ウェブアプリケーション１３０の処理に必要となる特殊文字である。このような特殊文字は、ウェブアプリケーション毎に予め定義され、特殊文字復元テーブルに設定される。特殊文字復元部１１４は、特殊文字の一部を復元したリクエストをウェブアプリケーション１３０に出力する。
【００５４】
サービス間通信制御部１１５は、ウェブアプリケーション１３０が生成したブラウザや業務サーバに対するレスポンスを取得する。サービス間通信制御部１１５は、取得したレスポンスを安全文字変換部１１６に出力する。そして、サービス間通信制御部１１５は、安全文字変換部１１６から安全文字変換後のレスポンスを取得し、ブラウザや業務サーバに送信する。
【００５５】
安全文字変換部１１６は、サービス間通信制御部１１５からレスポンスを取得してその出力先を特定する。また、安全文字変換部１１６は、取得したレスポンスを構成特定部１１７に出力する。そして、安全文字変換部１１６は、構成特定部１１７からレスポンスに含まれるパラメータが使用されている構成の特定結果を取得する。安全文字変換部１１６は、安全文字変換テーブル記憶部１１２に記憶されたレスポンスの出力先および構成特定部１１７の判定結果に対応する安全文字変換テーブルに基づいて、レスポンスに含まれるパラメータに存在する中立文字を安全文字列に変換する。安全文字変換部１１６は、安全文字変換後のレスポンスをサービス間通信制御部１１５に出力する。
【００５６】
構成特定部１１７は、安全文字変換部１１６から取得したレスポンスのパラメータが使用されている構成を特定する。ここでいう構成の特定とは、例えば、ＨＴＭＬ文では、該当のパラメータがｓｃｒｉｐｔタグやｂｏｄｙタグ等のいずれの構成要素に含まれているかを示している。構成特定部１１７は、特定した構成を安全文字変換部１１６に通知する。
【００５７】
特殊文字復元テーブル記憶部１２０は、中間文字にウェブアプリケーション１３０で使用可能な特殊文字を対応付けた特殊文字復元テーブルを記憶する。特殊文字復元テーブル記憶部は、ウェブアプリケーションの数に応じて予め用意される。
【００５８】
ウェブアプリケーション１３０は、業務サーバへのログイン処理や掲示板サービスの機能を実現する。ウェブアプリケーション１３０は、特殊文字復元部１１４からリクエストを取得すると、リクエストに応じてログイン処理や掲示板への書き込み処理を実行し、処理結果に応じてブラウザや業務サーバに対するレスポンスを生成する。ウェブアプリケーション１３０は、生成したレスポンスをサービス間通信制御部１１５に出力する。
【００５９】
なお、ウェブアプリケーション１３０は、提供するサービスに応じて複数存在してもよい。特殊文字復元テーブル記憶部１２０は、ウェブアプリケーション１３０と１対１に設けられており、ウェブアプリケーションが複数存在する場合には、特殊文字復元テーブルも複数存在することになる。
【００６０】
図５は、中立文字変換テーブルのデータ構造例を示す図である。中立文字変換テーブル１１１ａは、中立文字変換テーブル記憶部１１１に記憶され、中立文字変換部１１３および特殊文字復元部１１４によって参照される。中立文字変換テーブル１１１ａには、特殊文字を示す項目および中立文字（コード）を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つの特殊文字の中立文字への変換に関する情報を構成する。
【００６１】
特殊文字を示す項目には、ウェブアプリケーション１３０、ブラウザおよび業務サーバの各処理において制御用の文字となり得る文字が設定される。中立文字（コード）を示す項目には、特殊文字に対応する中立文字が設定される。図５では、ユニコードの私用領域（Ｕ＋Ｅ０００〜Ｕ＋Ｆ８ＦＦ）に含まれる文字コード（ただし、括弧で括ってある）によって中立文字を示している。図５における中立文字の表示方法は、以下の説明においても同様とする。
【００６２】
中立文字変換テーブル１１１ａには、例えば、特殊文字が「＜」、中立文字（コード）が「（Ｕ＋Ｅ００１）」という情報が設定される。これは、端末装置２１からのリクエストのパラメータに特殊文字「＜」が含まれている場合、これが中立文字（コード）「（Ｕ＋Ｅ００１）」に変換されることを示している。
【００６３】
図６は、特殊文字復元テーブルのデータ構造例を示す図である。特殊文字復元テーブル１２０ａは、特殊文字復元テーブル記憶部１２０に記憶され、特殊文字復元部１１４によって参照される。特殊文字復元テーブル１２０ａには、パターンＰｔを示す項目および復元中立文字集合Ｓを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つの中立文字の復元に関する情報を構成する。
【００６４】
パターンＰｔを示す項目には、リクエストに含まれるパラメータのウェブアプリケーション１３０が提供する掲示板サービスでの使用箇所に関する情報が設定される。復元中立文字集合Ｓを示す項目には、パターンＰｔに応じた復元可能な中立文字の集合が設定される。
【００６５】
特殊文字復元テーブル１２０ａには、例えば、パターンＰｔが「電話番号」、復元中立文字集合Ｓが「｛Ｕ＋Ｅ００８，Ｕ＋Ｅ００９，・・・｝」という情報が設定される。これは、パラメータの使用箇所が「電話番号」である場合、中立文字「（Ｕ＋Ｅ００８），（Ｕ＋Ｅ００９），・・・」が中立文字変換部１１３による変換前の特殊記号に復元されることを示している。
【００６６】
特殊文字復元テーブルは、ウェブアプリケーションの開発者によって、ウェブアプリケーションと１対１に対応するよう予め用意される。
図７は、ＨＴＭＬ用の安全文字変換テーブルのデータ構造例を示す図である。安全文字変換テーブル１１２ａは、安全文字変換テーブル記憶部１１２に記憶され、安全文字変換部１１６によって参照される。安全文字変換テーブル１１２ａには、中立文字（コード）を示す項目および安全文字列を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つの中立文字の安全文字列への変換に関する情報を構成する。
【００６７】
中立文字（コード）を示す項目には、変換対象の中立文字が設定される。安全文字列を示す項目には、使用される構成毎に中立文字に対応する安全文字列が設定される。
安全文字変換テーブル１１２ａには、例えば、中立文字（コード）が「（Ｕ＋Ｅ００３）」、ＨＴＭＬの本文（例えば、ｂｏｄｙタグ内）における安全文字列が「＆＃３９；」、ＨＴＭＬのＪａｖａ（登録商標）ｓｃｒｉｐｔ（例えば、ｓｃｒｉｐｔタグ内）における安全文字列が「￥’」という情報が設定される。これは、ウェブアプリケーション１３０からブラウザに対するＨＴＭＬ文のレスポンスに中立文字「（Ｕ＋Ｅ００３）」が含まれており、それが、本文を構成する構成要素で使用されている場合には、「＆＃３９；」に変換されることを示している。また、ＨＴＭＬ文のレスポンスに中立文字「（Ｕ＋Ｅ００３）」が含まれており、それが、Ｊａｖａｓｃｒｉｐｔ文を構成する構成要素で使用されている場合には、「￥’」に変換することを示している。
【００６８】
図８は、ＳＱＬ用の安全文字変換テーブルのデータ構造例を示す図である。安全文字変換テーブル１１２ｂは、安全文字変換テーブル記憶部１１２に記憶され、安全文字変換部１１６によって参照される。安全文字変換テーブル１１２ｂには、中立文字（コード）を示す項目および安全文字列（ＳＱＬ）を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つの中立文字の安全文字列への変換に関する情報を構成する。
【００６９】
中立文字（コード）を示す項目には、変換対象の中立文字が設定される。安全文字列を示す項目には、中立文字に対応する安全文字列が設定される。
安全文字変換テーブル１１２ｂには、例えば、中立文字（コード）が「（Ｕ＋Ｅ００３）」、ＳＱＬ文における安全文字列が「’’（シングルクォーテーション２つ）」という情報が設定される。これは、ウェブアプリケーション１３０からＤＢサーバ２００に対するＳＱＬ文に中立文字「（Ｕ＋Ｅ００３）」が含まれている場合には、安全文字列「’’」に変換されることを示している。ここで、ＳＱＬ文では「’（シングルクォーテーション）」は制御文字として扱われるため、リテラル中で使用するためには上記のようにエスケープされる必要がある。
【００７０】
図９は、電子メール用の安全文字変換テーブルのデータ構造例を示す図である。安全文字列変換テーブル１１２ｃは、安全文字変換テーブル記憶部１１２に記憶され、安全文字変換部１１６によって参照される。安全文字変換テーブル１１２ｃには、中立文字（コード）を示す項目および安全文字列を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つの中立文字の安全文字列への変換に関する情報を構成する。
【００７１】
中立文字（コード）を示す項目には、変換対象の中立文字が設定される。安全文字列を示す項目には、使用される構成要素毎に中立文字に対応する安全文字列が設定される。
安全文字変換テーブル１１２ｃには、例えば、中立文字（コード）が「（Ｕ＋Ｅ００１）」、メールのアドレスにおける安全文字列が「（除去）」、メールの本文における安全文字列が「＜」という情報が設定される。これは、ウェブアプリケーション１３０からメールサーバ３００に対する命令に中立文字「（Ｕ＋Ｅ００１）」が含まれており、それが、アドレスを構成する構成要素で使用されている場合には、除去されることを示している。また、同様に中立文字「（Ｕ＋Ｅ００１）」が含まれており、それが、本文を構成する構成要素で使用されている場合には、「＜」に変換されることを示している。
【００７２】
次に、以上のような構成におけるウェブサーバ１００におけるデータ変換処理の詳細を説明する。
図１０は、データ変換処理の手順を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
【００７３】
［ステップＳ１００］中立文字変換部１１３は、端末装置２１からのリクエストを取得する。リクエストには、ユーザの利用したいサービスに応じて、例えば、端末装置２１のブラウザからＧＥＴ送信やＰＯＳＴ送信されるユーザＩＤやパスワード、掲示板に入力する記事、電子メール送信宛先等の情報が、それぞれ個別のパラメータとして含まれる。
【００７４】
［ステップＳ２００］中立文字変換部１１３は、取得したリクエストのパラメータに含まれる特殊文字を、中立文字変換テーブル記憶部１１１に記憶された中立文字変換テーブル１１２ａに基づいて中立文字に変換する。中立文字変換部１１３は、変換後リクエストを特殊文字復元部１１４に出力する。
【００７５】
［ステップＳ３００］特殊文字復元部１１４は、中立文字変換部１１３から取得した変換後リクエストに含まれる中立文字を、特殊文字復元テーブル記憶部１２０に記憶された特殊文字復元テーブル１２０ａに基づいて復元する。特殊文字復元部１１４は、復元後リクエストをウェブアプリケーション１３０に出力する。
【００７６】
［ステップＳ４００］ウェブアプリケーション１３０は、特殊文字復元部１１４から取得した復元後リクエストに基づく処理を実行する。ここでは、ウェブアプリケーション１３０は、ウェブシステムを利用するためのログイン処理や掲示板への書き込み処理を実行する。
【００７７】
［ステップＳ５００］ウェブアプリケーション１３０は、ステップＳ４００における処理に応じたブラウザや業務サーバに対するレスポンスを生成する。このとき、ウェブアプリケーション１３０は、必要に応じてレスポンスのパラメータに含まれる特殊文字を再度中立文字に変換または、削除する。ウェブアプリケーション１３０は、生成したレスポンスをサービス間通信制御部１１５に出力する。サービス間通信制御部１１５は、取得したレスポンスを安全文字変換部１１６に出力する。
【００７８】
［ステップＳ６００］安全文字変換部１１６は、ウェブアプリケーション１３０から取得したレスポンスのパラメータに含まれる中立文字を、その出力先および構成要素に応じた安全文字列に変換する。安全文字変換部１１６は、安全文字変換後のレスポンスをサービス間通信制御部１１５に出力する。
【００７９】
［ステップＳ７００］サービス間通信制御部１１５は、安全文字変換部１１６から取得した変換後レスポンスを送信先であるブラウザまたは業務サーバに送信する。
このようにウェブサーバ１００では、まずリクエストのパラメータに含まれる特殊文字を全て中立文字に変換し、各部の処理の必要に応じて特殊文字への復元および安全文字列への変換を行う。
【００８０】
これにより、各部の処理に対してエスケープ処理の対象とする文字を設定する方法に比べて、設定漏れによるセキュリティの穴ができないため、セキュリティ性が高い。
次に、図１０のステップＳ２００で実行する処理を詳細に説明する。
【００８１】
図１１は、特殊文字から中立文字への変換処理の手順を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
［ステップＳ２０１］中立文字変換部１１３は、リクエストに含まれるパラメータ群Ｐを抽出する。パラメータ群Ｐは、図１０のステップＳ１００で取得したユーザＩＤやパスワード、掲示板に入力する記事、電子メール送信宛先等のパラメータの集合である。
【００８２】
［ステップＳ２０２］中立文字変換部１１３は、抽出したパラメータ群Ｐからパラメータｐを抽出する。
［ステップＳ２０３］中立文字変換部１１３は、抽出したパラメータｐに含まれる文字ｃを順に取得する。
【００８３】
［ステップＳ２０４］中立文字変換部１１３は、取得した文字ｃが特殊文字であるか否かを判定する。中立文字変換部１１３は、取得した文字ｃが中立文字変換テーブル１１１ａの特殊文字の項目に設定されていれば、文字ｃは特殊文字であると判定することができる。特殊文字である場合、処理がステップＳ２０５に移される。特殊文字でない場合、処理がステップＳ２０７に移される。
【００８４】
［ステップＳ２０５］中立文字変換部１１３は、中立文字変換テーブル記憶部１１１に記憶された中立文字変換テーブル１１１ａに基づいて、ステップＳ２０４にて判定した特殊文字に対応する中立文字を特定する。
【００８５】
［ステップＳ２０６］中立文字変換部１１３は、文字ｃをステップＳ２０５で特定した中立文字に変換する。
［ステップＳ２０７］中立文字変換部１１３は、パラメータｐに含まれる全ての文字が判定済みか否かを判定する。全ての文字を判定済みでない場合、上記ステップＳ２０３で取得済みの文字を取得対象から除外して、処理がステップＳ２０３に移される。全ての文字を判定済みである場合、処理がステップＳ２０９に移される。
【００８６】
［ステップＳ２０８］中立文字変換部１１３は、パラメータ群Ｐから全てのパラメータを抽出済みであるか否かを判定する。全て抽出済みでない場合、上記ステップＳ２０２で抽出したパラメータを抽出対象から除外して、処理がステップＳ２０２に移される。全て抽出済みである場合、処理がステップＳ２０９に移される。
【００８７】
［ステップＳ２０９］中立文字変換部１１３は、中立文字変換後のリクエストを特殊文字復元部１１４に出力する。
このように、中立文字変換部１１３は、まず、端末装置２１から取得したリクエストのパラメータに含まれる特殊文字を全て中立文字に変換する。
【００８８】
これにより、例え端末装置２１から取得したリクエストのパラメータに不正な命令が含まれていたとしても、全て安全な文字列に変換することができる。
次に、図１０のステップＳ３００で実行する処理を詳細に説明する。
【００８９】
図１２は、中立文字から特殊文字への復元処理の手順を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
［ステップＳ３０１］特殊文字復元部１１４は、リクエストの出力先ウェブアプリケーションに応じて特殊文字復元テーブル記憶部に記憶された特殊文字復元テーブルを選択する。本例では、特殊文字復元部１１４は、出力先のウェブアプリケーション１３０に対して、特殊文字復元テーブル記憶部１２０に記憶された特殊文字復元テーブル１２０ａを選択する。
【００９０】
［ステップＳ３０２］特殊文字復元部１１４は、中立文字変換部１１３から取得した中立文字変換後のリクエストから、パラメータ群Ｐを抽出する。
［ステップＳ３０３］特殊文字復元部１１４は、抽出したパラメータ群Ｐからパラメータｐを抽出する。
【００９１】
［ステップＳ３０４］特殊文字復元部１１４は、選択した特殊文字復元テーブル１２０ａに基づいて、抽出したパラメータｐのウェブアプリケーション１３０における使用箇所（使用パターンＰｔ）を特定する。使用パターンＰｔとは、例えば、掲示板であれば、掲示する記事や連絡先（メールアドレスや電話番号）等である。
【００９２】
［ステップＳ３０５］特殊文字復元部１１４は、選択した特殊文字復元テーブル１２０ａに基づいて、特定したパターンＰｔに対応する復元中立文字集合Ｓを取得する。
［ステップＳ３０６］特殊文字復元部１１４は、パラメータｐから順に文字ｃを取得する。
【００９３】
［ステップＳ３０７］特殊文字復元部１１４は、取得した文字ｃが復元中立文字集合Ｓに含まれるか否かを判定する。含まれる場合、すなわち、文字ｃが復元対象の中立文字である場合、処理がステップＳ３０８に移される。含まれない場合、すなわち、文字ｃが復元対象でない場合、処理がステップＳ３１０に移される。
【００９４】
［ステップＳ３０８］特殊文字復元部１１４は、中立文字変換テーブル記憶部１１１に記憶された中立文字変換テーブル１１１ａに基づいて、中立文字ｃに対応する特殊文字を取得する。
【００９５】
［ステップＳ３０９］特殊文字復元部１１４は、中立文字変換テーブル１１１ａに基づいて中立文字ｃを取得した特殊文字に復元する。
［ステップＳ３１０］特殊文字復元部１１４は、パラメータｐに含まれる全ての文字が判定済みか否かを判定する。全ての文字を判定済みでない場合、上記ステップＳ３０６で取得済みの文字を取得対象から除外して、処理がステップＳ３０６に移される。全ての文字を判定済みである場合、処理がステップＳ３１１に移される。
【００９６】
［ステップＳ３１１］特殊文字復元部１１４は、パラメータ群Ｐから全てのパラメータを抽出済みであるか否かを判定する。全て抽出済みでない場合、上記ステップＳ３０３で抽出したパラメータを抽出対象から除外して、処理がステップＳ３０３に移される。全て抽出済みである場合、処理がステップＳ３１２に移される。
【００９７】
［ステップＳ３１２］特殊文字復元部１１４は、特殊文字復元後のリクエストをウェブアプリケーション１３０に出力する。
このように、特殊文字復元部１１４は、ウェブアプリケーション１３０の処理の必要に応じてリクエストのパラメータのうち変換した中立文字の一部を特殊文字に復元する。特殊文字復元部１１４の復元処理の処理対象となる文字は、既に安全な中立文字に変換済みの文字である。
【００９８】
このため、例え特殊文字復元テーブル１２０ａの設定に漏れがあったとしても、特殊文字復元後のリクエストには不正な命令を含むことがなくなるため、セキュリティ性が高い。また、この復元処理を行うために、特殊文字復元テーブル１２０ａを作成して特殊文字復元テーブル記憶部１２０に格納しておけばよいため、設定が容易である。特殊文字復元テーブル記憶部１２０は、ウェブアプリケーションが新たに追加または更新されることも考えられるため、開発者が自由に設定を変更可能な記憶領域に配置されることが望ましい。
【００９９】
次に、図１０のステップＳ６００で実行する処理を詳細に説明する。
図１３は、中立文字から安全文字列への変換処理の手順を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
【０１００】
［ステップＳ６０１］安全文字変換部１１６は、サービス間通信制御部１１５からウェブアプリケーション１３０がブラウザや業務サーバに対して生成したレスポンスを取得する。
【０１０１】
［ステップＳ６０２］安全文字変換部１１６は、レスポンスの出力先がブラウザであるか、ＤＢサーバ２００であるか、メールサーバ３００であるかを特定する。
［ステップＳ６０３］安全文字変換部１１６は、レスポンスに含まれる文字ｃを取得する。
【０１０２】
［ステップＳ６０４］安全文字変換部１１６は、取得した文字ｃが中立文字であるか否かを判定する。中立文字である場合、レスポンスが構成特定部１１７に出力されて、処理がステップＳ６０５に移される。中立文字でない場合、処理がステップＳ６０９に移される。
【０１０３】
［ステップＳ６０５］構成特定部１１７は、レスポンスに含まれる中立文字ｃが使用されている構成要素を特定する。構成特定部１１７は、例えば、ＨＴＭＬ文であれば、該当の中立文字ｃが、ｂｏｄｙタグやｓｃｒｉｐｔタグ等、いずれのタグ内に記述されているかを解析することによって使用されている構成要素を特定することができる。構成特定部１１７は、構成要素の特定結果を安全文字変換部１１６に通知する。
【０１０４】
［ステップＳ６０６］安全文字変換部１１６は、レスポンスの出力先に応じて安全文字変換テーブル記憶部１１２に記憶された安全文字変換テーブル１１２ａ，１１２ｂ，１１２ｃのいずれかを選択する。例えば、安全文字変換部１１６は、レスポンスの出力先がブラウザである場合、安全文字変換テーブル１１２ａを選択する。
【０１０５】
［ステップＳ６０７］安全文字変換部１１６は、選択した安全文字変換テーブルから構成特定部１１７による中立文字ｃの含まれる構成要素の特定結果に対応する安全文字列を取得する。
【０１０６】
［ステップＳ６０８］安全文字変換部１１６は、中立文字ｃを取得した安全文字列に変換する。例えば、レスポンスの出力先がブラウザであり、構成特定部１１７によって中立文字（Ｕ＋Ｅ００１）を含む構成要素が、Ｊａｖａｓｃｒｉｐｔ文であると特定されたとする。この場合、安全文字変換部１１６は、安全文字変換テーブル１１２ａに基づいて、中立文字（Ｕ＋Ｅ００１）をＪａｖａｓｃｒｉｐｔ文における安全文字列「＆ｌｔ；」に変換する。
【０１０７】
［ステップＳ６０９］安全文字変換部１１６は、レスポンスに含まれる全ての文字が判定済みか否かを判定する。全ての文字を判定済みでない場合、上記ステップＳ６０３で取得済みの文字を取得対象から除外して、処理がステップＳ６０３に移される。全ての文字を判定済みである場合、処理がステップＳ６１０に移される。
【０１０８】
［ステップＳ６１０］安全文字変換部１１６は、サービス間通信制御部１１５に安全文字変換後のレスポンスを出力する。
このように、安全文字変換部１１６は、ウェブアプリケーション１３０が生成したレスポンスをその出力先に応じた安全文字列にエスケープ処理する。安全文字変換部１１６の変換処理の処理対象となる文字は、既に安全な中立文字に変換済みの文字である。
【０１０９】
このため、例え変換の設定に漏れがあったとしても、変換後のレスポンスには不正な命令を含むことがなくなるため、セキュリティ性が高い。また、この変換処理を行うために、安全文字変換テーブル１１２ａ，１１２ｂ，１１２ｃを予め作成して安全文字変換テーブル記憶部１１２に格納しておけばよいため、設定が容易である。
【０１１０】
次に、端末装置２１からのリクエストに応じたデータ変換部１１０の処理に関して、更に具体的に説明する。
図１４は、データ変換処理の流れを示した模式図である。図１４で符号を付して示した構成は、図２，４において同一の符号を付して説明した構成と同一の機能であるため、その説明を省略する。
【０１１１】
ブラウザ２１ａは、端末装置２１上で実行されるブラウザである。
登録情報提供サービス２０１は、ＤＢサーバ２００上で提供されるサービスである。登録情報提供サービス２０１は、ウェブシステムのユーザに関する登録情報を提供する。
【０１１２】
電子メール送信サービス３０１は、メールサーバ３００上で提供されるサービスである。電子メール送信サービス３０１は、電子メール送信のサービスを提供する。
変換処理Ａは、図１１で示した中立文字変換部１１３による特殊文字を中立文字に変換する処理を示している。変換処理Ａでは、ブラウザ２１ａからのリクエスト内のパラメータに含まれる特殊文字を全て中立文字に変換する処理を行う。
【０１１３】
変換処理Ｂは、図１２で示した特殊文字復元部１１４による中立文字の一部を特殊文字に復元する処理を示している。変換処理Ｂでは、変換処理Ａ後のリクエストに対して、ウェブアプリケーション１３０の処理で用いる特殊文字を、中立文字から復元する。
【０１１４】
変換処理Ａ，Ｂの処理対象は、ブラウザ２１ａからのリクエスト内のパラメータに含まれる特殊文字および中立文字である。
変換処理Ｃ１，Ｃ２，Ｃ３は、図１３で示した安全文字変換部１１６による中立文字を安全文字列に変換する処理を示している。
【０１１５】
変換処理Ｃ１の処理対象は、ウェブアプリケーション１３０がブラウザ２１ａに対して生成するレスポンスである。このレスポンスは、例えば、掲示板を表示するウェブページを含むＨＴＭＬ文である。
【０１１６】
変換処理Ｃ２の処理対象は、ウェブアプリケーション１３０が、ログイン処理等のためにユーザ情報を照会するために登録情報提供サービス２０１に対して生成するＳＱＬ文である。
【０１１７】
変換処理Ｃ３の処理対象は、ウェブアプリケーション１３０が、電子メール送信のためにメールサーバ３００に対して生成する送信用命令である。
以下、変換処理Ａ，Ｂ，Ｃ１，Ｃ２，Ｃ３に関して説明する。
【０１１８】
図１５は、特殊文字から中立文字への変換処理の具体例を示す模式図である。図１５の例は、図１４における変換処理Ａを示している。パラメータ群５００は、端末装置２１からのリクエストに含まれるパラメータの集合である。パラメータ群５００には、例えば、ユーザが入力した情報として、ＩＤが「’ＴＡＲＯＵ’（シングルクォーテーションで括られたＴＡＲＯＵ）」、パスワードが「Ｆｊ３＜Ｔ５ｋ＞」、メールアドレスが「ｔａｒｏｕ＠ａｂｃ．ｃｏｍ」という情報が含まれる。ＩＤには、特殊文字として「’（シングルクォーテーション）」が含まれる。パスワードには、特殊文字として、「＜」および「＞」が含まれる。メールアドレスには、特殊文字として、「＠」および「．（ピリオド）」が含まれる。
【０１１９】
中立文字変換部１１３は、これらの特殊文字を中立文字変換テーブル１１１ａに基づいて変換し、中立文字変換後のパラメータ群５００ａを生成する。パラメータ群５００ａには、ＩＤに含まれていた「’（シングルクォーテーション）」が、「（Ｕ＋Ｅ００３）」に変換されている。また、パスワードに含まれていた「＜」が「（Ｕ＋Ｅ００１）」に変換され、「＞」が「（Ｕ＋Ｅ００２）」に変換されている。更に、メールアドレスに含まれていた「＠」が「（Ｕ＋Ｅ００５）」に変換され、「．（ピリオド）」が「（Ｕ＋Ｅ００７）」に変換されている。
【０１２０】
このようにして、ブラウザや業務サーバの処理において、制御文字として使用され得る特殊記号は全て中立文字に変換される。これにより、リクエスト内に不正な命令が含まれることを防止することができる。
【０１２１】
図１６は、中立文字から特殊文字への復元処理の具体例を示す模式図である。図１６の例は、図１４における変換処理Ｂを示している。パラメータ群５００ａは、中立文字変換部１１３からの中立文字変換後のリクエストに含まれるパラメータの集合である。パラメータ群５００ａに含まれるパラメータは、図１５における説明と同一であるため、説明を省略する。
【０１２２】
特殊文字復元部１１４は、ウェブアプリケーション１３０に対して用意された特殊文字復元テーブル１２０ａに基づいて、パラメータ群５００ａに含まれる中立文字を特殊文字に復元し、特殊文字復元後のパラメータ群５００ｂを生成する。特殊文字復元テーブル１２０ａは、例えば、ウェブアプリケーション１３０におけるログイン処理に関して使用され、ＩＤやパスワードに含まれる中立文字が特殊文字に復元される。パラメータ群５００ｂには、ＩＤに含まれていた中立文字「（Ｕ＋Ｅ００３）」が「’（シングルクォーテーション）」に復元されている。また、パスワードに含まれていた「（Ｕ＋Ｅ００１）」が「＜」に復元され、「（Ｕ＋Ｅ００２）」が「＞」に復元されている。なお、メールアドレスに含まれていた「（Ｕ＋Ｅ００５）」および「（Ｕ＋Ｅ００７）」は、ウェブアプリケーション１３０におけるログイン処理には使用されないため、特殊文字復元テーブル１２０ａには登録されておらず、復元は行われていない。
【０１２３】
このようにして、ウェブアプリケーション１３０の処理で使用されるパラメータは、中立文字から特殊文字へ復元される。復元対象の文字は、ウェブアプリケーション１３０の処理に応じて、開発者等によって予め定義することができる。
【０１２４】
図１７は、中立文字から安全文字列への変換処理の第１の具体例を示す模式図である。図１７の例は、図１４における変換処理Ｃ１を示している。ＨＴＭＬ文６００は、ウェブアプリケーション１３０が生成したＨＴＭＬで記述された端末装置２１へのレスポンスである。ＨＴＭＬ文６００は、ｓｃｒｉｐｔ部分６０１および本文部分６０２を含んでいる。なお、図１７では、中立文字に関しては、そのコードを括弧で括って示している。実際のコンピュータ画面上に出力される表記では、このような中立文字は、例えば「・（中点）」等で表される。この中立文字の表し方に関しては、以降の説明に関しても同様とする。
【０１２５】
ｓｃｒｉｐｔ部分６０１は、新規記事が掲示板に追加されたことを示すダイアログボックスを出力するためのスクリプトを示している。ｓｃｒｉｐｔ部分６０１には、中立文字「（Ｕ＋Ｅ００３）」が含まれている。
【０１２６】
本文部分６０２は、ユーザが新規に投稿した記事の内容をブラウザに出力するためのＨＴＭＬ文である。本文部分６０２には、中立文字「（Ｕ＋Ｅ００３）」が含まれている。
安全文字変換部１１６は、安全文字変換テーブル１１２ａに基づいて、ＨＴＭＬ文６００に含まれる中立文字を安全文字列に変換し、安全文字変換後のＨＴＭＬ文６００ａを生成する。ＨＴＭＬ文６００ａのｓｃｒｉｐｔ部分６０１ａでは、ｓｃｒｉｐｔ部分６０１に含まれていた中立文字「（Ｕ＋Ｅ００３）」が、安全文字列「￥’」に変換されている。また、本文部分６０２ａでは、本文部分６０２に含まれていた中立文字「（Ｕ＋Ｅ００３）」が、安全文字列「＆＃３９；」に変換されている。
【０１２７】
このようにして、ＨＴＭＬ文に含まれる中立文字が安全文字列に変換される。ここで、ｓｃｒｉｐｔ部分６０１の安全文字列「￥’」は、ブラウザ上の出力「’（シングルクォーテーション）」に対応する安全文字列である。また、本文部分６０２の安全文字列「＆＃３９；」も同様に、ブラウザ上の出力「’（シングルクォーテーション）」に対応する安全文字列である。
【０１２８】
このようにすると、例えば、本文部分６０２のように、入力されたパラメータをｂｏｄｙタグ内に挿入してレスポンスを生成してブラウザに送信する場合でも、ＸＳＳによる攻撃を防止することができる。これは、入力されたパラメータに不正なスクリプトが含まれていても、不正なスクリプトを形成しうる特殊文字は全て中立文字に変換されるためである。そして、中立文字を必要に応じて安全文字列へと変換することで、ブラウザは、入力されたパラメータの内容を適正に端末装置２１の画面上に出力することができる。
【０１２９】
図１８は、中立文字から安全文字列への変換処理の第２の具体例を示す模式図である。図１８の例は、図１４における変換処理Ｃ２を示している。ＳＱＬ文７００は、ウェブアプリケーション１３０が生成したＳＱＬで記述されたＤＢサーバ２００へのレスポンスである。ＳＱＬ文７００は、中立文字として、「（Ｕ＋Ｅ００５）」、「（Ｕ＋Ｅ００７）」、「（Ｕ＋Ｅ００３）」、「（Ｕ＋Ｅ００１）」、「（Ｕ＋Ｅ００２）」を含んでいる。
【０１３０】
安全文字変換部１１６は、安全文字変換テーブル１１２ａに基づいて、ＳＱＬ文７００に含まれる中立文字を安全文字列に変換し、安全文字変換後のＳＱＬ文７００ａを生成する。ＳＱＬ文７００ａでは、ＳＱＬ文７００に含まれていた中立文字「（Ｕ＋Ｅ００５）」が、安全文字列「＠」に変換されている。同様に中立文字「（Ｕ＋Ｅ００７）」が「．（ピリオド）」に、「（Ｕ＋Ｅ００３）」が「’’（シングルクォーテーション２つ）」に、「（Ｕ＋Ｅ００１）」が「＜」に、「（Ｕ＋Ｅ００２）」が「＞」に、それぞれ変換されている。
【０１３１】
このようにして、ＳＱＬ文に含まれる中立文字が安全文字列に変換される。ここで、ＳＱＬ文では「’（シングルクォーテーション）」は制御文字として扱われるため、リテラル中で使用するためには上記のようにエスケープされる必要がある。
【０１３２】
このようにすると、例えば、ＳＱＬ文７００のように、入力されたパラメータをＳＱＬ文内に挿入してレスポンスを生成してＤＢサーバ２００に送信する場合でも、ＳＱＬインジェクションによる攻撃を防止することができる。これは、入力されたパラメータに不正な命令が含まれていても、不正な命令を形成しうる特殊文字は全て中立文字に変換されているためである。そして、中立文字を必要に応じて安全文字列へと変換することで、ＤＢサーバ２００は、入力されたパラメータの内容で適正にＳＱＬ文を実行することができる。
【０１３３】
図１９は、中立文字から安全文字列への変換処理の第３の具体例を示す模式図である。図１９の例は、図１４における変換処理Ｃ３を示している。メール送信命令８００は、ウェブアプリケーション１３０が生成したメールサーバ３００への電子メールの送信用命令である。メール送信用命令は、中立文字として、「（Ｕ＋Ｅ００５）」および「（Ｕ＋Ｅ００７）」が含まれている。
【０１３４】
安全文字変換部１１６は、安全文字変換テーブル１１２ａに基づいて、メール送信命令８００に含まれる中立文字を安全文字列に変換し、安全文字変換後のメール送信命令８００ａを生成する。メール送信命令８００ａでは、メール送信命令８００に含まれていた中立文字「（Ｕ＋Ｅ００５）」が「＠」に変換されている。また、中立文字「（Ｕ＋Ｅ００７）」が、「．（ピリオド）」に変換されている。
【０１３５】
このようにして、メール送信処理に必要となる中立文字が、安全文字変換テーブル１１２ａの対応する安全文字列に変換される。
このように、安全文字変換部１１６は、ウェブアプリケーション１３０が生成したレスポンスをその出力先に応じた安全文字列にエスケープ処理する。安全文字変換部１１６の変換処理の処理対象となる文字は、既に安全な中立文字に変換済みの文字である。
【０１３６】
このため、例え変換の設定に漏れがあったとしても、変換後のレスポンスには不正な命令を含むことがなくなるため、セキュリティ性が高い。また、この変換処理を行うために、特殊文字復元テーブル１２０ａや安全文字変換テーブル１１２ａ，１１２ｂ，１１２ｃを予め作成して安全文字変換テーブル記憶部１１２に格納しておけばよいため、設定が容易である。
【０１３７】
上記の説明のウェブシステムでは、ＤＢサーバ２００やメールサーバ３００を例に挙げたが、その他のサービスを提供するサーバであっても構わない。また、データ変換部１１０の機能は、ウェブサーバ１００上ではなく、例えば、ファイアウォール３１上で実現することも考えられる。
【０１３８】
更に、使用する文字コードとしてユニコードを例に挙げて説明したが、他の文字コードを使用しても構わない。
以上、本件のデータ変換プログラム、データ変換装置およびデータ変換方法を図示の実施の形態に基づいて説明したが、これらに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。更に、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１３９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、コンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【０１４０】
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体には、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc - Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto - Optical disk）などがある。
【０１４１】
上記プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータに格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４２】
上記プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラム若しくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１４３】
以上、説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
（付記１）  第１段サービス提供手段および前記第１段サービス提供手段の要求に応じた処理を行う第２段サービス提供手段の処理に用いるデータを変換する処理をコンピュータに実行させるデータ変換プログラムにおいて、
前記コンピュータを、
特殊文字を前記第１段サービス提供手段および前記第２段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段、
前記中立文字を前記第２段サービス提供手段で文字参照に用いられる１文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段、
前記データが入力されると、前記中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて前記データに含まれる前記特殊文字を前記中立文字に変換した第１の変換データを生成し、当該第１の変換データを前記第１段サービス提供手段に出力する第１の変換手段、
前記第１段サービス提供手段の前記第１の変換データに対する処理により生成される処理後データが前記第１段サービス提供手段から出力されると、前記安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて前記処理後データに含まれる前記中立文字の少なくとも一部を前記安全文字列に変換した第２の変換データを生成し、前記第２段サービス提供手段に出力する第２の変換手段、
として機能させることを特徴とするデータ変換プログラム。
【０１４４】
（付記２）  前記安全文字変換情報には、前記中立文字と前記安全文字列との対応付けが前記処理後データのデータ構造を構成する構成要素毎に設定されており、
前記第２の変換手段は、前記処理後データに含まれる前記中立文字が属する前記構成要素を判定し、前記安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて、前記中立文字の少なくとも一部を、当該中立文字が属する構成要素に応じた前記安全文字列に変換する、
ことを特徴とする付記１記載のデータ変換プログラム。
【０１４５】
（付記３）  前記中立文字のうち、復元可能な前記特殊文字を定義した特殊文字復元情報を記憶する特殊文字復元情報記憶手段を更に有し、
前記第１の変換手段は、前記特殊文字復元情報記憶手段に記憶された前記特殊文字復元情報および前記中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて、前記第１の変換データに含まれる前記中立文字の少なくとも一部を、当該中立文字に対応する前記特殊文字に復元して、前記第１段サービス提供手段に出力する、
ことを特徴とする付記１記載のデータ変換プログラム。
【０１４６】
（付記４）  前記第１段サービス提供手段が複数あり、
前記特殊文字復元情報記憶手段に記憶された前記特殊文字復元情報は、前記複数の第１段サービス提供手段それぞれに対応付けて複数定義されており、
前記第１の変換手段は、前記特殊文字復元情報に記憶された前記複数の特殊文字復元情報のうち、前記第１の変換データの出力先の第１段サービス提供手段に対応する前記特殊文字復元情報を選択して、前記第１の変換データに含まれる前記中立文字の少なくとも一部を、選択した前記特殊文字復元情報に基づいて、当該中立文字に対応する前記特殊文字に復元する、
ことを特徴とする付記３記載のデータ変換プログラム。
【０１４７】
（付記５）  前記中立文字は、文字フォントが未定義の文字コードで表される文字であることを特徴とする付記１記載のデータ変換プログラム。
（付記６）  前記安全文字列は、前記第２段サービス提供手段の処理に応じて前記特殊文字をエスケープするエスケープ文字を含むことを特徴とする付記１記載のデータ変換プログラム。
【０１４８】
（付記７）  第１段サービス提供手段および前記第１段サービス提供手段の要求に応じた処理を行う第２段サービス提供手段の処理に用いるデータを変換するデータ変換装置において、
特殊文字を前記第１段サービス提供手段および前記第２段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段と、
前記中立文字を前記第２段サービス提供手段で文字参照に用いられる１文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段と、
前記データが入力されると、前記中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて前記データに含まれる前記特殊文字を前記中立文字に変換した第１の変換データを生成し、当該第１の変換データを前記第１段サービス提供手段に出力する第１の変換手段と、
前記第１段サービス提供手段の前記第１の変換データに対する処理により生成される処理後データが前記第１段サービス提供手段から出力されると、前記安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて前記処理後データに含まれる前記中立文字の少なくとも一部を前記安全文字列に変換した第２の変換データを生成し、前記第２段サービス提供手段に出力する第２の変換手段と、
を有することを特徴とするデータ変換装置。
【０１４９】
（付記８）  第１段サービス提供手段および前記第１段サービス提供手段の要求に応じた処理を行う第２段サービス提供手段の処理に用いるデータを変換するデータ変換装置のデータ変換方法において、
第１の変換手段が、前記データが入力されると、特殊文字を前記第１段サービス提供手段および前記第２段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて前記データに含まれる前記特殊文字を前記中立文字に変換した第１の変換データを生成して、当該第１の変換データを前記第１段サービス提供手段に出力し、
第２の変換手段が、前記第１段サービス提供手段の前記第１の変換データに対する処理により生成される処理後データが前記第１段サービス提供手段から出力されると、前記中立文字を前記第２段サービス提供手段で文字参照に用いられる１文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて前記処理後データに含まれる前記中立文字の少なくとも一部を前記安全文字列に変換した第２の変換データを生成して、前記第２段サービス提供手段に出力する、
ことを特徴とするデータ変換方法。
【図面の簡単な説明】
【０１５０】
【図１】本実施の形態の概要を示す図である。
【図２】本実施の形態のウェブシステムの構成を示す図である。
【図３】ウェブサーバのハードウェア構成を示す図である。
【図４】ウェブサーバの機能を示すブロック図である。
【図５】中立文字変換テーブルのデータ構造例を示す図である。
【図６】特殊文字復元テーブルのデータ構造例を示す図である。
【図７】ＨＴＭＬ用の安全文字変換テーブルのデータ構造例を示す図である。
【図８】ＳＱＬ用の安全文字変換テーブルのデータ構造例を示す図である。
【図９】電子メール用の安全文字変換テーブルのデータ構造例を示す図である。
【図１０】データ変換処理の手順を示すフローチャートである。
【図１１】特殊文字から中立文字への変換処理の手順を示すフローチャートである。
【図１２】中立文字から特殊文字への復元処理の手順を示すフローチャートである。
【図１３】中立文字から安全文字列への変換処理の手順を示すフローチャートである。
【図１４】データ変換処理の流れを示した模式図である。
【図１５】特殊文字から中立文字への変換処理の具体例を示す模式図である。
【図１６】中立文字から特殊文字への復元処理の具体例を示す模式図である。
【図１７】中立文字から安全文字列への変換処理の第１の具体例を示す模式図である。
【図１８】中立文字から安全文字列への変換処理の第２の具体例を示す模式図である。
【図１９】中立文字から安全文字列への変換処理の第３の具体例を示す模式図である。
【符号の説明】
【０１５１】
１  コンピュータ
１ａ  中立文字変換情報記憶手段
１ｂ  安全文字変換情報記憶手段
１ｃ  第１の変換手段
１ｄ  第１段サービス提供手段
１ｅ  第２の変換手段
１ｆ  第２段サービス提供手段
【図１】
2009301456.tif 000003
【図２】
2009301456.tif 000004
【図３】
2009301456.tif 000005
【図４】
2009301456.tif 000006
【図５】
2009301456.tif 000007
【図６】
2009301456.tif 000008
【図７】
2009301456.tif 000009
【図８】
2009301456.tif 000010
【図９】
2009301456.tif 000011
【図１０】
2009301456.tif 000012
【図１１】
2009301456.tif 000013
【図１２】
2009301456.tif 000014
【図１３】
2009301456.tif 000015
【図１４】
2009301456.tif 000016
【図１５】
2009301456.tif 000017
【図１６】
2009301456.tif 000018
【図１７】
2009301456.tif 000019
【図１８】
2009301456.tif 000020
【図１９】
2009301456.tif 000021