(57)【要約】【課題】テンプレートの記述者が変数の参照をテンプレートに記述する際に、状況に応じて記法を変えることなく無効化処理を施すことが可能な情報処理プログラム、情報処理装置、及び情報処理方法を提供する。【解決手段】ＨＴＭＬ文書を生成・出力するテンプレートエンジンに、テンプレートを参照してＨＴＭＬ文書を生成するマーキング処理部と、エスケープ処理を行うエスケープ処理部とを設け、ＨＴＭＬ文書を生成する際に変数を参照する個所のＨＴＭＬタグを一旦エスケープ処理してＨＴＭＬ文書を生成し、その後、参照先に応じた適切な処理をＨＴＭＬ文書に施す。  【選択図】  図１
2007219622.tif 000002
【特許請求の範囲】
【請求項１】
テンプレートを解釈し、変数を参照する個所のＨＴＭＬタグを無効化してＨＴＭＬ文書を生成する第１のステップと、
前記ＨＴＭＬ文書を解釈し、前記変数の参照先に応じて前記ＨＴＭＬタグを処理する第２のステップと
をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項２】
前記第１のステップは、エスケープした前記ＨＴＭＬタグにマーキングを行い、
前記第２のステップは、前記マーキングによるマークを目印として前記ＨＴＭＬタグを検出する
ことを特徴とする請求項１記載の情報処理プログラム。
【請求項３】
前記第２のステップは、前記変数の参照先の状態、及びルールデータに基づいて前記ＨＴＭＬタグを処理することを特徴とする請求項１又は２記載の情報処理プログラム。
【請求項４】
テンプレートを解釈し、変数を参照する個所のＨＴＭＬタグを無効化してＨＴＭＬ文書を生成するマーキング処理手段と、
前記ＨＴＭＬ文書を解釈し、前記変数の参照先に応じて前記ＨＴＭＬタグを処理するエスケープ処理手段と
を具備することを特徴とする情報処理装置。
【請求項５】
テンプレートを解釈し、変数を参照する個所のＨＴＭＬタグを無効化してＨＴＭＬ文書をマーキング処理手段で生成し、
前記ＨＴＭＬ文書を解釈し、前記変数の参照先に応じて前記ＨＴＭＬタグをエスケープ処理手段で処理する
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理プログラム、情報処理装置、及び情報処理方法に関し、特に、Ｗｅｂ(World Wide Web)ページを表示するためのＨＴＭＬ(HyperText Markup Language)文章を生成する情報処理プログラム、情報処理装置、及び情報処理方法に関するものである。
【背景技術】
【０００２】
ＨＴＭＬ文書を処理して動的にＷｅｂページを生成するＷｅｂアプリケーションにおいて、クロスサイトスクリプティング(ＸＳＳ(Cross Site Scripting))がセキュリティ上の大きな問題となっている。
【０００３】
このＸＳＳは、Ｗｅｂサイトにアクセスした閲覧者のＰＣ(Personal Computer)でＷｅｂページを表示するための処理が行われたり、Ｗｅｂページ上の送信ボタンが押されるなどの特定の動作が行われることにより、ＨＴＭＬ文書に悪意を持って記述されたＨＴＭＬタグや、JavaScriptなどのスクリプトコードが実行されるというもので、Cookieが漏洩するなど恐れなどがある（例えば、非特許文献１参照）。
【０００４】
そして、ＸＳＳへの対処方法として、Ｗｅｂサーバに備えられている既存のＷｅｂアプリケーション用テンプレートエンジンでは、ＨＴＭＬ文書を生成して出力する方法を複数用意し、そのうちのいくつかでＨＴＭＬタグの無効化処理を行っている。
【０００５】
例えば、ＪＳＰ(Java Server Pages)で変数「variable」の値をＨＴＭＬ要素のボディ内にエスケープして出力する場合は、ＨＴＭＬ文書の該当する個所の記述をＪＳＴＬ(JSP Standard Tag Library)を用いて、
としている。
【０００６】
また、ＨＴＭＬ要素の属性内で変数を参照する場合は、属性のエスケープ処理を行いながらＨＴＭＬ要素を出力するカスタムタグ(Strutsのhtmlタグ)を用いて、ＨＴＭＬ文書の該当する個所の記述を
としている。
【非特許文献１】産業技術総合研究所  グリッド研究センター  セキュアプログラミングチーム  「クロスサイトスクリプティング脆弱性蔓延の現状と解決策 − 多数の電子商取引サイトに個人情報漏洩等の危険性 −」(http://securit.gtrc.aist.go.jp/SecurIT/advisory/cross-site-scripting-1/)
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、このような無効化処理では、記述方法のみならず、実際に行われる処理も異なる。
【０００８】
例えば、ＨＴＭＬ要素のボディ内の変数を参照する場合は、ＨＴＭＬタグをエスケープするだけで無効化処理を行うことができる。
【０００９】
一方、属性内の変数を参照する場合は、その属性がＵＲＩ型やStyle Sheet型であると、内容にJava Scriptや@import文が含まれていないかをチェックし、含まれていた場合にはこれらを除外する必要がある。
【００１０】
また、ユーザの入力に特定のＨＴＭＬ要素の使用を許可する場合には、ＨＴＭＬ要素の種類の判別や、属性値のチェックなども必要になる。
【００１１】
このため、テンプレートエンジンで用いるテンプレートの記述者は、状況に応じて変数参照の記法を変えなければならず、大変煩雑であり、仮に、適切な記法を記述者が使用しなかった場合は、セキュリティホールとなる可能性があるため、特に、ユーザがテンプレートをカスタマイズできるシステムにおいては大きな不具合となる恐れがあった。
【００１２】
そこで本発明では、テンプレートの記述者が変数の参照をテンプレートに記述する際に、状況に応じて記法を変えることなく無効化処理を施すことが可能な情報処理プログラム、情報処理装置、及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明における情報処理プログラムは、テンプレートを解釈し、変数を参照する個所のＨＴＭＬタグを無効化してＨＴＭＬ文書を生成する第１のステップと、前記ＨＴＭＬ文書を解釈し、前記変数の参照先に応じて前記ＨＴＭＬタグを処理する第２のステップとをコンピュータに実行させることを特徴とする。
【００１４】
また、前記第１のステップは、エスケープした前記ＨＴＭＬタグにマーキングを行い、前記第２のステップは、前記マーキングによるマークを目印として前記ＨＴＭＬタグを検出することが望ましい。
【００１５】
さらに、前記第２のステップは、前記変数の参照先の状態、及びルールデータに基づいて前記ＨＴＭＬタグを処理することが望ましい。
【００１６】
次に、本発明における情報処理装置は、テンプレートを解釈し、変数を参照する個所のＨＴＭＬタグを無効化してＨＴＭＬ文書を生成するマーキング処理手段と、前記ＨＴＭＬ文書を解釈し、前記変数の参照先に応じて前記ＨＴＭＬタグを処理するエスケープ処理手段とを具備することを特徴とする。
【００１７】
本発明における情報処理方法は、テンプレートを解釈し、変数を参照する個所のＨＴＭＬタグを無効化してＨＴＭＬ文書をマーキング処理手段で生成し、前記ＨＴＭＬ文書を解釈し、前記変数の参照先に応じて前記ＨＴＭＬタグをエスケープ処理手段で処理することを特徴とする。
【００１８】
また、エスケープした前記ＨＴＭＬタグに前記マーキング処理手段でマーキングし、前記マーキングによるマークを目印として前記エスケープ処理手段で前記ＨＴＭＬタグを検出することが望ましい。
【００１９】
さらに、前記変数の参照先の状態、及びルールデータに基づいて、前記ＨＴＭＬタグを前記エスケープ処理手段で処理することが望ましい。
【発明の効果】
【００２０】
本発明では、変数参照の記法を状況に応じて変化させなければならないというテンプレート記述者の煩雑さや、記法を誤ることによるセキュリティホールや不具合の発生を抑えることができる。
【発明を実施するための最良の形態】
【００２１】
図１は、本発明における情報処理プログラムであるテンプレートエンジンの構成の一例を示す機能ブロック図である。
【００２２】
同図に示すように、テンプレートエンジン１０は、テンプレートを解釈してＨＴＭＬ文書を生成するマーキング処理部１１と、変数の参照先に応じてエスケープ処理を行うエスケープ処理部１２とで構成されている。
【００２３】
ここで、マーキング処理部１１は、テンプレートを解釈してＨＴＭＬ文書を生成する際に、テンプレートの変数を参照する個所のＨＴＭＬタグをエスケープすると共に、それが変数参照個所であることを示すマーカー文字列を付してマーキングを行う。
【００２４】
エスケープ処理部１２は、ＨＴＭＬパーサ、及び変数の参照を許可するか否かを定めたルールデータを備え、ＨＴＭＬパーサを用いてＨＴＭＬ文書を解釈し、マーカー文字列の検索を行うと共に、変数の参照先の状態（ＨＴＭＬ要素のボディ内であるか、属性内であるかなど）、及びルールデータに基づいて、変数の参照先に応じたエスケープ処理を行う。
【００２５】
ここで、エスケープ処理としては、例えば、変数の参照先が許可される場合は、参照先の記述を残してマーカー文字列を削除し、変数の参照先が許可されない場合は、マーカー文字列、及び参照先の記述を削除するなど、許可されない参照先の変数参照を回避することができる任意の方法を用いて行うことができる。
【００２６】
なお、マーキング処理部１１、エスケープ処理部１２は、汎用Ｗｅｂサーバなどにインストールされて実行される情報処理プログラム（テンプレートエンジン）によって実現されるものである。
【００２７】
上記構成を用いて、本発明に係るテンプレートエンジン１０では、ＨＴＭＬ文書を生成・出力する際に、まず、マーキング処理部１１で変数を参照する個所のＨＴＭＬタグをエスケープすると共に、当該個所にマーカー文字列を付してＨＴＭＬ文書を生成し、マーキング処理部１１で生成されたＨＴＭＬ文書をエスケープ処理部１２で解釈し、マーカー文字列を検出すると、変数の参照先に応じたエスケープ処理を行ってＨＴＭＬ文書を出力する。
【００２８】
図２は、本発明におけるテンプレートエンジンでの処理の流れの一例を示すフローチャートである。
【００２９】
まず、テンプレートを解釈し（ステップ１００）、変数を参照する個所のＨＴＭＬタグをエスケープすると共に、当該個所にマーカー文字列を付してマーキングして（ステップ１０１）、ＨＴＭＬ文書を生成する（ステップ１０２）。
【００３０】
次に、ＨＴＭＬ文書を解釈して（ステップ１０３）、マーカー文字列の検索を行い（ステップ１０４）、マーカー文字列を検出しない場合（ステップ１０４でＮＯ）は、ＨＴＭＬ文書を出力する（ステップ１０５）。
【００３１】
一方、ステップ１０４でマーカー文字列を検出する（ステップ１０４でＹＥＳ）と、参照先が許可されているか否かの判断を行い（ステップ１０６）、参照先が許可されていないと判断する（ステップ１０６でＮＯ）と、変数の参照先、及びマーカー文字列を削除し（ステップ１０７）、マーカー文字列の検索を行う（ステップ１０４）。
【００３２】
また、ステップ１０６で、参照先が許可されていると判断する（ステップ１０６でＹＥＳ）と、マーカー文字列を削除し（ステップ１０８）、マーカー文字列の検索を行う（ステップ１０４）。
【００３３】
このように本発明では、テンプレートで変数を参照する個所に一定の記述（図１では、$｛variable｝）を施すことによって、適切にエスケープ処理が行われるため、テンプレートの記述者は、状況に応じて変数参照先の記法を代える必要がなく、適切な記法を選択しなかったことによるセキュリティーホールの発生を防止することができる。
【図面の簡単な説明】
【００３４】
【図１】本発明における情報処理プログラムの構成の一例を示す機能ブロック図である。
【図２】本発明における情報処理プログラムでの処理の流れの一例を示すフローチャートである。
【符号の説明】
【００３５】
１０…テンプレートエンジン
１１…マーキング処理部
１２…エスケープ処理部
【図１】
2007219622.tif 000003
【図２】
2007219622.tif 000004