説明

セキュリティ強化プログラム及びセキュリティ強化装置

【課題】稼働中のアプリケーションの実装を変更することなく、アプリケーションサーバから送信されるレスポンスに含まれるパラメータの漏えい及び改ざんを防止できる。
【解決手段】レスポンスフィルタ61は、フィルタリングルールに合致するパラメータをレスポンスから検出する。レスポンスフィルタ61は、検出されたパラメータをセッションIDに対応付けてセッションオブジェクトに格納する。レスポンスフィルタ61は、検出されたパラメータが削除され、セッションIDが埋め込まれたレスポンスをクライアント端末10に送信する。リクエストフィルタ63は、クライアント端末10から受信されたレスポンスに対するリクエストからセッションIDを削除し、リクエストに含まれるセッションIDによって識別されるセッションオブジェクトに格納されたパラメータを当該リクエストに復元して、アプリケーションサーバ20に送信する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クライアント端末からのリクエストに対してアプリケーションサーバから送信されるレスポンスに含まれるパラメータの漏えい及び改ざんを防止するセキュリティ強化プログラム及びセキュリティ強化装置に関する。
【背景技術】
【0002】
近年、インターネット技術の発展に伴い、様々な業務やサービスが例えばWebブラウザから容易に利用できるWebアプリケーションとして実現されている。このWebブラウザは、Webアプリケーションを提供するサーバ(以下、「アプリケーションサーバ」と表記)と通信可能に接続されている端末(以下、「クライアント端末」と表記)上で動作するクライアントソフトウェアである。
【0003】
例えばショッピングサイトでは、利用者はクライアント端末に表示される画面を見ながら商品の選択や注文をすることができ、更にはクレジットカードで決済等も行うことができる。利用者は、注文した商品を宅配便等により受け取ることでサービスを利用することができる。
【0004】
このように、近年では、Webアプリケーションの利用者は、例えば自宅にいながらにして様々なサービスを享受することができる。Webアプリケーションを利用する場合には、クライアント端末から当該Webアプリケーションを利用するためのリクエストが送信され、当該リクエストに対するレスポンスがアプリケーションサーバから返される。つまり、クライアント端末及びアプリケーションサーバ間においてリクエスト及びレスポンスの送受信が行われることにより、各種サービスが提供される。このリクエスト及びレスポンスには、クライアント端末及びアプリケーションサーバにおける処理に必要な各種パラメータ等が含まれる。
【0005】
ところで、Webアプリケーションは、上記したような利便性を有する一方で、もともとステートレスな(状態を持たない)アーキテクチャであることから多くの脆弱性が指摘され、情報漏えい事故等を引き起こす場合がある。これは、Webアプリケーションの実装に不備があることに起因しており、Webアプリケーションの設計または実装時に適切に対処できるか否かは当該設計または実装する技術者のスキルに依存する。
【0006】
上記したWebアプリケーションの脆弱性の多くは、例えばインジェクション系、セッション管理系及びパラメータ不正操作系に分類される。
【0007】
インジェクション系の脆弱性とは、例えばクライアント端末からアプリケーションサーバに対して送信されるリクエストに含まれるパラメータに不正な文字列が挿入されることをいう。
【0008】
セッション管理系の脆弱性とは、例えばリクエストまたはレスポンスに含まれるセッションIDが不正に操作されることをいう。このセッションIDは、例えばクライアント端末及びアプリケーションサーバ間の通信の同期を実現するために用いられる。
【0009】
また、パラメータ不正操作系とは、例えばアプリケーションサーバから送信されるレスポンスに含まれるパラメータの情報を改ざんしてリクエストが送信されることをいう。
【0010】
これらのうち、特にセッション管理系またはパラメータ不正操作系の脆弱性は、上位の設計段階からの作りこみが必要であり、Webアプリケーションの運用開始後に発覚した場合には、大幅なプログラムの改修により対応する必要がある。
【0011】
そこで、予め与えられたルールに基づき、例えばクライアント端末からアプリケーションサーバに対して送信されたリクエストのパラメータ(入力パラメータ)に含まれる不正文字列を置換することにより無害化を実現する技術(以下、第1の先行技術と表記)が知られている。
【0012】
また、予め与えられたルールに基づきサーバへのアクセス要求及び当該アクセス要求に対するアクセス応答をフィルタリングする技術(以下、第2の先行技術と表記)が開示されている(例えば、特許文献1を参照)。この第2の先行技術によれば、クライアント端末からアクセス要求を受け、当該アクセス要求中にアプリケーションサーバにとって無害であるがクライアント端末にとって有害な不正コードが含まれているならば、当該不正コードを記憶しておく。また、第2の先行技術によれば、アクセス要求に対するアクセス応答を受け、当該アクセス応答中に記憶しておいた不正コードが残っている場合にはそれらを削除する。これにより、第2の先刻技術によれば、予め定められた不正コードをアクセス応答から取り除くことが可能となる。
【先行技術文献】
【特許文献】
【0013】
【特許文献1】特開2005−92564号公報
【発明の概要】
【発明が解決しようとする課題】
【0014】
しかしながら、上記した第1の先行技術では、対応可能なWebアプリケーションの脆弱性はインジェクション系に限定され、その他のセッション管理系及びパラメータ不正操作系の脆弱性については対応することができない。このため、これらのセッション管理系及びパラメータ不正操作系の脆弱性が顕在化した場合には、大幅なプログラムの改修が必要となる。
【0015】
また、上記した第2の先行技術においても、不正コードを対象としているためインジェクション系の脆弱性の一部に対応しているに過ぎない。したがって、セッション管理系及びパラメータ不正操作系の脆弱性に対しては大幅なプログラムの改修が必要となる。
【0016】
そこで、本発明の目的は、稼働中のアプリケーションの実装を変更することなく、クライアント端末からのリクエストに対してアプリケーションサーバから送信されるレスポンスに含まれるパラメータの漏えい及び改ざんを防止することが可能なセキュリティ強化プログラム及びセキュリティ強化装置を提供することにある。
【課題を解決するための手段】
【0017】
本発明の1つの態様によれば、ユーザによって操作されるクライアント端末及び当該クライアント端末に対してアプリケーションを提供するアプリケーションサーバと通信可能に接続され、漏えいまたは改ざんの可能性があるパラメータの条件を示すルール予め格納するルール格納手段及びセッションオブジェクト格納手段を有するセキュリティ強化装置のコンピュータによって実行されるセキュリティ強化プログラムであって、前記コンピュータに、前記ユーザの操作に応じて前記クライアント端末から送信された前記アプリケーションを利用するための要求に対するパラメータを含む応答を、前記アプリケーションサーバから受信するステップと、前記ルール格納手段に格納されているルールによって示される条件に合致するパラメータを前記受信された応答から検出するステップと、前記ルールによって示される条件に合致するパラメータが前記受信された応答から検出された場合、当該応答に対応するセッションオブジェクトを生成するステップと、前記生成されたセッションオブジェクトを前記セッションオブジェクト格納手段に格納するステップと、前記生成されたセッションオブジェクトを一意に識別するためのセッション識別情報を発行するステップと、前記検出されたパラメータを前記発行されたセッション識別情報に対応付けて前記セッションオブジェクト格納手段に格納されたセッションオブジェクトに格納するステップと、前記検出されたパラメータが前記セッションオブジェクトに格納されると、当該パラメータを前記受信された応答から削除するステップと、前記セッションオブジェクトに格納されたパラメータが削除された応答に、前記発行されたセッション識別情報を埋め込むステップと、前記発行されたセッション識別情報が埋め込まれた応答を前記クライアント端末に対して送信するステップと、前記発行されたセッション識別情報が埋め込まれた応答が送信された後、当該送信された応答に埋め込まれたセッション識別情報を含む当該応答に対する要求を前記クライアント端末から受信するステップと、前記受信された要求に含まれるセッション識別情報によって識別されるセッションオブジェクトを、前記セッションオブジェクト格納手段から読み込むステップと、前記受信された要求に含まれるセッション識別情報を当該要求から削除するステップと、前記セッション識別情報が削除された要求に、前記読み込まれたセッションオブジェクトに格納されたパラメータを復元するステップと、前記パラメータが復元された要求を前記アプリケーションサーバに対して送信するステップとを実行させるためのセキュリティ強化プログラムが提供される。
【発明の効果】
【0018】
本発明によれば、稼働中のアプリケーションの実装を変更することなく、クライアント端末からのリクエストに対してアプリケーションサーバから送信されるレスポンスに含まれるパラメータの漏えい及び改ざんを防止することができる。
【図面の簡単な説明】
【0019】
【図1】本発明の実施形態に係るセキュリティ強化装置が接続されるネットワークシステムについて説明するための図。
【図2】図1に示すセキュリティ強化装置60の主として機能構成を示すブロック図。
【図3】アプリケーションサーバ20によって提供されるWebアプリケーションの概要について説明するための図。
【図4】レスポンスとしてクライアント端末10に返される注文画面の表示例を示す図。
【図5】レスポンスとしてクライアント端末10に返される注文完了画面の表示例を示す図。
【図6】アプリケーションサーバ20によってレスポンスが送信された場合の本実施形態に係るセキュリティ強化装置60の処理手順を示すフローチャート。
【図7】レスポンスフィルタ61によって受信される注文画面のレスポンスの一例を示す図。
【図8】フィルタリングルール格納部52に格納されているフィルタリングルールの一例を示す図。
【図9】レスポンス100に対応するセッションオブジェクトのデータ構造の一例を示す図。
【図10】レスポンスフィルタ61によって送信されたレスポンス100の一例を示す図。
【図11】レスポンスフィルタ61によって送信されたレスポンス100に対するリクエストがクライアント端末10によって送信された場合の本実施形態に係るセキュリティ強化装置60の処理手順を示すフローチャート。
【図12】リクエストフィルタ63によって受信される注文受付要求のリクエストの一例を示す図。
【図13】リクエストフィルタ63によって送信されたリクエスト200の一例を示す図。
【発明を実施するための形態】
【0020】
以下、図面を参照して、本発明の実施形態について説明する。
【0021】
図1は、本実施形態に係るセキュリティ強化装置が接続されるネットワークシステムについて説明するための図である。
【0022】
図1に示すように、クライアント端末10及びアプリケーションサーバ(Webアプリケーションサーバ)20は、ネットワーク30と接続されている。
【0023】
クライアント端末10上では、アプリケーションサーバ20を利用するクライアントソフトウェアが動作する。クライアントソフトウェアは、例えばWebブラウザである。
【0024】
アプリケーションサーバ20は、クライアント端末10に対して各種Webアプリケーションを提供する。
【0025】
クライアント端末10は、アプリケーションサーバ20によって提供されるWebアプリケーションを利用するユーザ(利用者)によって操作される。ここで、ユーザがクライアント端末10を用いてアプリケーションサーバ20によって提供されるWebアプリケーションを利用する場合のクライアント端末10及びアプリケーションサーバ20間の通信について説明する。
【0026】
この場合、クライアント端末10及びアプリケーションサーバ20間では、例えばユーザの操作に応じてクライアント端末10上で動作するWebブラウザからアプリケーションサーバ20に対してリクエスト(要求)が送信され、このリクエストに対するレスポンス(応答)がアプリケーションサーバ20によって提供されるWebアプリケーションからクライアント端末10に返される(送信される)。更に、Webアプリケーションから送信されたレスポンスに対するリクエストがある場合には、Webブラウザから当該リクエストが送信される。このように、Webブラウザ及びWebアプリケーション間においてリクエスト及びレスポンスが送受信されることで、当該Webアプリケーションによる様々なサービスがユーザに対して実現される。なお、上記したWebブラウザ及びWebアプリケーション間において送受信されるリクエスト及びレスポンスには、各種パラメータが含まれる。
【0027】
上記したようにクライアント端末10上で動作するWebブラウザ及びアプリケーションサーバ20によって提供されるWebアプリケーション間でリクエスト及びレスポンスが送受信される。しかし、以下の説明では、煩雑さを避けるためにクライアント端末10及びアプリケーションサーバ20がリクエスト及びレスポンスを送受信するものとする。
【0028】
なお、図1においてはクライアント端末10及びアプリケーションサーバ20以外のクライアント端末及びアプリケーションサーバについては省略されているが、ネットワーク30には、複数のクライアント端末及びアプリケーションサーバが接続される。
【0029】
ネットワーク30には、コンピュータ40が接続されている。コンピュータ40は、ハードディスクドライブのような外部記憶装置50と接続されている。この外部記憶装置50は、コンピュータ40によって実行されるプログラム51を格納する。コンピュータ40及び外部記憶装置50は、セキュリティ強化装置(Webアプリケーションセキュリティ強化装置)60を構成する。
【0030】
セキュリティ強化装置60は、ネットワーク30を介してクライアント端末10及びアプリケーションサーバ20と通信可能に接続されている。セキュリティ強化装置60は、上記したクライアント端末10及びアプリケーションサーバ20間で通信されるリクエスト及びレスポンスを中継する機能を有する。
【0031】
図2は、図1に示すセキュリティ強化装置60の主として機能構成を示すブロック図である。セキュリティ強化装置60は、レスポンスフィルタ61、セッション管理部62及びリクエストフィルタ63を含む。本実施形態において、レスポンスフィルタ61、セッション管理部62及びリクエストフィルタ63は、図1に示すコンピュータ40が外部記憶装置50に格納されているプログラム(セキュリティ強化プログラム)51を実行することにより実現されるものとする。このプログラム51は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム51が、ネットワーク30を介してコンピュータ40にダウンロードされても構わない。
【0032】
また、セキュリティ強化装置60は、フィルタリングルール格納部52及びセッションオブジェクト格納部53を有する。本実施形態において、フィルタリングルール格納部52及びセッションオブジェクト格納部53は、例えば外部記憶装置50に格納される。
【0033】
なお、上記したように、セキュリティ強化装置60は、クライアント端末10及びアプリケーションサーバ20間においてリクエスト及びレスポンスを中継する。
【0034】
フィルタリングルール格納部52には、例えば漏えいまたは改ざんの可能性があるパラメータの条件を示すフィルタリングルールが予め格納される。フィルタリングルール格納部52に格納されるフィルタリングルールは、上記したアプリケーションサーバ20(によって提供されるWebアプリケーション)から送信されるレスポンスからパラメータを検出するために用いられる。このフィルタリングルールのデータ構造の詳細については後述する。
【0035】
セッションオブジェクト格納部53には、アプリケーションサーバ20から送信されるレスポンスに対応するセッションオブジェクトが格納される。
【0036】
レスポンスフィルタ61は、ユーザの操作に応じてクライアント端末10から送信されたリクエストに対するレスポンスをアプリケーションサーバ20から受信する。上記したようにレスポンスには、パラメータが含まれる。レスポンスに含まれるパラメータは、例えばレスポンスに対するリクエストの送信先URL(Uniform Resource Locator‥送信先URLを「接続先識別情報」の一例として本明細書では記載する)、当該パラメータのパラメータタイプ及びパラメータ名を含む。
【0037】
レスポンスフィルタ61は、フィルタリングルール格納部52に格納されているフィルタリングルールによって示される条件に合致するパラメータを、受信されたレスポンスから検出する。このとき、レスポンスフィルタ61は、受信されたレスポンスのパラメータに含まれるURL、パラメータタイプ及びパラメータ名に基づいて検出処理を実行する。
【0038】
レスポンスフィルタ61は、検出されたパラメータ(フィルタリングルール格納部52に格納されているフィルタリングルールによって示される条件に合致するパラメータ)を、受信されたレスポンスに対応するセッションオブジェクトに格納する。レスポンスフィルタ61は、セッション管理部62を介して格納処理を実行する。後述するように、受信されたレスポンスに対応するセッションオブジェクトは、セッションオブジェクト格納部53に格納されている。
【0039】
レスポンスフィルタ61は、検出されたパラメータがセッションオブジェクトに格納されると、当該検出されたパラメータを、受信されたレスポンスから削除する。
【0040】
レスポンスフィルタ61は、後述するセッション管理部62によって発行されたセッションIDを、検出されたパラメータが削除されたレスポンスに埋め込む。
【0041】
レスポンスフィルタ61は、セッション管理部62によって発行されたセッションIDが埋め込まれたレスポンスをクライアント端末10に対して送信する。
【0042】
セッション管理部62は、セッションオブジェクト格納部53に対する各種処理を実行する。
【0043】
セッション管理部62は、フィルタリングルール格納部52に格納されているフィルタリングルールによって示される条件に合致するパラメータがレスポンスフィルタ61によってレスポンスから検出された場合に、当該レスポンスに対応するセッションオブジェクトがセッションオブジェクト格納部53に格納されているか否かを判定する。つまり、セッション管理部62は、レスポンスフィルタ61によって受信されたレスポンスに対応するセッションオブジェクトが生成済みであるか否かを判定する。
【0044】
セッション管理部62は、レスポンスフィルタ61によって受信されたレスポンスに対応するセッションオブジェクトが生成済みでない場合には、当該レスポンスに対応するセッションオブジェクトを生成する。この生成されたセッションオブジェクトは、セッションオブジェクト格納部53に格納される。
【0045】
セッション管理部62は、レスポンスフィルタ61によって受信されたレスポンスに対応するセッションオブジェクトを生成すると、当該セッションオブジェクトを一意に識別するための独自のセッションID(セッション識別情報)を発行する。この発行されたセッションIDは、セッション管理部62によって生成されたセッションオブジェクト(当該セッションIDによって識別されるセッションオブジェクト)に格納される。
【0046】
また、セッション管理部62は、後述するようにセッションオブジェクト格納部53に格納されたセッションオブジェクトの廃棄処理を行う。
【0047】
リクエストフィルタ63は、上記したようにレスポンスフィルタ61によって送信されたレスポンスに対するリクエストをクライアント端末10から受信する。この受信されたリクエストは、例えばユーザの操作に応じてアプリケーションサーバ20に対して送信されたリクエストである。また、この受信されたリクエストには、レスポンスフィルタ61によって送信されたレスポンスに埋め込まれたセッションID(セッション管理部62によって発行されたセッションID)が含まれる。
【0048】
リクエストフィルタ63は、受信されたリクエストに含まれるセッションIDによって識別されるセッションオブジェクト(当該セッションIDが格納されているセッションオブジェクト)を、セッションオブジェクト格納部53から読み込む。
【0049】
リクエストフィルタ63は、受信されたリクエストに含まれるセッションIDによって識別されるセッションオブジェクトが読み込まれると、当該セッションIDを当該リクエストから削除する。
【0050】
リクエストフィルタ63は、読み込まれたセッションオブジェクトに格納されているパラメータを、受信されたリクエスト(内)に復元する。受信されたリクエスト内にセッションオブジェクトに格納されているパラメータが復元されると、セッション管理部62によって当該セッションオブジェクトは廃棄される。
【0051】
リクエストフィルタ63は、パラメータが復元されたリクエストをアプリケーションサーバ20に対して送信する。
【0052】
なお、リクエストフィルタ63は、受信されたリクエストにセッション管理部62によって発行されたセッションID(レスポンスフィルタ61によって送信されたレスポンスに埋め込まれたセッションID)が含まれている場合にのみ機能する。例えばクライアント端末10(上で動作するWebブラウザ)及びアプリケーションサーバ20(によって提供されるアプリケーション)間で最初に当該クライアント端末10から送信されるリクエストにはセッション管理部62によって発行されたセッションIDは含まれていない。このようなリクエストが受信された場合、リクエストフィルタ63は、特別な処理は行わず、当該リクエストをアプリケーションサーバ20にそのまま中継する。
【0053】
このとき、例えばリクエストに含まれるパラメータ(リクエストパラメータ)の値をチェックするためのルールを予め用意しておき、リクエストフィルタ63がこのルールに基づいて当該パラメータの値をフィルタリングする構成であっても構わない。
【0054】
以下、本実施形態に係るセキュリティ強化装置60の動作について説明する。ここで、図3を参照して、セキュリティ強化装置60の動作を説明するために用いるアプリケーションサーバ20によって提供されるWebアプリケーションの概要について説明する。ここで説明するWebアプリケーションは、ユーザからの商品の注文を受け付ける受注サービスを提供するものであるとする。なお、図3(に示すWebアプリケーション)では、セキュリティ強化装置60の動作を説明するための最小限の内容が示されている。
【0055】
図3に示すように、まず、クライアント端末10は、例えばURLを指定してリクエスト(注文要求)をアプリケーションサーバ20(によって提供されるWebアプリケーション)に送信する(ステップS1)。このとき、ユーザは、クライアント端末10上で動作するWebブラウザからURLを指定することができる。
【0056】
次に、アプリケーションサーバ20は、クライアント端末10によって送信されたリクエストに対するレスポンスとして注文画面を当該クライアント端末10に返す(ステップS2)。
【0057】
ここで、図4は、レスポンスとしてクライアント端末10に返される注文画面が当該クライアント端末10に表示された場合の一例を示す。図4に示す例では、注文画面には、商品名、当該商品の単価、当該商品を注文する数(注文数)の入力欄(入力フォーム)、送信ボタン及び取り消しボタンが表示されている。
【0058】
図4に示す注文画面が表示されると、クライアント端末10を操作するユーザは、当該クライアント端末10上で動作するWebブラウザから注文数を入力し、送信ボタンを押下(クリック)する。これにより、注文内容(注文数)を含むリクエスト(注文受付要求)がクライアント端末10からアプリケーションサーバ20に対して送信される(ステップS3)。
【0059】
アプリケーションサーバ20(によって提供されるWebアプリケーション)では、クライアント端末10から送信されたリクエストに基づいて注文の受付処理が実行される。これにより、クライアント端末10から送信されたリクエストに対するレスポンスとして注文完了画面が当該クライアント端末10に返される(ステップS4)。
【0060】
ここで、図5は、レスポンスとしてクライアント端末10に返される注文完了画面が当該クライアント端末10に表示された場合の一例を示す。図5に示す例では、注文完了画面には、商品名、当該商品の単価、上記した注文画面において入力された注文数及び請求額が表示されている。なお、注文完了画面に表示される請求額は、商品の単価及び注文数から算出される。
【0061】
以下の説明では、上記した図3に示すリクエスト及びレスポンスがクライアント端末1及びアプリケーションサーバ20間において送受信されるものとして説明する。つまり、本実施形態に係るセキュリティ強化装置60は、図3に示すリクエスト及びレスポンスを中継する。
【0062】
まず、図6のフローチャートを参照して、アプリケーションサーバ20によってレスポンスが送信された場合の本実施形態に係るセキュリティ強化装置60の処理手順について説明する。ここでは、上記した図3において説明した注文画面のレスポンスがアプリケーションサーバ20によって送信された場合について説明する。
【0063】
この場合、セキュリティ強化装置60に含まれるレスポンスフィルタ61では、フィルタリングルール格納部52に予め格納されている(設定されている)フィルタリングルールに基づいてフィルタリング処理を実行する。
【0064】
まず、レスポンスフィルタ61は、アプリケーションサーバ20によって送信されたレスポンスを受信する(ステップS11)。このレスポンスには、例えば当該レスポンスに対するリクエストの送信先URL及びパラメータが含まれる。このURLは、例えばユーザの操作に応じてWebブラウザから指定される。また、パラメータには、当該パラメータのパラメータタイプ、パラメータ名及びパラメータ値が含まれる。
【0065】
ここで、図7は、レスポンスフィルタ61によって受信される注文画面のレスポンスの一例を示す。なお、図7では、実際のレスポンスの内容のうち説明に最小限必要な内容が示されている。
【0066】
図7に示すレスポンス100においては、1行目の「SESSION_ID」はクライアント端末10から送信されたリクエストに対してアプリケーションサーバ20が発行したセッションIDを示す。アプリケーションサーバ20(によって提供されるWebアプリケーション)及びクライアント端末10(上で動作するWebブラウザ)間では、このセッションIDを用いて通信の同期が実現される。この1行目においては、「Cookie」がパラメータタイプであり、「SESSION_ID」がパラメータ名であり、「012」がパラメータ値である。つまり、1行目には、パラメータタイプ「Cookie」、パラメータ名「SESSION_ID」及びパラメータ値「012」を含むパラメータが示されている。
【0067】
2行目の「Content−length」は、この後に続くデータのデータ長をバイト単位で表す。なお、本実施例では、改行コードを1文字とカウントしてデータ長を求めている。
【0068】
4行目に含まれる「action=“http://hostname/order.do”」は、上記した図4に示す注文画面で送信ボタンがクリックされたときのデータの送信先URL「http://hostname/order.do」を示す。
【0069】
8行目〜10行目の「input type=“hidden”」は、Hiddenパラメータと呼ばれる。このHiddenパラメータは、情報としてはクライアント端末10に送信されるが、当該Webブラウザにおける画面上には表示されない。このため、Hiddenパラメータは、ユーザに対しては示されない(表示されない)が画面間で引き継ぎたい情報を埋め込むように実装されている場合があり、情報の漏えいまたは改ざん等の対象となる。
【0070】
なお、8行目のHiddenパラメータにおいては、「Hidden」がパラメータタイプであり、「SCREEN_ID」がパラメータ名であり、「s001」がパラメータ値である。つまり、8行目には、パラメータタイプ「Hidden」、パラメータ名「SCREEN_ID」及びパラメータ値「s001」を含むパラメータ(Hiddenパラメータ)が示されている。
【0071】
9行目のHiddenパラメータにおいては、「Hidden」がパラメータタイプであり、「USER_ID」がパラメータ名であり、「taro」がパラメータ値である。つまり、9行目には、パラメータタイプ「Hidden」、パラメータ名「USER_ID」及びパラメータ値「taro」を含むパラメータ(Hiddenパラメータ)が示されている。
【0072】
また、10行目のHiddenパラメータにおいては、「Hidden」がパラメータタイプであり、「PRICE」がパラメータ名であり、「12000」がパラメータ値である。つまり、10行目には、パラメータタイプ「Hidden」、パラメータ名「PRICE」及びパラメータ値「12000」を含むパラメータ(Hiddenパラメータ)が示されている。
【0073】
なお、パラメータタイプには、上記した「Cookie」及び「Hidden」以外に「GET」等が存在する。
【0074】
以下、上記したステップS11においては、図7に示すレスポンス100が受信されたものとして説明する。
【0075】
再び図6に戻るって説明する。レスポンスフィルタ61は、レスポンス100が受信されると、フィルタリングルール格納部52に格納されているフィルタリングルールを読み込む(ステップS12)。このとき、レスポンスフィルタ61は、フィルタリングルール格納部52に格納されているフィルタリングルールのうちの1つを読み込む。
【0076】
ここで、図8は、フィルタリングルール格納部52に格納されているフィルタリングルールの一例を示す。図8に示すように、フィルタリングルール(によって示される条件)は、少なくともURLパターン、パラメータタイプ及びパラメータ名を含む。本明細書におけるURLパターンは、「接続先識別パターン」の一例であり、例えば正規表現等の表記方法によって与えられる。
【0077】
図8に示す例では、フィルタリングルール格納部52には、フィルタリングルール521〜526が格納されている。
【0078】
フィルタリングルール521は、URLパターン「.*/order¥.do.*」、パラメータタイプ「COOKIE」及びパラメータ名「SESSION_ID」を含む。
【0079】
フィルタリングルール522は、URLパターン「.*/order¥.do.*」、パラメータタイプ「HIDDEN」及びパラメータ名「SCREEN_ID」を含む。
【0080】
フィルタリングルール523は、URLパターン「.*/order¥.do.*」、パラメータタイプ「HIDDEN」及びパラメータ名「USER_ID」を含む。
【0081】
フィルタリングルール524は、URLパターン「.*/order¥.do.*」、パラメータタイプ「HIDDEN」及びパラメータ名「PRICE」を含む。
【0082】
フィルタリングルール525は、URLパターン「.*/userinfo¥.do.*」、パラメータタイプ「GET」及びパラメータ名「CLASS」を含む。
【0083】
また、フィルタリングルール526は、URLパターン「.*/order¥.do.*」、パラメータタイプ「GET」及びパラメータ名「ADDRESS」を含む。
【0084】
再び図6に戻って説明する。なお、上記したステップS12において、レスポンスフィルタ61は、図8に示すフィルタリングルール521を読み込んだものとして説明する。
【0085】
レスポンスフィルタ61は、読み込まれたフィルタリングルール521を構成するURLパターンに上記したステップS11において受信されたレスポンス100に含まれるURLが合致する(一致する)か否かを判定する(ステップS13)。
【0086】
フィルタリングルール521に含まれるURLパターンは、「.*/order¥.do.*」である。これは、任意の文字列で開始し、文字列「/order.do」を含み、任意の文字列で終了する文字列(URL)のパターンを表す。なお、任意の文字列には、空文字列が含まれる。一方、レスポンス100に含まれるURLは、「http://hostname/order.do」である。
【0087】
この場合、レスポンスフィルタ61は、レスポンス100に含まれるURLがフィルタリングルール521に含まれるURLパターンに合致すると判定する(ステップS13のYES)。
【0088】
次に、レスポンスフィルタ61は、読み込まれたフィルタリングルール521に含まれるパラメータタイプ及びパラメータ名を含むパラメータ(当該パラメータタイプ及びパラメータ名が一致するパラメータ)がレスポンス100の中に存在するか否かを判定する(ステップS14)。
【0089】
フィルタリングルール521に含まれるパラメータタイプは「COOKIE」であり、パラメータ名は「SESSION_ID」である。一方、図7に示すレスポンス100の1行目には、パラメータタイプ「Cookie(COOKIE)」及びパラメータ名「SESSION_ID」を含むパラメータが存在する。
【0090】
この場合、レスポンスフィルタ61は、フィルタリングルール521に含まれるパラメータタイプ及びパラメータ名を含むパラメータがレスポンス100の中に存在すると判定する(ステップS14のYES)。
【0091】
この場合、レスポンスフィルタ61は、フィルタリングルール521に含まれるパラメータタイプ及びパラメータ名を含むパラメータ(図7に示すレスポンス100の1行目のパラメータ)を、フィルタリングルール521に合致するパラメータとしてレスポンス100から検出する。
【0092】
フィルタリングルール521に合致するパラメータがレスポンス100から検出された場合、セッション管理部62は、当該レスポンス100に対応するセッションオブジェクトが生成済みであるか否かを判定する(ステップS15)。セッション管理部62は、セッションオブジェクト格納部53を参照して判定処理を実行する。セッションオブジェクトは、後述するように例えばレスポンス100から最初にパラメータが検出された際に生成され、セッションオブジェクト格納部53に格納される。
【0093】
ここでは、レスポンスフィルタ61によって検出されたパラメータはレスポンス100から検出された最初のパラメータであるため、当該レスポンス100に対応するセッションオブジェクトは生成されていない。よって、セッション管理部62は、レスポンス100に対応するセッションオブジェクトが生成済みでないと判定する(ステップS15のNO)。
【0094】
セッションオブジェクトが生成済みでないと判定された場合、セッション管理部62は、レスポンス100に対応するセッションオブジェクトを生成する(ステップS16)。セッション管理部62は、生成されたセッションオブジェクトをセッションオブジェクト格納部53に格納する。
【0095】
セッション管理部62は、生成されたセッションオブジェクト(セッションオブジェクト格納部53に格納されたセッションオブジェクト)を一意に識別するためのセッションIDを発行する(ステップS17)。ここで、セッション管理部62によって発行されたセッションIDは、例えば「3juzOuAwk」であるものとする。このセッションIDは、上記したアプリケーションサーバ20によって発行されたセッションID「012」と比較して、予測しにくい強固なセッションIDである。セッション管理部62によって発行されたセッションIDは、当該セッションIDによって一意に識別されるセッションオブジェクトに格納される。
【0096】
次に、レスポンスフィルタ61は、検出されたパラメータ(フィルタリングルール521に合致するパラメータ)をセッションオブジェクト格納部53に格納されたセッションオブジェクトに格納する(ステップS18)。このセッションオブジェクトは、上記ステップS16において生成されたレスポンス100に対応するセッションオブジェクトである。なお、セッションオブジェクトに格納されるパラメータには、パラメータタイプ、パラメータ名及びパラメータ値が含まれる。ここでは、図7に示すレスポンス100の1行目はCookieパラメータであることから、パラメータタイプとしては、「COOKIE(Cookie)」がセッションオブジェクトに格納される。また、パラメータ名としては、「SESSION_ID=012」の「=」の左側である「SESSION_ID」がセッションオブジェクトに格納される。パラメータ値としては、「SESSION_ID=012」の「=」の右側である「012」がセッションオブジェクトに格納される。
【0097】
レスポンスフィルタ61は、検出されたパラメータをレスポンス100から削除する(ステップS19)。ここでは、図7に示すレスポンス100から文字列「SESSION_ID=012」が削除される。
【0098】
ここで、フィルタリングルール格納部52に格納されている全てのフィルタリングルールについて上記したステップS12以降の処理が実行されたか否かが判定される(ステップS20)。
【0099】
全てのフィルタリングルールについて処理が実行されていないと判定された場合(ステップS20のNO)、ステップS12に戻って処理が繰り返される。
【0100】
なお、上記したステップS13においてレスポンス100に含まれるURLがフィルタリングルールに含まれるURLパターンに合致しないと判定された場合及びステップS14においてフィルタリングルールに含まれるパラメータタイプ及びパラメータ名を含むパラメータがレスポンス100の中に存在しないと判定された場合についても、ステップS12に戻って処理が繰り返される。
【0101】
ここでは、フィルタリングルール格納部53に格納されているフィルタリングルール521についてステップS12以降の処理が実行されたので、次は、フィルタリングルール522について処理が実行される。
【0102】
ここで、フィルタリングルール522についてのステップS12以降の処理について簡単に説明する。
【0103】
フィルタリングルール522に含まれるURLパターンは、「.*/order¥.do.*」である。一方、レスポンス100に含まれるURLは、「http://hostname/order.do」である。
【0104】
したがって、ステップS13においてはレスポンス100に含まれるURLがフィルタリングルール522に含まれるURLパターンに合致すると判定される。
【0105】
また、フィルタリングルール522に含まれるパラメータタイプは「HIDDEN」であり、パラメータ名は「SCREEN_ID」である。一方、レスポンス100の8行目には、パラメータタイプ「Hidden(HIDDEN)」及びパラメータ名「SCREEN_ID」を含むパラメータ(Hiddenパラメータ)が存在する。
【0106】
したがって、ステップ14においてはフィルタリングルール522に含まれるパラメータタイプ及びパラメータ名を含むパラメータがレスポンス100の中に存在すると判定される。
【0107】
よって、フィルタリングルール522に含まれるパラメータタイプ及びパラメータ名を含むパラメータ(図7に示すレスポンス100の8行目のパラメータ)が、フィルタリングルール522に合致するパラメータとしてレスポンス100から検出される。
【0108】
このとき、レスポンス100に対応するセッションオブジェクトは既に生成済みである。よって、ステップS17においてレスポンス100に対応するセッションオブジェクトは既に生成済みであると判定される。この場合には、ステップS16及びステップS17の処理は実行されず、ステップS18の処理が実行される。
【0109】
ステップS18において、検出されたパラメータ(フィルタリングルール522に合致するパラメータ)は、セッションオブジェクト格納部53に格納されているセッションオブジェクト(レスポンス100に対応するセッションオブジェクト)に格納される。
【0110】
また、ステップS19においては、検出されたパラメータがレスポンス100から削除される。
【0111】
このように、フィルタリングルール格納部52に格納されている全てのフィルタリングルールについて順次ステップS12以降の処理が実行される。フィルタリングルール格納部52に格納されている全てのフィルタリングルールについて処理が実行されると、レスポンス100に対応するセッションオブジェクトには、当該レスポンス100から検出された全てのパラメータ(例えば、フィルタリングルール521〜526に合致するパラメータ)が格納される。
【0112】
なお、詳細な説明は省略するが、図7に示すレスポンス100には、図8に示すフィルタリングルール521〜526のうちフィルタリングルール521〜524に合致するパラメータは存在するが、フィルタリングルール525及び526に合致するパラメータは存在しない。つまり、フィルタリングルール521〜526の全てについてステップS12以降の処理が実行された場合、レスポンス100に対応するセッションオブジェクトには、フィルタリングルール521〜524に合致するパラメータが格納される。
【0113】
また、図7に示すレスポンス100には存在しないが、パラメータタイプが「GET」であるフィルタリングルール525(または526)においても、当該パラメータタイプ「GET」及びパラメータ名「CLASS」(または「ADDRESS」)が一致するパラメータ(GETパラメータ)がレスポンス100に存在すれば当該パラメータが検出され、セッションオブジェクトに格納される。レスポンス100に含まれるURLが例えば「http://hostname/order.do?SCREEN_ID=s001」である場合には、パラメータタイプを「GET」、「SCREEN_ID=s001」の「=」の左側(SCREEN_ID)をパラメータ名、当該「=」の右側(s001)をパラメータ値とするパラメータがセッションオブジェクトに格納される。
【0114】
ここで、図9は、レスポンス100に対応するセッションオブジェクトのデータ構造の一例を示す。
【0115】
図9に示すように、セッションオブジェクトには、少なくとも内部種別、パラメータが格納される。このパラメータには、パラメータタイプ、パラメータ名及びパラメータ値が含まれる。
【0116】
内部種別は、セッションオブジェクト内部でのパラメータの種類を表す。内部種別には、「SESSID」及び「PARAM」が含まれる。「SESSID」は、セッション管理部62によって発行されたセッションIDを示す。「PARAM」は、レスポンスフィルタ61によって検出されたパラメータ(フィルタリングルールに合致するパラメータ)を示す。
【0117】
図9に示す例では、セッションオブジェクトには、内部種別「SESSID」、パラメータタイプ「COOKIE」、パラメータ名「FILTER_SID」及びパラメータ値「3juzOuAwk」が格納されている。これによれば、セッション管理部62によって発行されたセッションIDのパラメータタイプが「COOKIE」であり、パラメータ名が「FIRTER_SID」であり、パラメータ値が「3juzOuAwk」であることが示されている。
【0118】
このセッション管理部62によって発行されたセッションIDのパラメータタイプは、例えばレスポンス100の管理に用いられる情報(ID等)のパラメータタイプに応じて決定される。ここでは、レスポンス100の中に例えば「Set−Cookie」が存在するため、セッション管理部62によって発行されたセッションIDのパラメータタイプは「Cookie」となる。
【0119】
セッション管理部62によって発行されたセッションIDのパラメータ名としては、アプリケーションサーバ20によって提供されるWebアプリケーションにおいて用いられるパラメータ名と重複しないパラメータ名が用いられる。
【0120】
また、セッション管理部62によって発行されたセッションIDのパラメータ値としては、アプリケーションサーバ20によって発行されたセッションID(レスポンス100に含まれるセッションID)と比較して予測しにくい強固な値が用いられる。
【0121】
同様に、セッションオブジェクトには、内部種別「PARAM」、パラメータタイプ「COOKIE」、パラメータ名「SESSION_ID」及びパラメータ値「012」が格納されている。これによれば、レスポンス100から検出されたパラメータのパラメータタイプが「COOKIE」であるパラメータ名「SESSION_ID」のパラメータ値が「012」であることが示されている。このレスポンス100から検出されたパラメータは、図8に示すフィルタリングルール521に合致するパラメータである。
【0122】
セッションオブジェクトには、内部種別「PARAM」、パラメータタイプ「HIDDEN」、パラメータ名「SCREEN_ID」及びパラメータ値「s001」が格納されている。これによれば、レスポンス100から検出されたパラメータのパラメータタイプが「HIDDEN」であるパラメータ名「SCREEN_ID」のパラメータ値が「s001」であることが示されている。このレスポンス100から検出されたパラメータは、図8に示すフィルタリングルール522に合致するパラメータである。
【0123】
セッションオブジェクトには、内部種別「PARAM」、パラメータタイプ「HIDDEN」、パラメータ名「USER_ID」及びパラメータ値「taro」が格納されている。これによれば、レスポンス100から検出されたパラメータのパラメータタイプが「HIDDEN」であるパラメータ名「USER_ID」のパラメータ値が「taro」であることが示されている。このレスポンス100から検出されたパラメータは、図8に示すフィルタリングルール523に合致するパラメータである。
【0124】
また、セッションオブジェクトには、内部種別「PARAM」、パラメータタイプ「HIDDEN」、パラメータ名「PRICE」及びパラメータ値「12000」が格納されている。これによれば、レスポンス100から検出されたパラメータのパラメータタイプが「HIDDEN」であるパラメータ名「PRICE」のパラメータ値が「12000」であることが示されている。このレスポンス100から検出されたパラメータは、図8に示すフィルタリングルール524に合致するパラメータである。
【0125】
再び図6に戻ると、ステップS20において全てのフィルタリングルールについて上記したステップS12以降の処理が実行されたと判定された場合、レスポンスフィルタ61は、セッション管理部62によって発行されたセッションIDをレスポンス100に埋め込む(ステップS21)。具体的には、セッション管理部62によって発行されたセッションIDをレスポンス100のCookieパラメータ「Set−Cookie: FILTER_SID=3juzOuAwk」として埋め込む。なお、セッション管理部62によって発行されたセッションIDの埋め込み方式は、Cookieパラメータ以外の方式、Hiddenパラメータ、GETパラメータとして埋め込むことも可能であるが、図9に示す内部種別「SESSID」のパラメータタイプと一致させる必要がある。
【0126】
ここで、上記したステップS19においてパラメータがレスポンス100から削除されている。このため、上記したステップS11において受信されたレスポンス100とパラメータが削除された後のレスポンス100とでは、当該レスポンス100のデータ長が短くなる。したがって、レスポンスフィルタ61は、レスポンス100におけるデータ長を示す「Content−length」(の値)を、上記したパラメータの削除に応じた適切な値に更新する(ステップS22)。
【0127】
レスポンスフィルタ61は、「Content−length」が更新されたレスポンス100をクライアント端末10に対して送信する(ステップS23)。
【0128】
ここで、図10は、レスポンスフィルタ61によって送信されたレスポンス100の一例を示す。ここでは、適宜、図7に示すレスポンス(処理前のレスポンス)100と比較して説明する。
【0129】
図10に示すレスポンス100においては、1行目の「FILTER_SID=3juzOuAwk」はセッション管理部62によって発行されたセッションIDである。つまり、図10に示すレスポンス100においては、図7に示すレスポンス100の1行目の「SESSION_ID」がセッション管理部62によって発行されたセッションIDに付け替えられている。これにより、アプリケーションサーバ20が脆弱なセッションID(図7に示すレスポンス100における「SESSION_ID=012」)を発行した場合であっても、予測しにくい強固なセッションID(図10に示すレスポンスにおける「FILTER_SID=3juzOuAwk」)に付け替えることで、例えばセッションIDを悪用したなりすまし等を防止することができる。
【0130】
また、図10に示すレスポンス100においては、2行目の「Content−length」は、レスポンスフィルタ61によるパラメータ削除後のデータ長に更新されている。図10に示す例では、パラメータの削除に応じて「Content−length」が「221」に更新されている。
【0131】
また、図10に示すレスポンス100においては、図7に示すレスポンス100と比較して、Hiddenパラメータ(図7に示すレスポンス100の8行目〜10行目)が削除されている。
【0132】
つまり、アプリケーションサーバ20によって提供されるWebアプリケーションの画面遷移にとって必要であるが、クライアント端末10上で動作するWebブラウザにとっては不要な情報がHiddenパラメータに含まれている場合には、この情報はクライアント端末10には送信されないため当該情報の漏えいまたは改ざんを防止することができる。具体的には、クライアント端末10に送信される図10に示すレスポンス100においては、例えば図7に示すレスポンス100の10行目のパラメータ(PRICEパラメータ)が削除されているため、価格情報の改ざん等を防止できる。
【0133】
なお、上記したステップS20において全てのフィルタリングルールについて上記したステップS12以降の処理が実行されたと判定された場合、ステップS21の処理が実行されるものとして説明したが、当該フィルタリングルールに合致するパラメータがレスポンス100内に存在しない(つまり、パラメータが1つも検出されない)場合には処理は終了される。
【0134】
次に、図11のフローチャートを参照して、上記したようにレスポンスフィルタ61によって送信されたレスポンス100に対するリクエストがクライアント端末10によって送信された場合の本実施形態に係るセキュリティ強化装置60の処理手順について説明する。ここでは、上記した図3において説明した注文受付要求のリクエストがクライアント端末10によって送信された場合について説明する。
【0135】
まず、セキュリティ強化装置60に含まれるリクエストフィルタ63は、クライアント端末10によって送信されたリクエストを受信する(ステップS31)。このリクエストには、上記したレスポンスフィルタ61によって送信されたレスポンス100に埋め込まれたセッションID(セッション管理部62によって発行されたセッションID)が含まれる。
【0136】
ここで、図12は、リクエストフィルタ63によって受信される注文受付要求のリクエストの一例を示す。図12に示すリクエスト200は、上記した図4に示す注文画面においてユーザがクライアント端末10を操作することによって当該注文画面の送信ボタンが押下された場合に当該クライアント端末10から送信される。
【0137】
図12に示すリクエスト200の1行目は、クライアント端末10(上で動作するWebブラウザ)から送られたセッションIDを含むCookieである。リクエスト200の1行目の「FILTER_SID=3juzOuAwk」は、レスポンスフィルタ61によって送信されたレスポンス100に埋め込まれた(付け替えられた)セッションIDである。
【0138】
リクエスト200の2行目の「Content−length」は、この後に続くデータのデータ長をバイト単位で表す。
【0139】
また、リクエスト200の4行目は、クライアント端末10上で動作するWebブラウザから入力された注文数及び図4における注文画面の送信ボタンが押下されたことを示すパラメータである。リクエスト200の4行目の「ORDER=10」は、10個の注文が要求されたことを示す。
【0140】
以下、上記したステップS31においては、図12に示すリクエスト200が受信されたものとして説明する。
【0141】
再び図11に戻ると、リクエストフィルタ63は、受信されたリクエスト200に含まれるセッションIDを取得する(ステップS32)。リクエストフィルタ63は、セッションIDとして「FILTER_SID=3juzOuAwk」をリクエスト200から取得する。この「FILTER_SID=3juzOuAwk」のうち、「FILTER_SID」はパラメータ名であり、「3juzOuAwk」はパラメータ値である。
【0142】
次に、リクエストフィルタ63は、取得されたセッションIDに対応するセッションオブジェクトを、セッションオブジェクト格納部53から読み込む(ステップS33)。リクエストフィルタ63は、取得されたセッションIDのパラメータ名及びパラメータ値が内部種別「SESSID」に対応付けて格納されているセッションオブジェクトを読み込む。つまり、リクエストフィルタ63によって取得されたセッションIDのパラメータ名及びパラメータ値が内部種別「SESSID」に対応付けられているパラメータ名及びパラメータ値と一致するセッションオブジェクトが読み込まれる。
【0143】
具体的には、パラメータタイプ「COOKIE」、リクエスト200から取得された「FILTER_SID=3juzOuAwk」のパラメータ名「FILTER_SID」及びパラメータ値「3juzOuAwk」を内部種別「SESSID」に対応付けて格納するセッションオブジェクトが読み込まれる。つまり、上記した図9に示すセッションオブジェクトがセッションオブジェクト格納部53から読み込まれる。
【0144】
リクエストフィルタ63は、受信されたリクエスト200に含まれるセッションIDを当該リクエスト200から削除する(ステップS34)。このとき、読み込まれたセッションオブジェクトの内部種別「SESSID」に対応付けられているパラメータタイプ、パラメータ名及びパラメータ値に一致する項目を削除する。つまり、内部種別「SESSID」に対応付けられているパラメータタイプが「COOKIE」であるため、図12に示すリクエスト200の1行目のCookieパラメータ「FILTER_SID=3juzOuAwk」が当該リクエスト200から削除される。
【0145】
リクエストフィルタ63は、読み込まれたセッションオブジェクトに内部種別「PARAM」に対応付けて格納されているパラメータ(パラメータタイプ、パラメータ名及びパラメータ値)を取得する(ステップS35)。このとき、リクエストフィルタ63は、セッション管理部62を介してパラメータを取得する。内部種別「PARAM」に対応付けてセッションオブジェクトに格納されているパラメータは、リクエストフィルタ63によって受信されたリクエスト200内に復元(再構成)されるパラメータである。
【0146】
リクエストフィルタ63は、読み込まれたセッションオブジェクトに格納されているパラメータのうちの1つを取得する。ここでは、図9に示すセッションオブジェクトから、内部種別「PARAM」に対応付けてセッションオブジェクトに格納されているパラメータタイプ「COOKIE」、パラメータ名「SESSION_ID」及びパラメータ値「012」(を含むパラメータ)が取得されたものとする。
【0147】
リクエストフィルタ63は、取得されたパラメータタイプ「COOKIE」、パラメータ名「SESSION_ID」及びパラメータ値「012」を含むパラメータをリクエスト200内に復元する(ステップS36)。
【0148】
この場合、パラメータタイプが「COOKIE」であるため、パラメータ名「SESSION_ID」を「=」の左側とし、パラメータ値「012」を当該「=」の右側として作成された文字列「SESSION_ID=012」をCookieパラメータとしてリクエスト200内に復元する。
【0149】
次に、リクエストフィルタ63によって読み込まれたセッションオブジェクトに格納されている全てのパラメータがリクエスト200内に復元されたか否かが判定される(ステップS37)。つまり、内部種別「PARAM」に対応付けてセッションオブジェクトに格納されている全てのパラメータが復元されたか否かが判定される。
【0150】
セッションオブジェクトに格納されている全てのパラメータがリクエスト200内に復元されていないと判定された場合(ステップS37のNO)、ステップS35に戻って処理が繰り返される。つまり、セッションオブジェクトに格納されている全てのパラメータが復元されるまで処理が繰り返される。
【0151】
ここで、図9に示すセッションオブジェクトにおいてリクエスト200に復元すべきパラメータは、上記したように内部種別「PARAM」に対応付けられているパラメータである。つまり、図9に示すセッションオブジェクトには、リクエスト200に復元すべきパラメータは4つ存在する。リクエストフィルタ63では、これらのパラメータが復元され、Webアプリケーションへのリクエストとして再構成される。
【0152】
上記したステップS35において内部種別「PARAM」に対応付けてセッションオブジェクトに格納されているパラメータタイプ「HIDDEN」、パラメータ名「SCREEN_ID」及びパラメータ値「s001」が取得された場合について説明する。この場合、パラメータタイプが「HIDDEN」であるため、パラメータ名「SCREEN_ID」を「=」の左側とし、パラメータ値「s001」を当該「=」の右側として作成された文字列「SCREEN_ID=s001」がHiddenパラメータとしてリクエスト200内に復元される。
【0153】
ステップS35において内部種別「PARAM」に対応付けてセッションオブジェクトに格納されているパラメータタイプ「HIDDEN」、パラメータ名「USER_ID」及びパラメータ値「taro」が取得された場合について説明する。この場合、パラメータタイプが「HIDDEN」であるため、パラメータ名「USER_ID」を「=」の左側とし、パラメータ値「taro」を当該「=」の右側として作成された文字列「USER_ID=taro」がHiddenパラメータとしてリクエスト200内に復元される。
【0154】
また、ステップS35において内部種別「PARAM」に対応付けてセッションオブジェクトに格納されているパラメータタイプ「HIDDEN」、パラメータ名「PRICE」及びパラメータ値「12000」が取得された場合について説明する。この場合、パラメータタイプが「HIDDEN」であるため、パラメータ名「PRICE」を「=」の左側とし、パラメータ値「12000」を当該「=」の右側として作成された文字列「PRICE=12000」がHiddenパラメータとしてリクエスト200内に復元される。
【0155】
なお、図9に示すセッションオブジェクトには格納されていないが、パラメータタイプが「GET」であるパラメータが取得された場合には、GETパラメータとしてURLに付加することで復元される。例えばパラメータタイプ「GET」、パラメータ名「SCREEN_ID」及びパラメータ値「s001」が取得された場合であって、例えばURLが「http://sampleshost/order.do?ORDER=10」である場合を想定する。この場合、「http://sampleshost/order.do?ORDER=10&SCREEN_ID=s001」のようにGETパラメータが復元される。
【0156】
以上のように復元処理が実行され、内部種別「PARAM」に対応付けてセッションオブジェクトに格納されている全てのパラメータがリクエスト200内に復元されたと判定されたと判定された場合(ステップS37のYES)、リクエストフィルタ63は、読み込まれたセッションオブジェクトをセッションオブジェクト格納部53から廃棄する(ステップS38)。このとき、リクエストフィルタ63は、セッション管理部62を介してセッションオブジェクトを廃棄する。
【0157】
上記したようにリクエスト200においてはパラメータが復元されている。このため、上記したステップS31において受信されたリクエスト200とパラメータが復元された後のリクエスト200とでは、当該リクエスト200のデータ長が長くなる。したがって、リクエストフィルタ63は、リクエスト200におけるデータ長を示す「Content−length」(の値)を、上記したパラメータの復元に応じた適切な値に更新する(ステップS39)。
【0158】
リクエストフィルタ63は、「Content−length」が更新されたリクエスト200をアプリケーションサーバ20に対して送信する(ステップS40)。
【0159】
ここで、図13は、リクエストフィルタ63によって送信されたリクエスト200の一例を示す。ここでは、適宜、図12に示すリクエスト(処理前のリクエスト)200と比較して説明する。
【0160】
図13に示すリクエスト200においては、1行目にCookieパラメータが復元されている。これは、内部種別「PARAM」に対応付けてセッションオブジェクトに格納されているパラメータタイプ「COOKIE」、パラメータ名「SESSION_ID」及びパラメータ値「012」に基づいてCookieパラメータが復元された結果である。
【0161】
また、図13に示すリクエスト200においては、4行目にHiddenパラメータが復元されている。「SCREEN_ID=s001」は、図9に示す内部種別「PARAM」に対応付けてセッションオブジェクトに格納されているパラメータタイプ「HIDDEN」、パラメータ名「SCREEN_ID」及びパラメータ値「s001」に基づいてHiddenパラメータが復元された結果である。「USER_ID=taro」は、図9に示す内部種別「PARAM」に対応付けてセッションオブジェクトに格納されているパラメータタイプ「HIDDEN」、パラメータ名「USER_ID」及びパラメータ値「taro」に基づいてHiddenパラメータが復元された結果である。また、「PRICE=12000」は、図9に示す内部種別「PARAM」に対応付けてセッションオブジェクトに格納されているパラメータタイプ「HIDDEN」、パラメータ名「PRICE」及びパラメータ値「12000」に基づいてHiddenパラメータが復元された結果である。
【0162】
このようにパラメータが復元されたリクエスト200がアプリケーションサーバ20に送信されることにより、当該アプリケーションサーバ20によって提供されるWebアプリケーションが既に開発を終えて運用が開始されている場合であっても、当該Webアプリケーションに影響を与えることはない。
【0163】
上記したように本実施形態においては、アプリケーションサーバ20から送信されるレスポンスに含まれるパラメータのうち、フィルタリングルール格納部52に格納されているフィルタリングルールに合致するパラメータをセッションオブジェクトに一時的に格納しておき、当該アプリケーションサーバ20によって発行されたセッションIDに代えてより予測しにくい強固な独自のセッションIDが埋め込まれ、かつ、当該セッションオブジェクトに格納されたパラメータが削除されたレスポンスがクライアント端末10に送信される。また、本実施形態においては、独自のセッションIDが埋め込まれ、かつ、パラメータが削除されたレスポンスに対してリクエストがクライアント端末10から送信された場合、セッションオブジェクトに格納されたパラメータが当該リクエストに復元され、アプリケーションサーバ20に対して送信される。
【0164】
これにより、本実施形態においては、レスポンスにクライアント端末10上で動作するWebブラウザでは使用しないが、アプリケーションサーバ20によって提供されるWebアプリケーションの画面間で引継ぎが必要なパラメータであって、情報の漏洩または改ざんのおそれのあるパラメータ(例えば、価格情報または個人情報等)はクライアント端末10に送信されない。したがって、本実施形態においては、アプリケーションサーバ20からのレスポンスに含まれるパラメータの漏洩及び改ざんを防止することが可能となるため、当該アプリケーションサーバ20によって提供されるWebアプリケーションにおいては安全にセッションを継続することができる。
【0165】
さらに、本実施形態においては、既に開発されたWebアプリケーションのプログラムを改修することなく実現できるため、当該Webアプリケーションの運用開始後に問題が顕在化したような場合であっても稼働中のWebアプリケーションの実装を変更することなく対応することが可能である。
【0166】
なお、本実施形態においては、1つのレスポンスに1つの入力フォームが含まれているものとして説明したが、例えば1つのレスポンスに複数の入力フォームを含む場合であっても、当該フォームの識別子をセッションIDと共に埋め込むことにより本実施形態に係るセキュリティ強化装置60の構成に変更を加えることなく容易に実現することができる。
【0167】
また、本実施形態に係るセキュリティ強化装置60のレスポンスフィルタ61によってレスポンスがクライアント端末10に送信された後、当該レスポンスに対してクライアント端末10から送信されるリクエストを監視し、予め定められた期間(時間)内に当該リクエストが当該クライアント端末10から送信されない(つまり、セキュリティ強化装置60のリクエストフィルタ63によって当該リクエストが受信されない)場合に、セッションオブジェクト格納部53に格納されている当該レスポンスに対応するセッションオブジェクトを廃棄(つまり、タイムアウト処理)する構成であっても構わない。これによれば、セッションオブジェクトにパラメータを格納し、レスポンスを送信した場合に、当該レスポンスに対するリクエストが送信されないにもかかわらず当該セッションオブジェクトを蓄積しておくような事態を回避することができる。
【0168】
また、本実施形態においては、クライアント端末10及びアプリケーションサーバ20の間においてセキュリティ強化装置60がリクエスト及びレスポンスを中継するものとして説明したが、当該セキュリティ強化装置60(の各機能)がアプリケーションサーバ20に含まれる構成であっても構わない。
【0169】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【符号の説明】
【0170】
10…クライアント端末、20…アプリケーションサーバ、30…ネットワーク、40…コンピュータ、50…外部記憶装置、52…フィルタリングルール格納部、53…セッションオブジェクト格納部、60…セキュリティ強化装置、61…レスポンスフィルタ、62…セッション管理部、63…リクエストフィルタ。

