説明

情報処理プログラム、情報処理装置、及び情報処理方法

【課題】テンプレートの記述者が変数の参照をテンプレートに記述する際に、状況に応じて記法を変えることなく無効化処理を施すことが可能な情報処理プログラム、情報処理装置、及び情報処理方法を提供する。
【解決手段】HTML文書を生成・出力するテンプレートエンジンに、テンプレートを参照してHTML文書を生成するマーキング処理部と、エスケープ処理を行うエスケープ処理部とを設け、HTML文書を生成する際に変数を参照する個所のHTMLタグを一旦エスケープ処理してHTML文書を生成し、その後、参照先に応じた適切な処理をHTML文書に施す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理装置、及び情報処理方法に関し、特に、Web(World Wide Web)ページを表示するためのHTML(HyperText Markup Language)文章を生成する情報処理プログラム、情報処理装置、及び情報処理方法に関するものである。
【背景技術】
【0002】
HTML文書を処理して動的にWebページを生成するWebアプリケーションにおいて、クロスサイトスクリプティング(XSS(Cross Site Scripting))がセキュリティ上の大きな問題となっている。
【0003】
このXSSは、Webサイトにアクセスした閲覧者のPC(Personal Computer)でWebページを表示するための処理が行われたり、Webページ上の送信ボタンが押されるなどの特定の動作が行われることにより、HTML文書に悪意を持って記述されたHTMLタグや、JavaScriptなどのスクリプトコードが実行されるというもので、Cookieが漏洩するなど恐れなどがある(例えば、非特許文献1参照)。
【0004】
そして、XSSへの対処方法として、Webサーバに備えられている既存のWebアプリケーション用テンプレートエンジンでは、HTML文書を生成して出力する方法を複数用意し、そのうちのいくつかでHTMLタグの無効化処理を行っている。
【0005】
例えば、JSP(Java Server Pages)で変数「variable」の値をHTML要素のボディ内にエスケープして出力する場合は、HTML文書の該当する個所の記述をJSTL(JSP Standard Tag Library)を用いて、

としている。
【0006】
また、HTML要素の属性内で変数を参照する場合は、属性のエスケープ処理を行いながらHTML要素を出力するカスタムタグ(Strutsのhtmlタグ)を用いて、HTML文書の該当する個所の記述を

