説明

データ変換プログラム、データ変換装置およびデータ変換方法

【課題】出力先に応じた漏れのないエスケープ処理を容易に可能とする。
【解決手段】中立文字変換情報記憶手段1aは、特殊文字を各サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する。安全文字変換情報記憶手段1bは、中立文字を第2段サービス提供手段1fで文字参照に用いられる1文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する。第1の変換手段1cは、中立文字変換情報記憶手段1aに記憶された中立文字変換情報に基づき、データに含まれる特殊文字を中立文字に変換し、第1段サービス提供手段1dに出力する。第2の変換手段1eは、第1段サービス提供手段1dの処理後データを受け付けると、安全文字変換情報記憶手段1bに記憶された安全文字変換情報に基づき、処理後データに含まれる中立文字の少なくとも一部を安全文字列に変換し、第2段サービス提供手段1fに出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ変換プログラム、データ変換装置およびデータ変換方法に関し、特に、サービス提供手段の処理に用いるデータを変換するデータ変換プログラム、データ変換装置およびデータ変換方法に関する。
【背景技術】
【0002】
従来、インターネット等のネットワークを介して、サーバがクライアントに様々なサービスを提供するシステムが利用されている。このようなシステムでは、サーバとして、例えば、ウェブアプリケーションを実行するウェブサーバが用いられる。ウェブアプリケーションは、HTTP(HyperText Transfer Protocol)により、HTML(HyperText Markup Language)等で記述されたウェブページをクライアントに送信し、複数のサービスに関して統一的なインタフェースをクライアントに提供する。また、ウェブアプリケーションは、クライアントから受信したリクエストに応じた処理を行い、そのレスポンスをクライアントに送信する。
【0003】
クライアントから送信されるリクエストには、クライアントの情報を示すパラメータ(例えば、CookieやPOST値等)が含まれる。このパラメータは、ウェブアプリケーションの処理に利用されたり、ウェブアプリケーションが更に連携する他システムに対して送信する命令に利用されたりする。ウェブアプリケーションと連携する他システムとしては、例えば、データベース(DB:DataBase)システムがある。ウェブアプリケーションは、クライアントからの処理に応じてデータベースにアクセスするためのSQL(Structured Query Language)文を生成する。また、ウェブアプリケーションは、クライアントからのリクエストに応じた処理の結果を、HTML文等のレスポンスによりクライアントのブラウザに送信する。
【0004】
ここで、ウェブアプリケーションが生成するブラウザへのレスポンスやSQL文等の命令には、クライアントから送信されるリクエストに含まれるパラメータをそのまま含むことが多い。このため、パラメータに不正なスクリプトやSQL文等の命令が含まれていると、クライアントのブラウザやデータベースで想定されていない動作が引き起こされる可能性がある。この問題を故意に利用した攻撃手法は、例えば、クロスサイトスクリプティング(XSS:Cross Site Scripting)やSQLインジェクションとして知られている。
【0005】
クロスサイトスクリプティングとは、ウェブアプリケーションが入力されたパラメータに含まれる不正スクリプトをそのままレスポンスのHTML文に含めてクライアントに送信し、ブラウザで不正スクリプトが実行されることで引き起こされる攻撃である。この攻撃を受けたクライアントは、入力した個人情報やCookieを第3者に盗み取られたり、なりすましの被害を受けたりする可能性がある。
【0006】
また、SQLインジェクションとは、ウェブアプリケーションが入力されたパラメータに含まれる不正な命令をそのままSQL文に含めてデータベースシステムに送信し、データベースシステムで不正な命令が実行されることで引き起こされる攻撃である。この攻撃を受けると、データベースに不正にアクセスされ、登録された情報の漏洩や改ざん等の被害を受ける可能性がある。
【0007】
そこで、このような攻撃に対し、十分なセキュリティ対策を講じて、システム利用の安全性を確保することが求められている。そして、このために、パラメータに含まれる不正な命令となりうる制御文字を正しくエスケープ処理する方法が用いられている。
【0008】
この方法として、クライアントとウェブサーバとの間でリクエストを仲介するウェブアプリケーションファイアウォール(WAF:Web Application Firewall)を設ける方法が知られている。ウェブアプリケーションファイアウォールを用いると、リクエストに含まれるパラメータを検査し、攻撃とみなされる不正な文字が含まれる場合には、該当の文字をエスケープ処理したり、リクエストを拒絶したりして、不正な文字をウェブサーバの前段で排除することができる。しかし、ウェブアプリケーションファイアウォールでは、ウェブサーバの前段でリクエストを判定するために、攻撃手法毎での対策が難しいという問題がある。例えば、クロスサイトスクリプティングやSQLインジェクション等を同一の設定できめ細かく防止しようとすると、一方の出力先にとっては正常なリクエストも拒絶の対象になってしまい、不便な場合がある。
【0009】
これに対し、クロスサイトスクリプティングやSQLインジェクション等の攻撃毎に検査対象の文字を予め登録し、HTML文やSQL文等の出力先に応じて必要な検査対象の文字を読み出して、出力先毎にきめ細かな検査およびエスケープ処理を可能とする方法が知られている(例えば、特許文献1,2参照)。
【0010】
また、出力先に応じた適切なエスケープ処理を設定するために、ウェブアプリケーションへのリクエストに検査用のトレース値を挿入して送信し、レスポンスに含まれるトレース値からパラメータの出力先を予め検査する方法も知られている(例えば、特許文献3,4参照)。
【0011】
また、SQLインジェクションに対して、ウェブアプリケーションがSQL文における命令を暗号化して生成し、データベースへのアクセスの前にプロキシサーバで復号する方法も知られている(例えば、非特許文献1参照)。この方法を用いると、リクエストに含まれるパラメータに不正なSQL命令が存在していたとしても、正しく暗号化されていなければSQL命令として復号されることはないため、SQLインジェクションによる攻撃を防止することができる。
【0012】
更に、データベースには暗号化した情報を登録し、ウェブアプリケーションがクライアントからのリクエストに含まれるパラメータ部分を暗号化した状態でSQL文を生成し、データベースにアクセスする方法も知られている(例えば、非特許文献2参照)。この方法を用いると、パラメータ部分に不正なSQL文が含まれていてもSQL実行時には暗号化された文字列としか認識されないため、攻撃者による不正なSQL文の実行を防止することができる。
【特許文献1】特開2007−047884号公報
【特許文献2】特開2004−533676号公報
【特許文献3】特開2004−164617号公報
【特許文献4】特開2007−004685号公報
【非特許文献1】S.W.Boyd and A.D.Keromytis, "SQLrand : Preventing SQL Injection Attacks", the 2nd Applied Cryptography and Network Security (ACNS) Conference, 2004-06.
【非特許文献2】長野文昭、外2名、「ユーザの入力値の暗号化によるSQLインジェクション攻撃防御手法」、コンピュータセキュリティシンポジウム2006(CSS2006)、社団法人情報処理学会、2006年10月
【発明の開示】
【発明が解決しようとする課題】
【0013】
しかし、上記特許文献1〜4に記載の方法では、HTML文やSQL文等の複数の出力先に応じてエスケープ処理の対象とする文字を網羅的に設定する必要がある。このため、設定に漏れが生じ易く、漏れた設定によって攻撃を受ける可能性がある。
【0014】
更に、上記非特許文献1,2に記載の方法では、暗号化された命令文を復号するためのプロキシサーバの設置やデータベースの登録情報の暗号化等、導入におけるシステムへの影響が大きいという問題がある。また、暗号化・復号のための鍵を管理する必要があり、この鍵を盗み取られてしまうと、第3者に不正にデータベースにアクセスされてしまうという問題がある。このように、暗号化技術を利用すると、サーバ管理者にかかる負担が過大となる。そのため、サーバ管理者への負担が少なくてすむエスケープ処理技術を用いて、SQLインジェクション攻撃等からの高い安全性を確保する技術が求められている。
【0015】
本件はこのような点に鑑みてなされたものであり、出力先に応じた漏れのないエスケープ処理を容易に可能とするデータ変換プログラム、データ変換装置およびデータ変換方法を提供することを目的とする。
【課題を解決するための手段】
【0016】
上記課題を解決するために、第1段サービス提供手段および第1段サービス提供手段の要求に応じた処理を行う第2段サービス提供手段の処理に用いるデータを変換する処理をコンピュータに実行させるデータ変換プログラムが提供される。このデータ変換プログラムを実行するコンピュータは、中立文字変換情報記憶手段、安全文字変換情報記憶手段、第1の変換手段および第2の変換手段を有する。中立文字変換情報記憶手段は、特殊文字を第1段サービス提供手段および第2段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する。安全文字変換情報記憶手段は、中立文字を第2段サービス提供手段で文字参照に用いられる1文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する。第1の変換手段は、データが入力されると、中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいてデータに含まれる特殊文字を中立文字に変換した第1の変換データを生成し、この第1の変換データを第1段サービス提供手段に出力する。第2の変換手段は、第1段サービス提供手段の第1の変換データに対する処理により生成される処理後データが第1段サービス提供手段から出力されると、安全文字変換情報記憶手段に記憶された安全文字変換情報に基づいて処理後データに含まれる中立文字の少なくとも一部を安全文字列に変換した第2の変換データを生成し、第2段サービス提供手段に出力する。
【0017】
このようなデータ変換プログラムを実行するコンピュータによれば、第1の変換手段により、データが入力されると、特殊文字を第1段サービス提供手段および第2段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて、データに含まれる特殊文字を中立文字に変換した第1の変換データが生成され、この第1の変換データが第1段サービス提供手段に出力される。そして、第2の変換手段により、第1段サービス提供手段の第1の変換データに対する処理により生成される処理後データが第1段サービス提供手段から出力されると、中立文字を第2段サービス提供手段で文字参照に用いられる1文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段に記憶された安全文字変換情報に基づいて、処理後データに含まれる中立文字の少なくとも一部が安全文字列に変換した第2の変換データが生成され、第2段サービス提供手段に出力される。
【0018】
また、上記課題を解決するために、上記データ変換プログラムを実行するコンピュータと同様の処理を行うデータ変換装置およびデータ変換方法が提供される。
【発明の効果】
【0019】
上記データ変換プログラム、データ変換装置およびデータ変換方法によれば、出力先に応じた漏れのないエスケープ処理が容易に可能となる。
【発明を実施するための最良の形態】
【0020】
以下、本実施の形態を図面を参照して詳細に説明する。まず、本実施の形態の概要について説明し、その後、本実施の形態の具体的な内容を説明する。
図1は、本実施の形態の概要を示す図である。図1に示すコンピュータ1は、本実施の形態のデータ変換プログラムを実行する。これにより、コンピュータ1は、第1段サービス提供手段および第1段サービス提供手段からの要求に応じた処理を行う第2段サービス提供手段の処理に用いるデータを変換する。コンピュータ1は、中立文字変換情報記憶手段1a、安全文字変換情報記憶手段1b、第1の変換手段1c、第1段サービス提供手段1d、第2の変換手段1eおよび第2段サービス提供手段1fを有する。
【0021】
中立文字変換情報記憶手段1aは、特殊文字を第1段サービス提供手段1dおよび第2段サービス提供手段1fが使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する。中立文字とは、例えば、文字コードの外字領域等で第1段サービス提供手段1dおよび第2段サービス提供手段1fで使用しない文字コードで示される文字である。
【0022】
安全文字変換情報記憶手段1bは、中立文字を第2段サービス提供手段1fで文字参照に用いられる1文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する。文字参照による安全文字列と特殊文字との対応付けは、第2段サービス提供手段1fの処理に用いる制御文字に応じて予め定義される。
【0023】
第1の変換手段1cは、データが入力されると、中立文字変換情報記憶手段1aに記憶された中立文字変換情報に基づいてデータに含まれる特殊文字を中立文字に変換した第1の変換データを生成する。そして、第1の変換手段1cは、生成した第1の変換データを第1段サービス提供手段1dに出力する。
【0024】
第1段サービス提供手段1dは、第1の変換手段1cから取得した第1の変換データに基づいて処理を行う。第1段サービス提供手段1dは、第2段サービス提供手段1fと連携して処理を実行可能であり、第2段サービス提供手段1fに要求する命令を含む第1の変換データに対する処理後データを生成する。第1段サービス提供手段1dは、生成した処理後データを第2の変換手段1eに出力する。第1段サービス提供手段1dは、例えば、ウェブアプリケーションである。
【0025】
第2の変換手段1eは、第1段サービス提供手段1dから第1の変換データの処理後データを取得すると、安全文字変換情報記憶手段1bに記憶された安全文字変換情報に基づいて処理後データに含まれる中立文字を安全文字列に変換した第2の変換データを生成する。そして、第2の変換手段1eは、生成した第2の変換データを第2段サービス提供手段1fに出力する。
【0026】
第2段サービス提供手段1fは、第2の変換手段1eから取得した第2の変換データに基づいて処理を行う。第2段サービス提供手段1fは、例えば、データベース(以下、DBと略記する)システムである。
【0027】
このように、コンピュータ1は、入力されたデータに対して2段階の変換処理を施す。1段階目の変換処理では、データに含まれる特殊文字が全て中立文字に変換される。すなわち、例え入力データに不正な命令が含まれていたとしても、全て安全な文字列に変換することができる。
【0028】
また、2段階目の変換処理では、第1段サービス提供手段1dにおける処理後のデータに含まれる中立文字のうちの一部が第2段サービス提供手段1fにおける処理に応じて安全文字列に変換される。すなわち、2段階目の変換処理では、既に安全な中立文字に変換済みの文字のうち第2段サービス提供手段1fで利用可能な文字のみを再度変換する。このため、例え設定に漏れが生じたとしても、第2段サービス提供手段1fに送信されるデータは、不正な文字列を含むことがないのでセキュリティ性が高い。また、この変換処理を行うために、第2段サービス提供手段1fにおける処理で利用可能な安全文字列のデータを安全文字変換情報記憶手段1bに予め登録しておくだけでよいので、その設定が容易である。
【0029】
ところで、図1に示した技術は、インターネットを介したウェブサービスに特に有用である。そこで、図1に示した技術を適用したウェブシステムの例を用いて本実施の形態を図面を参照して詳細に説明する。
【0030】
図2は、本実施の形態のウェブシステムの構成を示す図である。図2に示すウェブシステムは、インターネット20を介して登録されたユーザに対して掲示板や電子メールの送受信サービスを提供する。本実施の形態に係るウェブシステムでは、ウェブサーバ100が非武装地帯(DMZ:DeMilitarized Zone)のネットワーク30に接続されている。また、DBサーバ200およびメールサーバ300がネットワーク40に接続されている。
【0031】
ネットワーク30,40は、ファイアウォール31を介して接続され、また、ネットワーク30とインターネット20とがファイアウォール31を介して接続されている。ファイアウォール31は、インターネット20と直接通信を行うDMZのネットワーク30とインターネット20と直接通信を行わない内部側のネットワーク40との間のIP(Internet Protocol)通信を制御し、内部側のネットワーク40のセキュリティを確保する。
【0032】
更に、インターネット20には、端末装置21,22,23が接続されている。端末装置21,22,23は、ウェブシステムを利用するクライアントである。
ウェブサーバ100は、端末装置21,22,23に提供するサービスの機能を実現するウェブアプリケーションを実行する。ウェブサーバ100は、端末装置21,22,23にウェブアプリケーションを利用するためのインタフェースを提供する。このインタフェースは、例えば、HTML文で記述されたウェブページである。ウェブサーバ100は、端末装置21,22,23からのリクエストに応じて、リクエストに含まれるパラメータを利用したウェブページを含むHTML文等のレスポンスを動的に生成する。レスポンスは、ウェブサーバ100から端末装置21,22,23にHTTPにより送信されて、端末装置21,22,23のブラウザ(以下では、単にブラウザという場合、端末装置21,22,23のブラウザを指すものとする)で実行され、その内容が出力される。
【0033】
また、端末装置21,22,23を使用するユーザは、ウェブページの出力内容に従って操作を行い、ウェブサーバ100に対して、利用する処理内容に応じたリクエストを送信することで、ウェブアプリケーションが提供するサービスを利用することができる。
【0034】
DBサーバ200は、ウェブシステムのユーザ情報を記憶/管理するデータベースシステムである。DBサーバ200には、ウェブサーバ100で稼動するサービスで利用されるデータが格納されている。DBサーバ200は、ウェブサーバ100のウェブアプリケーションから送信される命令(SQL文)に基づいて、ユーザ情報の照会や更新等の処理を行う。DBサーバ200には、例えば、各ユーザのIDやパスワード等が登録される。
【0035】
メールサーバ300は、上記ウェブシステムのユーザが作成する電子メールの送受信や保存等を行うサーバである。メールサーバ300は、ウェブサーバ100のウェブアプリケーションからの命令に基づいて、電子メールの送信処理を行う。
【0036】
以下の説明では、DBサーバ200とメールサーバ300とを合わせて業務サーバと呼ぶこととする。
ここで、ウェブサーバ100のウェブアプリケーションが実行する機能に関して説明する。このウェブアプリケーションは、例として、ユーザに与えられたIDおよびパスワードを照合して、ウェブシステムへのログイン処理を行うものとする。そして、ウェブアプリケーションは、正常にログインしたユーザに、掲示板や電子メールの送受信サービスを提供する。
【0037】
ウェブアプリケーションは、端末装置からのリクエストに応じて、リクエストに含まれるパラメータを含んだHTML文等によるレスポンス(例えば、掲示板への記事入力後画面)を生成して、リクエスト元の端末装置に送信する。
【0038】
また、ウェブアプリケーションは、端末装置からのリクエストに応じてDBサーバ200やメールサーバ300と連携した処理を行う。このため、ウェブアプリケーションは、DBサーバ200やメールサーバ300が処理を実行するための命令を生成する。例えば、ウェブアプリケーションは、ログイン処理を行う際には、DBサーバ200に登録されたユーザ情報を参照する。この場合、ウェブアプリケーションは、DBサーバ200で処理を実行するためのSQL文を生成する。以下の説明では、ウェブアプリケーションが生成する業務サーバへの命令も含めてレスポンスと呼ぶこととする。
【0039】
ウェブアプリケーションは、レスポンスを生成する際に、端末装置21,22,23から送信されたリクエストに含まれるユーザ情報等のパラメータを挿入する。
このようなウェブサーバ100では、クライアントから取得したパラメータに不正なスクリプトやSQL命令が含まれていると、クロスサイトスクリプティング(以下、XSSと略記する)やSQLインジェクション等による攻撃を受ける可能性がある。
【0040】
しかし、ウェブサーバ100では、このようなパラメータに対して、適正にエスケープ処理を施して上記の攻撃を防止する。以下の説明では、このようなウェブサーバ100の機能構成に関して更に詳細に説明する。
【0041】
図3は、ウェブサーバのハードウェア構成を示す図である。ウェブサーバ100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス107を介してRAM(Random Access Memory)102、HDD(Hard disk Drive)103、グラフィック処理装置104、入力インタフェース105および通信インタフェース106が接続されている。
【0042】
RAM102には、CPU101に実行させるOS(Operating System)のプログラムやアプリケーションソフト(以下、アプリケーションという)のプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。
【0043】
HDD103は、データを記憶するためのディスク装置である。HDD103には、OSのプログラムやアプリケーションのプログラムが格納される。また、HDD103には、CPU101による処理に必要な各種データが格納される。
【0044】
グラフィック処理装置104には、モニタ11が接続されている。グラフィック処理装置104は、CPU101からの命令に従って、画像をモニタ11の画面に表示させる。入力インタフェース105には、キーボード12とマウス13とが接続されている。入力インタフェース105は、キーボード12やマウス13から送られてくる信号を、バス107を介してCPU101に送信する。通信インタフェース106は、ネットワーク30に接続されている。通信インタフェース106は、ネットワーク30を介して、ファイアウォール31、端末装置21,22,23、および他のサーバとの間でデータの送受信を行う。
【0045】
なお、端末装置21,22,23、DBサーバ200およびメールサーバ300も同様のハードウェア構成により実現される。
また、以下の説明では、端末装置21,22,23のうち、端末装置21を用いて説明するが端末装置22,23に関しても同様の説明となる。
【0046】
図4は、ウェブサーバの機能を示すブロック図である。ウェブサーバ100には、端末装置21がインターネット20を介して接続される。また、ウェブサーバ100には、ネットワーク30,40を介してDBサーバ200およびメールサーバ300が接続される。
【0047】
ウェブサーバ100は、データ変換部110、特殊文字復元テーブル記憶部120およびウェブアプリケーション130を有する。
データ変換部110は、端末装置21とウェブアプリケーション130間およびウェブアプリケーションと業務サーバ間で送受信されるリクエストやレスポンスを中継する。そして、データ変換部110は、中継するリクエストやレスポンスのパラメータに含まれる文字列を必要に応じて変換する処理を行う。
【0048】
データ変換部110は、中立文字変換テーブル記憶部111、安全文字変換テーブル記憶部112、中立文字変換部113、特殊文字復元部114、サービス間通信制御部115、安全文字変換部116および構成特定部117を有する。
【0049】
中立文字変換テーブル記憶部111は、特殊文字を中立文字に対応付けた中立文字変換テーブルを記憶する。
ここで、特殊文字とは、ウェブアプリケーション130、ブラウザおよび業務サーバにおける処理に特別な作用を与える文字であり、例えば、「&」や「<」等の記号が該当する。
【0050】
中立文字とは、ウェブアプリケーション130、ブラウザおよび業務サーバの各処理で使用しない文字である。例えば、文字コードとしてユニコード(Unicode)を用いる場合、中立文字には、私用領域(外字領域)に含まれる文字コードで示される文字を用いることができる。また、各処理で使用しないと考えられる文字(例えば、オーガム文字)を中立文字として用いてもよい。以下の説明では、ユニコードを使用する文字コードとする。
【0051】
安全文字変換テーブル記憶部112は、ブラウザや業務サーバの各処理で使用可能な特殊文字に対する文字参照用の1文字以上の安全文字列に中立文字を対応付けた安全文字変換テーブルを記憶する。ここで、文字参照用の安全文字列とは、DBサーバ200やメールサーバ300の各処理で利用可能なエスケープ用の文字列である。例えば、ブラウザ上に「&」記号を出力したい場合、HTML文では「&」記号に対応する安全文字列「&」を記述する。
【0052】
中立文字変換部113は、端末装置21からリクエストを受け付けると、中立文字変換テーブル記憶部111に記憶された中立文字変換テーブルを参照して、リクエストのパラメータに含まれる特殊文字を中立文字に変換する。そして、中立文字変換部113は、中立文字変換後のリクエストを特殊文字復元部114に出力する。
【0053】
特殊文字復元部114は、中立文字変換部113から中立文字変換後のリクエストを取得すると、そのリクエストの出力先となるウェブアプリケーション130を特定する。そして、特定したウェブアプリケーション130に対応する特殊文字復元テーブルを特殊文字復元テーブル記憶部120から取得する。そして、特殊文字復元部114は、取得した特殊文字復元テーブルおよび中立文字変換テーブル記憶部111に記憶された中立文字変換テーブルに基づいて、中立文字変換後のリクエストに含まれる中立文字の一部を特殊文字に復元する。ここで復元される特殊文字は、ウェブアプリケーション130の処理に必要となる特殊文字である。このような特殊文字は、ウェブアプリケーション毎に予め定義され、特殊文字復元テーブルに設定される。特殊文字復元部114は、特殊文字の一部を復元したリクエストをウェブアプリケーション130に出力する。
【0054】
サービス間通信制御部115は、ウェブアプリケーション130が生成したブラウザや業務サーバに対するレスポンスを取得する。サービス間通信制御部115は、取得したレスポンスを安全文字変換部116に出力する。そして、サービス間通信制御部115は、安全文字変換部116から安全文字変換後のレスポンスを取得し、ブラウザや業務サーバに送信する。
【0055】
安全文字変換部116は、サービス間通信制御部115からレスポンスを取得してその出力先を特定する。また、安全文字変換部116は、取得したレスポンスを構成特定部117に出力する。そして、安全文字変換部116は、構成特定部117からレスポンスに含まれるパラメータが使用されている構成の特定結果を取得する。安全文字変換部116は、安全文字変換テーブル記憶部112に記憶されたレスポンスの出力先および構成特定部117の判定結果に対応する安全文字変換テーブルに基づいて、レスポンスに含まれるパラメータに存在する中立文字を安全文字列に変換する。安全文字変換部116は、安全文字変換後のレスポンスをサービス間通信制御部115に出力する。
【0056】
構成特定部117は、安全文字変換部116から取得したレスポンスのパラメータが使用されている構成を特定する。ここでいう構成の特定とは、例えば、HTML文では、該当のパラメータがscriptタグやbodyタグ等のいずれの構成要素に含まれているかを示している。構成特定部117は、特定した構成を安全文字変換部116に通知する。
【0057】
特殊文字復元テーブル記憶部120は、中間文字にウェブアプリケーション130で使用可能な特殊文字を対応付けた特殊文字復元テーブルを記憶する。特殊文字復元テーブル記憶部は、ウェブアプリケーションの数に応じて予め用意される。
【0058】
ウェブアプリケーション130は、業務サーバへのログイン処理や掲示板サービスの機能を実現する。ウェブアプリケーション130は、特殊文字復元部114からリクエストを取得すると、リクエストに応じてログイン処理や掲示板への書き込み処理を実行し、処理結果に応じてブラウザや業務サーバに対するレスポンスを生成する。ウェブアプリケーション130は、生成したレスポンスをサービス間通信制御部115に出力する。
【0059】
なお、ウェブアプリケーション130は、提供するサービスに応じて複数存在してもよい。特殊文字復元テーブル記憶部120は、ウェブアプリケーション130と1対1に設けられており、ウェブアプリケーションが複数存在する場合には、特殊文字復元テーブルも複数存在することになる。
【0060】
図5は、中立文字変換テーブルのデータ構造例を示す図である。中立文字変換テーブル111aは、中立文字変換テーブル記憶部111に記憶され、中立文字変換部113および特殊文字復元部114によって参照される。中立文字変換テーブル111aには、特殊文字を示す項目および中立文字(コード)を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの特殊文字の中立文字への変換に関する情報を構成する。
【0061】
特殊文字を示す項目には、ウェブアプリケーション130、ブラウザおよび業務サーバの各処理において制御用の文字となり得る文字が設定される。中立文字(コード)を示す項目には、特殊文字に対応する中立文字が設定される。図5では、ユニコードの私用領域(U+E000〜U+F8FF)に含まれる文字コード(ただし、括弧で括ってある)によって中立文字を示している。図5における中立文字の表示方法は、以下の説明においても同様とする。
【0062】
中立文字変換テーブル111aには、例えば、特殊文字が「<」、中立文字(コード)が「(U+E001)」という情報が設定される。これは、端末装置21からのリクエストのパラメータに特殊文字「<」が含まれている場合、これが中立文字(コード)「(U+E001)」に変換されることを示している。
【0063】
図6は、特殊文字復元テーブルのデータ構造例を示す図である。特殊文字復元テーブル120aは、特殊文字復元テーブル記憶部120に記憶され、特殊文字復元部114によって参照される。特殊文字復元テーブル120aには、パターンPtを示す項目および復元中立文字集合Sを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの中立文字の復元に関する情報を構成する。
【0064】
パターンPtを示す項目には、リクエストに含まれるパラメータのウェブアプリケーション130が提供する掲示板サービスでの使用箇所に関する情報が設定される。復元中立文字集合Sを示す項目には、パターンPtに応じた復元可能な中立文字の集合が設定される。
【0065】
特殊文字復元テーブル120aには、例えば、パターンPtが「電話番号」、復元中立文字集合Sが「{U+E008,U+E009,・・・}」という情報が設定される。これは、パラメータの使用箇所が「電話番号」である場合、中立文字「(U+E008),(U+E009),・・・」が中立文字変換部113による変換前の特殊記号に復元されることを示している。
【0066】
特殊文字復元テーブルは、ウェブアプリケーションの開発者によって、ウェブアプリケーションと1対1に対応するよう予め用意される。
図7は、HTML用の安全文字変換テーブルのデータ構造例を示す図である。安全文字変換テーブル112aは、安全文字変換テーブル記憶部112に記憶され、安全文字変換部116によって参照される。安全文字変換テーブル112aには、中立文字(コード)を示す項目および安全文字列を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの中立文字の安全文字列への変換に関する情報を構成する。
【0067】
中立文字(コード)を示す項目には、変換対象の中立文字が設定される。安全文字列を示す項目には、使用される構成毎に中立文字に対応する安全文字列が設定される。
安全文字変換テーブル112aには、例えば、中立文字(コード)が「(U+E003)」、HTMLの本文(例えば、bodyタグ内)における安全文字列が「'」、HTMLのJava(登録商標)script(例えば、scriptタグ内)における安全文字列が「¥’」という情報が設定される。これは、ウェブアプリケーション130からブラウザに対するHTML文のレスポンスに中立文字「(U+E003)」が含まれており、それが、本文を構成する構成要素で使用されている場合には、「'」に変換されることを示している。また、HTML文のレスポンスに中立文字「(U+E003)」が含まれており、それが、Javascript文を構成する構成要素で使用されている場合には、「¥’」に変換することを示している。
【0068】
図8は、SQL用の安全文字変換テーブルのデータ構造例を示す図である。安全文字変換テーブル112bは、安全文字変換テーブル記憶部112に記憶され、安全文字変換部116によって参照される。安全文字変換テーブル112bには、中立文字(コード)を示す項目および安全文字列(SQL)を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの中立文字の安全文字列への変換に関する情報を構成する。
【0069】
中立文字(コード)を示す項目には、変換対象の中立文字が設定される。安全文字列を示す項目には、中立文字に対応する安全文字列が設定される。
安全文字変換テーブル112bには、例えば、中立文字(コード)が「(U+E003)」、SQL文における安全文字列が「’’(シングルクォーテーション2つ)」という情報が設定される。これは、ウェブアプリケーション130からDBサーバ200に対するSQL文に中立文字「(U+E003)」が含まれている場合には、安全文字列「’’」に変換されることを示している。ここで、SQL文では「’(シングルクォーテーション)」は制御文字として扱われるため、リテラル中で使用するためには上記のようにエスケープされる必要がある。
【0070】
図9は、電子メール用の安全文字変換テーブルのデータ構造例を示す図である。安全文字列変換テーブル112cは、安全文字変換テーブル記憶部112に記憶され、安全文字変換部116によって参照される。安全文字変換テーブル112cには、中立文字(コード)を示す項目および安全文字列を示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つの中立文字の安全文字列への変換に関する情報を構成する。
【0071】
中立文字(コード)を示す項目には、変換対象の中立文字が設定される。安全文字列を示す項目には、使用される構成要素毎に中立文字に対応する安全文字列が設定される。
安全文字変換テーブル112cには、例えば、中立文字(コード)が「(U+E001)」、メールのアドレスにおける安全文字列が「(除去)」、メールの本文における安全文字列が「<」という情報が設定される。これは、ウェブアプリケーション130からメールサーバ300に対する命令に中立文字「(U+E001)」が含まれており、それが、アドレスを構成する構成要素で使用されている場合には、除去されることを示している。また、同様に中立文字「(U+E001)」が含まれており、それが、本文を構成する構成要素で使用されている場合には、「<」に変換されることを示している。
【0072】
次に、以上のような構成におけるウェブサーバ100におけるデータ変換処理の詳細を説明する。
図10は、データ変換処理の手順を示すフローチャートである。以下、図10に示す処理をステップ番号に沿って説明する。
【0073】
[ステップS100]中立文字変換部113は、端末装置21からのリクエストを取得する。リクエストには、ユーザの利用したいサービスに応じて、例えば、端末装置21のブラウザからGET送信やPOST送信されるユーザIDやパスワード、掲示板に入力する記事、電子メール送信宛先等の情報が、それぞれ個別のパラメータとして含まれる。
【0074】
[ステップS200]中立文字変換部113は、取得したリクエストのパラメータに含まれる特殊文字を、中立文字変換テーブル記憶部111に記憶された中立文字変換テーブル112aに基づいて中立文字に変換する。中立文字変換部113は、変換後リクエストを特殊文字復元部114に出力する。
【0075】
[ステップS300]特殊文字復元部114は、中立文字変換部113から取得した変換後リクエストに含まれる中立文字を、特殊文字復元テーブル記憶部120に記憶された特殊文字復元テーブル120aに基づいて復元する。特殊文字復元部114は、復元後リクエストをウェブアプリケーション130に出力する。
【0076】
[ステップS400]ウェブアプリケーション130は、特殊文字復元部114から取得した復元後リクエストに基づく処理を実行する。ここでは、ウェブアプリケーション130は、ウェブシステムを利用するためのログイン処理や掲示板への書き込み処理を実行する。
【0077】
[ステップS500]ウェブアプリケーション130は、ステップS400における処理に応じたブラウザや業務サーバに対するレスポンスを生成する。このとき、ウェブアプリケーション130は、必要に応じてレスポンスのパラメータに含まれる特殊文字を再度中立文字に変換または、削除する。ウェブアプリケーション130は、生成したレスポンスをサービス間通信制御部115に出力する。サービス間通信制御部115は、取得したレスポンスを安全文字変換部116に出力する。
【0078】
[ステップS600]安全文字変換部116は、ウェブアプリケーション130から取得したレスポンスのパラメータに含まれる中立文字を、その出力先および構成要素に応じた安全文字列に変換する。安全文字変換部116は、安全文字変換後のレスポンスをサービス間通信制御部115に出力する。
【0079】
[ステップS700]サービス間通信制御部115は、安全文字変換部116から取得した変換後レスポンスを送信先であるブラウザまたは業務サーバに送信する。
このようにウェブサーバ100では、まずリクエストのパラメータに含まれる特殊文字を全て中立文字に変換し、各部の処理の必要に応じて特殊文字への復元および安全文字列への変換を行う。
【0080】
これにより、各部の処理に対してエスケープ処理の対象とする文字を設定する方法に比べて、設定漏れによるセキュリティの穴ができないため、セキュリティ性が高い。
次に、図10のステップS200で実行する処理を詳細に説明する。
【0081】
図11は、特殊文字から中立文字への変換処理の手順を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
[ステップS201]中立文字変換部113は、リクエストに含まれるパラメータ群Pを抽出する。パラメータ群Pは、図10のステップS100で取得したユーザIDやパスワード、掲示板に入力する記事、電子メール送信宛先等のパラメータの集合である。
【0082】
[ステップS202]中立文字変換部113は、抽出したパラメータ群Pからパラメータpを抽出する。
[ステップS203]中立文字変換部113は、抽出したパラメータpに含まれる文字cを順に取得する。
【0083】
[ステップS204]中立文字変換部113は、取得した文字cが特殊文字であるか否かを判定する。中立文字変換部113は、取得した文字cが中立文字変換テーブル111aの特殊文字の項目に設定されていれば、文字cは特殊文字であると判定することができる。特殊文字である場合、処理がステップS205に移される。特殊文字でない場合、処理がステップS207に移される。
【0084】
[ステップS205]中立文字変換部113は、中立文字変換テーブル記憶部111に記憶された中立文字変換テーブル111aに基づいて、ステップS204にて判定した特殊文字に対応する中立文字を特定する。
【0085】
[ステップS206]中立文字変換部113は、文字cをステップS205で特定した中立文字に変換する。
[ステップS207]中立文字変換部113は、パラメータpに含まれる全ての文字が判定済みか否かを判定する。全ての文字を判定済みでない場合、上記ステップS203で取得済みの文字を取得対象から除外して、処理がステップS203に移される。全ての文字を判定済みである場合、処理がステップS209に移される。
【0086】
[ステップS208]中立文字変換部113は、パラメータ群Pから全てのパラメータを抽出済みであるか否かを判定する。全て抽出済みでない場合、上記ステップS202で抽出したパラメータを抽出対象から除外して、処理がステップS202に移される。全て抽出済みである場合、処理がステップS209に移される。
【0087】
[ステップS209]中立文字変換部113は、中立文字変換後のリクエストを特殊文字復元部114に出力する。
このように、中立文字変換部113は、まず、端末装置21から取得したリクエストのパラメータに含まれる特殊文字を全て中立文字に変換する。
【0088】
これにより、例え端末装置21から取得したリクエストのパラメータに不正な命令が含まれていたとしても、全て安全な文字列に変換することができる。
次に、図10のステップS300で実行する処理を詳細に説明する。
【0089】
図12は、中立文字から特殊文字への復元処理の手順を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
[ステップS301]特殊文字復元部114は、リクエストの出力先ウェブアプリケーションに応じて特殊文字復元テーブル記憶部に記憶された特殊文字復元テーブルを選択する。本例では、特殊文字復元部114は、出力先のウェブアプリケーション130に対して、特殊文字復元テーブル記憶部120に記憶された特殊文字復元テーブル120aを選択する。
【0090】
[ステップS302]特殊文字復元部114は、中立文字変換部113から取得した中立文字変換後のリクエストから、パラメータ群Pを抽出する。
[ステップS303]特殊文字復元部114は、抽出したパラメータ群Pからパラメータpを抽出する。
【0091】
[ステップS304]特殊文字復元部114は、選択した特殊文字復元テーブル120aに基づいて、抽出したパラメータpのウェブアプリケーション130における使用箇所(使用パターンPt)を特定する。使用パターンPtとは、例えば、掲示板であれば、掲示する記事や連絡先(メールアドレスや電話番号)等である。
【0092】
[ステップS305]特殊文字復元部114は、選択した特殊文字復元テーブル120aに基づいて、特定したパターンPtに対応する復元中立文字集合Sを取得する。
[ステップS306]特殊文字復元部114は、パラメータpから順に文字cを取得する。
【0093】
[ステップS307]特殊文字復元部114は、取得した文字cが復元中立文字集合Sに含まれるか否かを判定する。含まれる場合、すなわち、文字cが復元対象の中立文字である場合、処理がステップS308に移される。含まれない場合、すなわち、文字cが復元対象でない場合、処理がステップS310に移される。
【0094】
[ステップS308]特殊文字復元部114は、中立文字変換テーブル記憶部111に記憶された中立文字変換テーブル111aに基づいて、中立文字cに対応する特殊文字を取得する。
【0095】
[ステップS309]特殊文字復元部114は、中立文字変換テーブル111aに基づいて中立文字cを取得した特殊文字に復元する。
[ステップS310]特殊文字復元部114は、パラメータpに含まれる全ての文字が判定済みか否かを判定する。全ての文字を判定済みでない場合、上記ステップS306で取得済みの文字を取得対象から除外して、処理がステップS306に移される。全ての文字を判定済みである場合、処理がステップS311に移される。
【0096】
[ステップS311]特殊文字復元部114は、パラメータ群Pから全てのパラメータを抽出済みであるか否かを判定する。全て抽出済みでない場合、上記ステップS303で抽出したパラメータを抽出対象から除外して、処理がステップS303に移される。全て抽出済みである場合、処理がステップS312に移される。
【0097】
[ステップS312]特殊文字復元部114は、特殊文字復元後のリクエストをウェブアプリケーション130に出力する。
このように、特殊文字復元部114は、ウェブアプリケーション130の処理の必要に応じてリクエストのパラメータのうち変換した中立文字の一部を特殊文字に復元する。特殊文字復元部114の復元処理の処理対象となる文字は、既に安全な中立文字に変換済みの文字である。
【0098】
このため、例え特殊文字復元テーブル120aの設定に漏れがあったとしても、特殊文字復元後のリクエストには不正な命令を含むことがなくなるため、セキュリティ性が高い。また、この復元処理を行うために、特殊文字復元テーブル120aを作成して特殊文字復元テーブル記憶部120に格納しておけばよいため、設定が容易である。特殊文字復元テーブル記憶部120は、ウェブアプリケーションが新たに追加または更新されることも考えられるため、開発者が自由に設定を変更可能な記憶領域に配置されることが望ましい。
【0099】
次に、図10のステップS600で実行する処理を詳細に説明する。
図13は、中立文字から安全文字列への変換処理の手順を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
【0100】
[ステップS601]安全文字変換部116は、サービス間通信制御部115からウェブアプリケーション130がブラウザや業務サーバに対して生成したレスポンスを取得する。
【0101】
[ステップS602]安全文字変換部116は、レスポンスの出力先がブラウザであるか、DBサーバ200であるか、メールサーバ300であるかを特定する。
[ステップS603]安全文字変換部116は、レスポンスに含まれる文字cを取得する。
【0102】
[ステップS604]安全文字変換部116は、取得した文字cが中立文字であるか否かを判定する。中立文字である場合、レスポンスが構成特定部117に出力されて、処理がステップS605に移される。中立文字でない場合、処理がステップS609に移される。
【0103】
[ステップS605]構成特定部117は、レスポンスに含まれる中立文字cが使用されている構成要素を特定する。構成特定部117は、例えば、HTML文であれば、該当の中立文字cが、bodyタグやscriptタグ等、いずれのタグ内に記述されているかを解析することによって使用されている構成要素を特定することができる。構成特定部117は、構成要素の特定結果を安全文字変換部116に通知する。
【0104】
[ステップS606]安全文字変換部116は、レスポンスの出力先に応じて安全文字変換テーブル記憶部112に記憶された安全文字変換テーブル112a,112b,112cのいずれかを選択する。例えば、安全文字変換部116は、レスポンスの出力先がブラウザである場合、安全文字変換テーブル112aを選択する。
【0105】
[ステップS607]安全文字変換部116は、選択した安全文字変換テーブルから構成特定部117による中立文字cの含まれる構成要素の特定結果に対応する安全文字列を取得する。
【0106】
[ステップS608]安全文字変換部116は、中立文字cを取得した安全文字列に変換する。例えば、レスポンスの出力先がブラウザであり、構成特定部117によって中立文字(U+E001)を含む構成要素が、Javascript文であると特定されたとする。この場合、安全文字変換部116は、安全文字変換テーブル112aに基づいて、中立文字(U+E001)をJavascript文における安全文字列「<」に変換する。
【0107】
[ステップS609]安全文字変換部116は、レスポンスに含まれる全ての文字が判定済みか否かを判定する。全ての文字を判定済みでない場合、上記ステップS603で取得済みの文字を取得対象から除外して、処理がステップS603に移される。全ての文字を判定済みである場合、処理がステップS610に移される。
【0108】
[ステップS610]安全文字変換部116は、サービス間通信制御部115に安全文字変換後のレスポンスを出力する。
このように、安全文字変換部116は、ウェブアプリケーション130が生成したレスポンスをその出力先に応じた安全文字列にエスケープ処理する。安全文字変換部116の変換処理の処理対象となる文字は、既に安全な中立文字に変換済みの文字である。
【0109】
このため、例え変換の設定に漏れがあったとしても、変換後のレスポンスには不正な命令を含むことがなくなるため、セキュリティ性が高い。また、この変換処理を行うために、安全文字変換テーブル112a,112b,112cを予め作成して安全文字変換テーブル記憶部112に格納しておけばよいため、設定が容易である。
【0110】
次に、端末装置21からのリクエストに応じたデータ変換部110の処理に関して、更に具体的に説明する。
図14は、データ変換処理の流れを示した模式図である。図14で符号を付して示した構成は、図2,4において同一の符号を付して説明した構成と同一の機能であるため、その説明を省略する。
【0111】
ブラウザ21aは、端末装置21上で実行されるブラウザである。
登録情報提供サービス201は、DBサーバ200上で提供されるサービスである。登録情報提供サービス201は、ウェブシステムのユーザに関する登録情報を提供する。
【0112】
電子メール送信サービス301は、メールサーバ300上で提供されるサービスである。電子メール送信サービス301は、電子メール送信のサービスを提供する。
変換処理Aは、図11で示した中立文字変換部113による特殊文字を中立文字に変換する処理を示している。変換処理Aでは、ブラウザ21aからのリクエスト内のパラメータに含まれる特殊文字を全て中立文字に変換する処理を行う。
【0113】
変換処理Bは、図12で示した特殊文字復元部114による中立文字の一部を特殊文字に復元する処理を示している。変換処理Bでは、変換処理A後のリクエストに対して、ウェブアプリケーション130の処理で用いる特殊文字を、中立文字から復元する。
【0114】
変換処理A,Bの処理対象は、ブラウザ21aからのリクエスト内のパラメータに含まれる特殊文字および中立文字である。
変換処理C1,C2,C3は、図13で示した安全文字変換部116による中立文字を安全文字列に変換する処理を示している。
【0115】
変換処理C1の処理対象は、ウェブアプリケーション130がブラウザ21aに対して生成するレスポンスである。このレスポンスは、例えば、掲示板を表示するウェブページを含むHTML文である。
【0116】
変換処理C2の処理対象は、ウェブアプリケーション130が、ログイン処理等のためにユーザ情報を照会するために登録情報提供サービス201に対して生成するSQL文である。
【0117】
変換処理C3の処理対象は、ウェブアプリケーション130が、電子メール送信のためにメールサーバ300に対して生成する送信用命令である。
以下、変換処理A,B,C1,C2,C3に関して説明する。
【0118】
図15は、特殊文字から中立文字への変換処理の具体例を示す模式図である。図15の例は、図14における変換処理Aを示している。パラメータ群500は、端末装置21からのリクエストに含まれるパラメータの集合である。パラメータ群500には、例えば、ユーザが入力した情報として、IDが「’TAROU’(シングルクォーテーションで括られたTAROU)」、パスワードが「Fj3<T5k>」、メールアドレスが「tarou@abc.com」という情報が含まれる。IDには、特殊文字として「’(シングルクォーテーション)」が含まれる。パスワードには、特殊文字として、「<」および「>」が含まれる。メールアドレスには、特殊文字として、「@」および「.(ピリオド)」が含まれる。
【0119】
中立文字変換部113は、これらの特殊文字を中立文字変換テーブル111aに基づいて変換し、中立文字変換後のパラメータ群500aを生成する。パラメータ群500aには、IDに含まれていた「’(シングルクォーテーション)」が、「(U+E003)」に変換されている。また、パスワードに含まれていた「<」が「(U+E001)」に変換され、「>」が「(U+E002)」に変換されている。更に、メールアドレスに含まれていた「@」が「(U+E005)」に変換され、「.(ピリオド)」が「(U+E007)」に変換されている。
【0120】
このようにして、ブラウザや業務サーバの処理において、制御文字として使用され得る特殊記号は全て中立文字に変換される。これにより、リクエスト内に不正な命令が含まれることを防止することができる。
【0121】
図16は、中立文字から特殊文字への復元処理の具体例を示す模式図である。図16の例は、図14における変換処理Bを示している。パラメータ群500aは、中立文字変換部113からの中立文字変換後のリクエストに含まれるパラメータの集合である。パラメータ群500aに含まれるパラメータは、図15における説明と同一であるため、説明を省略する。
【0122】
特殊文字復元部114は、ウェブアプリケーション130に対して用意された特殊文字復元テーブル120aに基づいて、パラメータ群500aに含まれる中立文字を特殊文字に復元し、特殊文字復元後のパラメータ群500bを生成する。特殊文字復元テーブル120aは、例えば、ウェブアプリケーション130におけるログイン処理に関して使用され、IDやパスワードに含まれる中立文字が特殊文字に復元される。パラメータ群500bには、IDに含まれていた中立文字「(U+E003)」が「’(シングルクォーテーション)」に復元されている。また、パスワードに含まれていた「(U+E001)」が「<」に復元され、「(U+E002)」が「>」に復元されている。なお、メールアドレスに含まれていた「(U+E005)」および「(U+E007)」は、ウェブアプリケーション130におけるログイン処理には使用されないため、特殊文字復元テーブル120aには登録されておらず、復元は行われていない。
【0123】
このようにして、ウェブアプリケーション130の処理で使用されるパラメータは、中立文字から特殊文字へ復元される。復元対象の文字は、ウェブアプリケーション130の処理に応じて、開発者等によって予め定義することができる。
【0124】
図17は、中立文字から安全文字列への変換処理の第1の具体例を示す模式図である。図17の例は、図14における変換処理C1を示している。HTML文600は、ウェブアプリケーション130が生成したHTMLで記述された端末装置21へのレスポンスである。HTML文600は、script部分601および本文部分602を含んでいる。なお、図17では、中立文字に関しては、そのコードを括弧で括って示している。実際のコンピュータ画面上に出力される表記では、このような中立文字は、例えば「・(中点)」等で表される。この中立文字の表し方に関しては、以降の説明に関しても同様とする。
【0125】
script部分601は、新規記事が掲示板に追加されたことを示すダイアログボックスを出力するためのスクリプトを示している。script部分601には、中立文字「(U+E003)」が含まれている。
【0126】
本文部分602は、ユーザが新規に投稿した記事の内容をブラウザに出力するためのHTML文である。本文部分602には、中立文字「(U+E003)」が含まれている。
安全文字変換部116は、安全文字変換テーブル112aに基づいて、HTML文600に含まれる中立文字を安全文字列に変換し、安全文字変換後のHTML文600aを生成する。HTML文600aのscript部分601aでは、script部分601に含まれていた中立文字「(U+E003)」が、安全文字列「¥’」に変換されている。また、本文部分602aでは、本文部分602に含まれていた中立文字「(U+E003)」が、安全文字列「'」に変換されている。
【0127】
このようにして、HTML文に含まれる中立文字が安全文字列に変換される。ここで、script部分601の安全文字列「¥’」は、ブラウザ上の出力「’(シングルクォーテーション)」に対応する安全文字列である。また、本文部分602の安全文字列「'」も同様に、ブラウザ上の出力「’(シングルクォーテーション)」に対応する安全文字列である。
【0128】
このようにすると、例えば、本文部分602のように、入力されたパラメータをbodyタグ内に挿入してレスポンスを生成してブラウザに送信する場合でも、XSSによる攻撃を防止することができる。これは、入力されたパラメータに不正なスクリプトが含まれていても、不正なスクリプトを形成しうる特殊文字は全て中立文字に変換されるためである。そして、中立文字を必要に応じて安全文字列へと変換することで、ブラウザは、入力されたパラメータの内容を適正に端末装置21の画面上に出力することができる。
【0129】
図18は、中立文字から安全文字列への変換処理の第2の具体例を示す模式図である。図18の例は、図14における変換処理C2を示している。SQL文700は、ウェブアプリケーション130が生成したSQLで記述されたDBサーバ200へのレスポンスである。SQL文700は、中立文字として、「(U+E005)」、「(U+E007)」、「(U+E003)」、「(U+E001)」、「(U+E002)」を含んでいる。
【0130】
安全文字変換部116は、安全文字変換テーブル112aに基づいて、SQL文700に含まれる中立文字を安全文字列に変換し、安全文字変換後のSQL文700aを生成する。SQL文700aでは、SQL文700に含まれていた中立文字「(U+E005)」が、安全文字列「@」に変換されている。同様に中立文字「(U+E007)」が「.(ピリオド)」に、「(U+E003)」が「’’(シングルクォーテーション2つ)」に、「(U+E001)」が「<」に、「(U+E002)」が「>」に、それぞれ変換されている。
【0131】
このようにして、SQL文に含まれる中立文字が安全文字列に変換される。ここで、SQL文では「’(シングルクォーテーション)」は制御文字として扱われるため、リテラル中で使用するためには上記のようにエスケープされる必要がある。
【0132】
このようにすると、例えば、SQL文700のように、入力されたパラメータをSQL文内に挿入してレスポンスを生成してDBサーバ200に送信する場合でも、SQLインジェクションによる攻撃を防止することができる。これは、入力されたパラメータに不正な命令が含まれていても、不正な命令を形成しうる特殊文字は全て中立文字に変換されているためである。そして、中立文字を必要に応じて安全文字列へと変換することで、DBサーバ200は、入力されたパラメータの内容で適正にSQL文を実行することができる。
【0133】
図19は、中立文字から安全文字列への変換処理の第3の具体例を示す模式図である。図19の例は、図14における変換処理C3を示している。メール送信命令800は、ウェブアプリケーション130が生成したメールサーバ300への電子メールの送信用命令である。メール送信用命令は、中立文字として、「(U+E005)」および「(U+E007)」が含まれている。
【0134】
安全文字変換部116は、安全文字変換テーブル112aに基づいて、メール送信命令800に含まれる中立文字を安全文字列に変換し、安全文字変換後のメール送信命令800aを生成する。メール送信命令800aでは、メール送信命令800に含まれていた中立文字「(U+E005)」が「@」に変換されている。また、中立文字「(U+E007)」が、「.(ピリオド)」に変換されている。
【0135】
このようにして、メール送信処理に必要となる中立文字が、安全文字変換テーブル112aの対応する安全文字列に変換される。
このように、安全文字変換部116は、ウェブアプリケーション130が生成したレスポンスをその出力先に応じた安全文字列にエスケープ処理する。安全文字変換部116の変換処理の処理対象となる文字は、既に安全な中立文字に変換済みの文字である。
【0136】
このため、例え変換の設定に漏れがあったとしても、変換後のレスポンスには不正な命令を含むことがなくなるため、セキュリティ性が高い。また、この変換処理を行うために、特殊文字復元テーブル120aや安全文字変換テーブル112a,112b,112cを予め作成して安全文字変換テーブル記憶部112に格納しておけばよいため、設定が容易である。
【0137】
上記の説明のウェブシステムでは、DBサーバ200やメールサーバ300を例に挙げたが、その他のサービスを提供するサーバであっても構わない。また、データ変換部110の機能は、ウェブサーバ100上ではなく、例えば、ファイアウォール31上で実現することも考えられる。
【0138】
更に、使用する文字コードとしてユニコードを例に挙げて説明したが、他の文字コードを使用しても構わない。
以上、本件のデータ変換プログラム、データ変換装置およびデータ変換方法を図示の実施の形態に基づいて説明したが、これらに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。更に、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【0139】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、コンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【0140】
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体には、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、HDD、フレキシブルディスク(FD)、磁気テープ(MT)などがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc - Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto - Optical disk)などがある。
【0141】
上記プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータに格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0142】
上記プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラム若しくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【0143】
以上、説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
(付記1) 第1段サービス提供手段および前記第1段サービス提供手段の要求に応じた処理を行う第2段サービス提供手段の処理に用いるデータを変換する処理をコンピュータに実行させるデータ変換プログラムにおいて、
前記コンピュータを、
特殊文字を前記第1段サービス提供手段および前記第2段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段、
前記中立文字を前記第2段サービス提供手段で文字参照に用いられる1文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段、
前記データが入力されると、前記中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて前記データに含まれる前記特殊文字を前記中立文字に変換した第1の変換データを生成し、当該第1の変換データを前記第1段サービス提供手段に出力する第1の変換手段、
前記第1段サービス提供手段の前記第1の変換データに対する処理により生成される処理後データが前記第1段サービス提供手段から出力されると、前記安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて前記処理後データに含まれる前記中立文字の少なくとも一部を前記安全文字列に変換した第2の変換データを生成し、前記第2段サービス提供手段に出力する第2の変換手段、
として機能させることを特徴とするデータ変換プログラム。
【0144】
(付記2) 前記安全文字変換情報には、前記中立文字と前記安全文字列との対応付けが前記処理後データのデータ構造を構成する構成要素毎に設定されており、
前記第2の変換手段は、前記処理後データに含まれる前記中立文字が属する前記構成要素を判定し、前記安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて、前記中立文字の少なくとも一部を、当該中立文字が属する構成要素に応じた前記安全文字列に変換する、
ことを特徴とする付記1記載のデータ変換プログラム。
【0145】
(付記3) 前記中立文字のうち、復元可能な前記特殊文字を定義した特殊文字復元情報を記憶する特殊文字復元情報記憶手段を更に有し、
前記第1の変換手段は、前記特殊文字復元情報記憶手段に記憶された前記特殊文字復元情報および前記中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて、前記第1の変換データに含まれる前記中立文字の少なくとも一部を、当該中立文字に対応する前記特殊文字に復元して、前記第1段サービス提供手段に出力する、
ことを特徴とする付記1記載のデータ変換プログラム。
【0146】
(付記4) 前記第1段サービス提供手段が複数あり、
前記特殊文字復元情報記憶手段に記憶された前記特殊文字復元情報は、前記複数の第1段サービス提供手段それぞれに対応付けて複数定義されており、
前記第1の変換手段は、前記特殊文字復元情報に記憶された前記複数の特殊文字復元情報のうち、前記第1の変換データの出力先の第1段サービス提供手段に対応する前記特殊文字復元情報を選択して、前記第1の変換データに含まれる前記中立文字の少なくとも一部を、選択した前記特殊文字復元情報に基づいて、当該中立文字に対応する前記特殊文字に復元する、
ことを特徴とする付記3記載のデータ変換プログラム。
【0147】
(付記5) 前記中立文字は、文字フォントが未定義の文字コードで表される文字であることを特徴とする付記1記載のデータ変換プログラム。
(付記6) 前記安全文字列は、前記第2段サービス提供手段の処理に応じて前記特殊文字をエスケープするエスケープ文字を含むことを特徴とする付記1記載のデータ変換プログラム。
【0148】
(付記7) 第1段サービス提供手段および前記第1段サービス提供手段の要求に応じた処理を行う第2段サービス提供手段の処理に用いるデータを変換するデータ変換装置において、
特殊文字を前記第1段サービス提供手段および前記第2段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段と、
前記中立文字を前記第2段サービス提供手段で文字参照に用いられる1文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段と、
前記データが入力されると、前記中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて前記データに含まれる前記特殊文字を前記中立文字に変換した第1の変換データを生成し、当該第1の変換データを前記第1段サービス提供手段に出力する第1の変換手段と、
前記第1段サービス提供手段の前記第1の変換データに対する処理により生成される処理後データが前記第1段サービス提供手段から出力されると、前記安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて前記処理後データに含まれる前記中立文字の少なくとも一部を前記安全文字列に変換した第2の変換データを生成し、前記第2段サービス提供手段に出力する第2の変換手段と、
を有することを特徴とするデータ変換装置。
【0149】
(付記8) 第1段サービス提供手段および前記第1段サービス提供手段の要求に応じた処理を行う第2段サービス提供手段の処理に用いるデータを変換するデータ変換装置のデータ変換方法において、
第1の変換手段が、前記データが入力されると、特殊文字を前記第1段サービス提供手段および前記第2段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて前記データに含まれる前記特殊文字を前記中立文字に変換した第1の変換データを生成して、当該第1の変換データを前記第1段サービス提供手段に出力し、
第2の変換手段が、前記第1段サービス提供手段の前記第1の変換データに対する処理により生成される処理後データが前記第1段サービス提供手段から出力されると、前記中立文字を前記第2段サービス提供手段で文字参照に用いられる1文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて前記処理後データに含まれる前記中立文字の少なくとも一部を前記安全文字列に変換した第2の変換データを生成して、前記第2段サービス提供手段に出力する、
ことを特徴とするデータ変換方法。
【図面の簡単な説明】
【0150】
【図1】本実施の形態の概要を示す図である。
【図2】本実施の形態のウェブシステムの構成を示す図である。
【図3】ウェブサーバのハードウェア構成を示す図である。
【図4】ウェブサーバの機能を示すブロック図である。
【図5】中立文字変換テーブルのデータ構造例を示す図である。
【図6】特殊文字復元テーブルのデータ構造例を示す図である。
【図7】HTML用の安全文字変換テーブルのデータ構造例を示す図である。
【図8】SQL用の安全文字変換テーブルのデータ構造例を示す図である。
【図9】電子メール用の安全文字変換テーブルのデータ構造例を示す図である。
【図10】データ変換処理の手順を示すフローチャートである。
【図11】特殊文字から中立文字への変換処理の手順を示すフローチャートである。
【図12】中立文字から特殊文字への復元処理の手順を示すフローチャートである。
【図13】中立文字から安全文字列への変換処理の手順を示すフローチャートである。
【図14】データ変換処理の流れを示した模式図である。
【図15】特殊文字から中立文字への変換処理の具体例を示す模式図である。
【図16】中立文字から特殊文字への復元処理の具体例を示す模式図である。
【図17】中立文字から安全文字列への変換処理の第1の具体例を示す模式図である。
【図18】中立文字から安全文字列への変換処理の第2の具体例を示す模式図である。
【図19】中立文字から安全文字列への変換処理の第3の具体例を示す模式図である。
【符号の説明】
【0151】
1 コンピュータ
1a 中立文字変換情報記憶手段
1b 安全文字変換情報記憶手段
1c 第1の変換手段
1d 第1段サービス提供手段
1e 第2の変換手段
1f 第2段サービス提供手段