【特許請求の範囲】
【請求項1】
ユーザによって操作されるクライアント端末及び当該クライアント端末に対してアプリケーションを提供するアプリケーションサーバと通信可能に接続され、漏えいまたは改ざんの可能性があるパラメータの条件を示すルールを予め格納するルール格納手段及びセッションオブジェクト格納手段を有するセキュリティ強化装置のコンピュータによって実行されるセキュリティ強化プログラムであって、
前記コンピュータに、
前記ユーザの操作に応じて前記クライアント端末から送信された前記アプリケーションを利用するための要求に対するパラメータを含む応答を、前記アプリケーションサーバから受信するステップと、
前記ルール格納手段に格納されているルールによって示される条件に合致するパラメータを前記受信された応答から検出するステップと、
前記ルールによって示される条件に合致するパラメータが前記受信された応答から検出された場合、当該応答に対応するセッションオブジェクトを生成するステップと、
前記生成されたセッションオブジェクトを前記セッションオブジェクト格納手段に格納するステップと、
前記生成されたセッションオブジェクトを一意に識別するためのセッション識別情報を発行するステップと、
前記検出されたパラメータを前記発行されたセッション識別情報に対応付けて前記セッションオブジェクト格納手段に格納されたセッションオブジェクトに格納するステップと、
前記検出されたパラメータが前記セッションオブジェクトに格納されると、当該パラメータを前記受信された応答から削除するステップと、
前記セッションオブジェクトに格納されたパラメータが削除された応答に、前記発行されたセッション識別情報を埋め込むステップと、
前記発行されたセッション識別情報が埋め込まれた応答を前記クライアント端末に対して送信するステップと、
前記発行されたセッション識別情報が埋め込まれた応答が送信された後、当該セッション識別情報を含む当該応答に対する要求を前記クライアント端末から受信するステップと、
前記受信された要求に含まれるセッション識別情報によって識別されるセッションオブジェクトを、前記セッションオブジェクト格納手段から読み込むステップと、
前記受信された要求に含まれるセッション識別情報を当該要求から削除するステップと、
前記セッション識別情報が削除された要求に、前記読み込まれたセッションオブジェクトに格納されたパラメータを復元するステップと、
前記パラメータが復元された要求を前記アプリケーションサーバに対して送信するステップと
を実行させるためのセキュリティ強化プログラム。
【請求項2】
前記コンピュータに、前記セッション識別情報が削除された要求に前記読み込まれたセッションオブジェクトに格納されたパラメータが復元された場合、当該セッションオブジェクトを廃棄するステップを更に実行させることを特徴とする請求項1記載のセキュリティ強化プログラム。
【請求項3】
前記コンピュータに、前記発行されたセッション識別情報が埋め込まれた応答を前記クライアント端末に対して送信した後、予め定められた期間内に当該送信された応答に対する要求がクライアント端末から受信されない場合、前記セッションオブジェクト格納手段に格納されたセッションオブジェクトを廃棄するステップを更に実行させることを特徴とする請求項1記載のセキュリティ強化プログラム。
【請求項4】
前記ルール格納手段に格納されるルールによって示される条件は、接続先識別パターン、パラメータタイプ及びパラメータ名を含み、
前記受信された応答は、当該応答に対する要求の送信先に係る接続先識別情報を更に含み、
前記受信された応答に含まれるパラメータは、当該パラメータのパラメータタイプ及びパラメータ名を含み、
前記検出するステップは、
前記受信された応答に含まれる接続先識別情報が前記ルール格納手段に格納されるルールによって示される条件に含まれる接続先識別パターンに合致するかを判定するステップと、
前記受信された応答に含まれる接続先識別情報が前記接続先識別パターンに合致すると判定された場合、前記ルール格納手段に格納されるルールによって示される条件に含まれるパラメータタイプ及びパラメータ名を含むパラメータが前記受信された応答に含まれるかを判定するステップと、
前記ルール格納手段に格納されるルールによって示される条件に含まれるパラメータタイプ及びパラメータ名を含むパラメータが前記受信された応答に含まれると判定された場合、当該パラメータを当該応答から検出するステップと
を含む
ことを特徴とする請求項1記載のセキュリティ強化プログラム。
【請求項5】
ユーザによって操作されるクライアント端末及び当該クライアント端末に対してアプリケーションを提供するアプリケーションサーバと通信可能に接続されるセキュリティ強化装置において、
漏えいまたは改ざんの可能性があるパラメータの条件を示すルールを予め格納するルール格納手段と、
前記ユーザの操作に応じて前記クライアント端末から送信された前記アプリケーションを利用するための要求に対するパラメータを含む応答を、前記アプリケーションサーバから受信する応答受信手段と、
前記ルール格納手段に格納されているルールによって示される条件に合致するパラメータを前記受信された応答から検出する検出手段と、
前記ルールに示される条件に合致するパラメータが前記受信された応答から検出された場合、当該応答に対応するセッションオブジェクトを生成する生成手段と、
前記生成されたセッションオブジェクトを格納するセッションオブジェクト格納手段と、
前記生成されたセッションオブジェクトを一意に識別するためのセッション識別情報を発行する発行手段と、
前記検出されたパラメータを前記発行されたセッション識別情報に対応付けて前記セッションオブジェクト格納手段に格納されたセッションオブジェクトに格納する格納処理手段と、
前記検出されたパラメータが前記セッションオブジェクトに格納されると、当該パラメータを前記受信された応答から削除するパラメータ削除手段と、
前記セッションオブジェクトに格納されたパラメータが削除された応答に、前記発行されたセッション識別情報を埋め込む埋め込み手段と、
前記発行されたセッション識別情報が埋め込まれた応答を前記クライアント端末に対して送信する応答送信手段と、
前記発行されたセッション識別情報が埋め込まれた応答が送信された後、当該セッション識別情報を含む当該応答に対する要求を前記クライアント端末から受信する要求受信手段と、
前記要求受信手段によって受信された要求に含まれるセッション識別情報によって識別されるセッションオブジェクトを、前記セッションオブジェクト格納手段から読み込む読み込み手段と、
前記要求受信手段によって受信された要求に含まれるセッション識別情報を当該要求から削除するセッション識別情報削除手段と、
前記セッション識別情報削除手段によってセッション識別情報が削除された要求に、前記読み込まれたセッションオブジェクトに格納されたパラメータを復元する復元手段と、
前記パラメータが復元された要求を前記アプリケーションサーバに対して送信する要求送信手段と
を具備することを特徴とするセキュリティ強化装置。

【図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


【公開番号】特開2010−182180(P2010−182180A)
【公開日】平成22年8月19日(2010.8.19)
【国際特許分類】
【出願番号】特願2009−26342(P2009−26342)
【出願日】平成21年2月6日(2009.2.6)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(301063496)東芝ソリューション株式会社 (1,478)
【Fターム(参考)】