としている。
【非特許文献1】産業技術総合研究所 グリッド研究センター セキュアプログラミングチーム 「クロスサイトスクリプティング脆弱性蔓延の現状と解決策 − 多数の電子商取引サイトに個人情報漏洩等の危険性 −」(http://securit.gtrc.aist.go.jp/SecurIT/advisory/cross-site-scripting-1/)
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかし、このような無効化処理では、記述方法のみならず、実際に行われる処理も異なる。
【0008】
例えば、HTML要素のボディ内の変数を参照する場合は、HTMLタグをエスケープするだけで無効化処理を行うことができる。
【0009】
一方、属性内の変数を参照する場合は、その属性がURI型やStyle Sheet型であると、内容にJava Scriptや@import文が含まれていないかをチェックし、含まれていた場合にはこれらを除外する必要がある。
【0010】
また、ユーザの入力に特定のHTML要素の使用を許可する場合には、HTML要素の種類の判別や、属性値のチェックなども必要になる。
【0011】
このため、テンプレートエンジンで用いるテンプレートの記述者は、状況に応じて変数参照の記法を変えなければならず、大変煩雑であり、仮に、適切な記法を記述者が使用しなかった場合は、セキュリティホールとなる可能性があるため、特に、ユーザがテンプレートをカスタマイズできるシステムにおいては大きな不具合となる恐れがあった。
【0012】
そこで本発明では、テンプレートの記述者が変数の参照をテンプレートに記述する際に、状況に応じて記法を変えることなく無効化処理を施すことが可能な情報処理プログラム、情報処理装置、及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【0013】
本発明における情報処理プログラムは、テンプレートを解釈し、変数を参照する個所のHTMLタグを無効化してHTML文書を生成する第1のステップと、前記HTML文書を解釈し、前記変数の参照先に応じて前記HTMLタグを処理する第2のステップとをコンピュータに実行させることを特徴とする。
【0014】
また、前記第1のステップは、エスケープした前記HTMLタグにマーキングを行い、前記第2のステップは、前記マーキングによるマークを目印として前記HTMLタグを検出することが望ましい。
【0015】
さらに、前記第2のステップは、前記変数の参照先の状態、及びルールデータに基づいて前記HTMLタグを処理することが望ましい。
【0016】
次に、本発明における情報処理装置は、テンプレートを解釈し、変数を参照する個所のHTMLタグを無効化してHTML文書を生成するマーキング処理手段と、前記HTML文書を解釈し、前記変数の参照先に応じて前記HTMLタグを処理するエスケープ処理手段とを具備することを特徴とする。
【0017】
本発明における情報処理方法は、テンプレートを解釈し、変数を参照する個所のHTMLタグを無効化してHTML文書をマーキング処理手段で生成し、前記HTML文書を解釈し、前記変数の参照先に応じて前記HTMLタグをエスケープ処理手段で処理することを特徴とする。
【0018】
また、エスケープした前記HTMLタグに前記マーキング処理手段でマーキングし、前記マーキングによるマークを目印として前記エスケープ処理手段で前記HTMLタグを検出することが望ましい。
【0019】
さらに、前記変数の参照先の状態、及びルールデータに基づいて、前記HTMLタグを前記エスケープ処理手段で処理することが望ましい。
【発明の効果】
【0020】
本発明では、変数参照の記法を状況に応じて変化させなければならないというテンプレート記述者の煩雑さや、記法を誤ることによるセキュリティホールや不具合の発生を抑えることができる。
【発明を実施するための最良の形態】
【0021】
図1は、本発明における情報処理プログラムであるテンプレートエンジンの構成の一例を示す機能ブロック図である。
【0022】
同図に示すように、テンプレートエンジン10は、テンプレートを解釈してHTML文書を生成するマーキング処理部11と、変数の参照先に応じてエスケープ処理を行うエスケープ処理部12とで構成されている。
【0023】
ここで、マーキング処理部11は、テンプレートを解釈してHTML文書を生成する際に、テンプレートの変数を参照する個所のHTMLタグをエスケープすると共に、それが変数参照個所であることを示すマーカー文字列を付してマーキングを行う。
【0024】
エスケープ処理部12は、HTMLパーサ、及び変数の参照を許可するか否かを定めたルールデータを備え、HTMLパーサを用いてHTML文書を解釈し、マーカー文字列の検索を行うと共に、変数の参照先の状態(HTML要素のボディ内であるか、属性内であるかなど)、及びルールデータに基づいて、変数の参照先に応じたエスケープ処理を行う。
【0025】
ここで、エスケープ処理としては、例えば、変数の参照先が許可される場合は、参照先の記述を残してマーカー文字列を削除し、変数の参照先が許可されない場合は、マーカー文字列、及び参照先の記述を削除するなど、許可されない参照先の変数参照を回避することができる任意の方法を用いて行うことができる。
【0026】
なお、マーキング処理部11、エスケープ処理部12は、汎用Webサーバなどにインストールされて実行される情報処理プログラム(テンプレートエンジン)によって実現されるものである。
【0027】
上記構成を用いて、本発明に係るテンプレートエンジン10では、HTML文書を生成・出力する際に、まず、マーキング処理部11で変数を参照する個所のHTMLタグをエスケープすると共に、当該個所にマーカー文字列を付してHTML文書を生成し、マーキング処理部11で生成されたHTML文書をエスケープ処理部12で解釈し、マーカー文字列を検出すると、変数の参照先に応じたエスケープ処理を行ってHTML文書を出力する。
【0028】
図2は、本発明におけるテンプレートエンジンでの処理の流れの一例を示すフローチャートである。
【0029】
まず、テンプレートを解釈し(ステップ100)、変数を参照する個所のHTMLタグをエスケープすると共に、当該個所にマーカー文字列を付してマーキングして(ステップ101)、HTML文書を生成する(ステップ102)。
【0030】
次に、HTML文書を解釈して(ステップ103)、マーカー文字列の検索を行い(ステップ104)、マーカー文字列を検出しない場合(ステップ104でNO)は、HTML文書を出力する(ステップ105)。
【0031】
一方、ステップ104でマーカー文字列を検出する(ステップ104でYES)と、参照先が許可されているか否かの判断を行い(ステップ106)、参照先が許可されていないと判断する(ステップ106でNO)と、変数の参照先、及びマーカー文字列を削除し(ステップ107)、マーカー文字列の検索を行う(ステップ104)。
【0032】
また、ステップ106で、参照先が許可されていると判断する(ステップ106でYES)と、マーカー文字列を削除し(ステップ108)、マーカー文字列の検索を行う(ステップ104)。
【0033】
このように本発明では、テンプレートで変数を参照する個所に一定の記述(図1では、${variable})を施すことによって、適切にエスケープ処理が行われるため、テンプレートの記述者は、状況に応じて変数参照先の記法を代える必要がなく、適切な記法を選択しなかったことによるセキュリティーホールの発生を防止することができる。
【図面の簡単な説明】
【0034】
【図1】本発明における情報処理プログラムの構成の一例を示す機能ブロック図である。
【図2】本発明における情報処理プログラムでの処理の流れの一例を示すフローチャートである。
【符号の説明】
【0035】
10…テンプレートエンジン
11…マーキング処理部
12…エスケープ処理部

【特許請求の範囲】
【請求項1】
テンプレートを解釈し、変数を参照する個所のHTMLタグを無効化してHTML文書を生成する第1のステップと、
前記HTML文書を解釈し、前記変数の参照先に応じて前記HTMLタグを処理する第2のステップと
をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項2】
前記第1のステップは、エスケープした前記HTMLタグにマーキングを行い、
前記第2のステップは、前記マーキングによるマークを目印として前記HTMLタグを検出する
ことを特徴とする請求項1記載の情報処理プログラム。
【請求項3】
前記第2のステップは、前記変数の参照先の状態、及びルールデータに基づいて前記HTMLタグを処理することを特徴とする請求項1又は2記載の情報処理プログラム。
【請求項4】
テンプレートを解釈し、変数を参照する個所のHTMLタグを無効化してHTML文書を生成するマーキング処理手段と、
前記HTML文書を解釈し、前記変数の参照先に応じて前記HTMLタグを処理するエスケープ処理手段と
を具備することを特徴とする情報処理装置。
【請求項5】
テンプレートを解釈し、変数を参照する個所のHTMLタグを無効化してHTML文書をマーキング処理手段で生成し、
前記HTML文書を解釈し、前記変数の参照先に応じて前記HTMLタグをエスケープ処理手段で処理する
ことを特徴とする情報処理方法。

【図1】
image rotate

【図2】
image rotate


【公開番号】特開2007−219622(P2007−219622A)
【公開日】平成19年8月30日(2007.8.30)
【国際特許分類】
【出願番号】特願2006−36569(P2006−36569)
【出願日】平成18年2月14日(2006.2.14)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】