【特許請求の範囲】
【請求項1】
第1段サービス提供手段および前記第1段サービス提供手段の要求に応じた処理を行う第2段サービス提供手段の処理に用いるデータを変換する処理をコンピュータに実行させるデータ変換プログラムにおいて、
前記コンピュータを、
特殊文字を前記第1段サービス提供手段および前記第2段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段、
前記中立文字を前記第2段サービス提供手段で文字参照に用いられる1文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段、
前記データが入力されると、前記中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて前記データに含まれる前記特殊文字を前記中立文字に変換した第1の変換データを生成し、当該第1の変換データを前記第1段サービス提供手段に出力する第1の変換手段、
前記第1段サービス提供手段の前記第1の変換データに対する処理により生成される処理後データが前記第1段サービス提供手段から出力されると、前記安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて前記処理後データに含まれる前記中立文字の少なくとも一部を前記安全文字列に変換した第2の変換データを生成し、前記第2段サービス提供手段に出力する第2の変換手段、
として機能させることを特徴とするデータ変換プログラム。
【請求項2】
前記安全文字変換情報には、前記中立文字と前記安全文字列との対応付けが前記処理後データのデータ構造を構成する構成要素毎に設定されており、
前記第2の変換手段は、前記処理後データに含まれる前記中立文字が属する前記構成要素を判定し、前記安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて、前記中立文字の少なくとも一部を、当該中立文字が属する構成要素に応じた前記安全文字列に変換する、
ことを特徴とする請求項1記載のデータ変換プログラム。
【請求項3】
前記中立文字のうち、復元可能な前記特殊文字を定義した特殊文字復元情報を記憶する特殊文字復元情報記憶手段を更に有し、
前記第1の変換手段は、前記特殊文字復元情報記憶手段に記憶された前記特殊文字復元情報および前記中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて、前記第1の変換データに含まれる前記中立文字の少なくとも一部を、当該中立文字に対応する前記特殊文字に復元して、前記第1段サービス提供手段に出力する、
ことを特徴とする請求項1記載のデータ変換プログラム。
【請求項4】
前記中立文字は、文字フォントが未定義の文字コードで表される文字であることを特徴とする請求項1記載のデータ変換プログラム。
【請求項5】
前記安全文字列は、前記第2段サービス提供手段の処理に応じて前記特殊文字をエスケープするエスケープ文字を含むことを特徴とする請求項1記載のデータ変換プログラム。
【請求項6】
第1段サービス提供手段および前記第1段サービス提供手段の要求に応じた処理を行う第2段サービス提供手段の処理に用いるデータを変換するデータ変換装置において、
特殊文字を前記第1段サービス提供手段および前記第2段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段と、
前記中立文字を前記第2段サービス提供手段で文字参照に用いられる1文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段と、
前記データが入力されると、前記中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて前記データに含まれる前記特殊文字を前記中立文字に変換した第1の変換データを生成し、当該第1の変換データを前記第1段サービス提供手段に出力する第1の変換手段と、
前記第1段サービス提供手段の前記第1の変換データに対する処理により生成される処理後データが前記第1段サービス提供手段から出力されると、前記安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて前記処理後データに含まれる前記中立文字の少なくとも一部を前記安全文字列に変換した第2の変換データを生成し、前記第2段サービス提供手段に出力する第2の変換手段と、
を有することを特徴とするデータ変換装置。
【請求項7】
第1段サービス提供手段および前記第1段サービス提供手段の要求に応じた処理を行う第2段サービス提供手段の処理に用いるデータを変換するデータ変換装置のデータ変換方法において、
第1の変換手段が、前記データが入力されると、特殊文字を前記第1段サービス提供手段および前記第2段サービス提供手段が使用しない所定の中立文字に対応付けた中立文字変換情報を記憶する中立文字変換情報記憶手段に記憶された中立文字変換情報に基づいて前記データに含まれる前記特殊文字を前記中立文字に変換した第1の変換データを生成して、当該第1の変換データを前記第1段サービス提供手段に出力し、
第2の変換手段が、前記第1段サービス提供手段の前記第1の変換データに対する処理により生成される処理後データが前記第1段サービス提供手段から出力されると、前記中立文字を前記第2段サービス提供手段で文字参照に用いられる1文字以上の所定の安全文字列に対応付けた安全文字変換情報を記憶する安全文字変換情報記憶手段に記憶された前記安全文字変換情報に基づいて前記処理後データに含まれる前記中立文字の少なくとも一部を前記安全文字列に変換した第2の変換データを生成して、前記第2段サービス提供手段に出力する、
ことを特徴とするデータ変換方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2009−301456(P2009−301456A)
【公開日】平成21年12月24日(2009.12.24)
【国際特許分類】
【出願番号】特願2008−157538(P2008−157538)
【出願日】平成20年6月17日(2008.6.17)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】