(57)【要約】【課題】悪意ある開発者が作成したプログラムが存在していた場合に、ユーザやシステムを確実に保護することを目的とする。【解決手段】有線又は無線のネットワークを介して外部から送信されたプログラムを処理するシステムであって、前記プログラムを受信する受信部と、前記プログラムに、ユーザ又はシステムへの攻撃を行う処理を制限するゲートコンポーネントを追加する追加部と、前記プログラムにおいて、所定のキーワード又は構文を有するコードを書き換えて、前記所定のキーワード又は構文を有するコードの参照先を前記ゲートコンポーネントに変更する書き換え部とを備えることを特徴とする処理システム。【選択図】図１
2017130583.tif 000002
【特許請求の範囲】
【請求項１】
有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理システムであって、
前記プログラムを受信する受信部と、
前記プログラムに、ユーザ又はシステムへの攻撃を行う処理を制限するゲートコンポーネントを追加する追加部と、
前記プログラムにおいて、所定のキーワード又は構文を有するコードを書き換えて、前記所定のキーワード又は構文を有するコードの参照先を前記ゲートコンポーネントに変更する書き換え部とを備えることを特徴とする処理システム。
【請求項２】
前記プログラムに含まれる前記所定のキーワード又は構文を有するコードを解析する解析部をさらに備え、
前記追加部が、前記解析部の解析結果を受けて、予め入力された特定の処理を行うコードを組み合わせて前記ゲートコンポーネントを作成することを特徴とする請求項１記載の処理システム。
【請求項３】
有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理方法であって、
受信部が前記プログラムを受信する第１のステップと、
追加部が、前記プログラムに、ユーザ又はシステムへの攻撃を行う処理を制限するゲートコンポーネントを追加する第２のステップと、
書き換え部が、前記プログラムにおいて、所定のキーワード又は構文を有するコードを書き換えて、前記所定のキーワード又は構文を有するコードの参照先を前記ゲートコンポーネントに変更することを特徴とする処理方法。
【請求項４】
有線又は無線のネットワークを介して外部から送信されたプログラムを処理するプログラムであって、
コンピュータを、
有線又は無線のネットワークを介して外部から送信されたプログラムを解析し、受信部が前記プログラムを受信する第１のステップと、
追加部が、前記プログラムに、ユーザ又はシステムへの攻撃を行う処理を制限するゲートコンポーネントを追加する第２のステップと、
書き換え部が、前記プログラムにおいて、所定のキーワード又は構文を有するコードを書き換えて、前記所定のキーワード又は構文を有するコードの参照先を前記ゲートコンポーネントに変更することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理システム等に関するものである。
【背景技術】
【０００２】
現在、外部サーバに存在する情報とプログラム開発者が開発したプログラムとを組み合わせた新規コンテンツを、ウェブサイトを通じてユーザに提供するシステムがある。この一例としては、Ｇｏｏｇｌｅから提供される地図情報と、該地図上に存在するお店の写真や動画等の情報とを組み合わせて、地域を紹介する新規コンテンツを提供するもの等が挙げられる。【０００３】
ところで、上述の例において、写真や動画等の情報に加えて、例えばお店の口コミ情報を随時更新するプログラムを組み合わせることも考えられる。しかし、プログラム開発者に悪意があると、予めプログラムに例えばフィッシングサイトやウイルスに感染させるための不正サイトへと導くコードを組み込んで、ウェブサイトにアクセスしたユーザをこれらのサイトへと誘導して害を及ぼす場合がある。また、システムに保管されている秘密情報（例えば、顧客情報等）を盗むプログラムが組み込まれていた場合には、システム自体が攻撃される場合もある。そのため、プログラムを組み込むには、ユーザやシステムを保護するためにより強固なセキュリティが必要となる。【０００４】
このセキュリティの一例として、例えば特許文献１に記載されたものがある。この特許文献１では、プログラム開発者が開発したプログラムの特定のスクリプト部分（コード部分）を抽出し、これを正規化して識別情報を付与する。この識別情報はオリジン情報に紐付けられており、このオリジン情報と予め作成したデータベースに保存されたオリジン情報とを比較して、該データベースに保存されていないものであれば、スクリプト（コード）の実行を制限する。そして、このようなプログラムを外部サーバから得られる情報に組み込むことで、フィッシングサイトや不正サイトへのアクセスを防止する方法が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第４３９５１７８号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の方法では文字列としてコードを認識している。そのため、コードが偽装された場合には、そもそも特定のコードが抽出されず、識別情報が付与されないのでユーザに害をなす処理を制限することができない。また、コードの偽装方法は無数にあるので、この偽装方法を全て想定することは不可能であり、特許文献１の方法では確実にプログラム開発者からの攻撃を防ぐことはできない。【０００７】
本発明は上述した問題に鑑みてなされたものであって、悪意ある開発者が作成したプログラムが存在していた場合に、ユーザ又はシステムを確実に保護することができる処理システム、処理方法及びプログラムに関するものである。
【課題を解決するための手段】
【０００８】
本発明の処理システムは、有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理システムであって、前記プログラムを受信する受信部と、前記プログラムに、ユーザ又はシステムへの攻撃を行う処理を制限するゲートコンポーネントを追加する追加部と、前記プログラムにおいて、所定のキーワード又は構文を有するコードを書き換えて、前記所定のキーワード又は構文を有するコードの参照先を前記ゲートコンポーネントに変更する書き換え部とを備えることを特徴とする。【０００９】
開発者が開発したプログラムにおいて、ユーザやシステムに攻撃を行う可能性がある処理が含まれるコードは、所定のキーワード又は構文を用いて作成されている。そこで、本発明の処理システムでは、この特定のキーワード又は構文を有するコードの参照先を一律にゲートコンポーネントに書き換える。そのため、プログラムが実行されると、特定のキーワード又は構文を有するコードによって実行される処理は、全てゲートコンポーネントを経ることとなり、ゲートコンポーネントが、プログラム実行時にユーザやシステムに攻撃を行う処理の実行を制限する。そのため、ユーザに害を及ぼす処理を行うコードが偽装された場合であっても、所定のキーワード又は構文までも変更することはできず、偽装されたコードの参照先はゲートコンポーネントに変更されるので、プログラムが実行されると、ゲートコンポーネントにおいてユーザやシステムに害をなす処理が制限される。したがって、コードの偽装に関わらず、プログラム開発者からの攻撃を確実に防ぐことができ、ユーザ又はシステムを確実に保護することができる。【００１０】
本発明の処理システムの一実施形態としては、前記プログラムに含まれる前記所定のキーワード又は構文を有するコードを解析する解析部をさらに備え、前記追加部が、前記解析部の解析結果を受けて、予め入力された特定の処理を行うコードを組み合わせて前記ゲートコンポーネントを作成するものを挙げることができる。【００１１】
これにより、解析部がプログラムに含まれる所定のキーワード又は構文を有するコードを解析してプログラムに含まれる処理を特定した解析結果を受けて、追加部がこのプログラムに含まれる処理に対応したゲートコンポーネントを作成するので、プログラム毎に応じたゲートコンポーネントを作成することができ、プログラムを最適化して処理時間を短縮することができる。【００１２】
また、上述した処理システムの処理方法としては、有線又は無線のネットワークを介して外部から送信されたプログラムを処理する処理方法であって、受信部が前記プログラムを受信する第１のステップと、追加部が、前記プログラムに、予め定めた処理を制限するゲートコンポーネントを追加する第２のステップと、書き換え部が、前記プログラムにおいて、所定のキーワード又は構文を有するコードを書き換えて、前記所定のキーワード又は構文を有するコードの参照先を前記ゲートコンポーネントに変更するものを挙げることができる。【００１３】
さらに、上述した処理システムを実行するプログラムとしては、有線又は無線のネットワークを介して外部から送信されたプログラムを処理するプログラムであって、コンピュータを、有線又は無線のネットワークを介して外部から送信されたプログラムを解析し、受信部が前記プログラムを受信する第１のステップと、追加部が、前記プログラムに、予め定めた処理を制限するゲートコンポーネントを追加する第２のステップと、書き換え部が、前記プログラムにおいて、所定のキーワード又は構文を有するコードを書き換えて、前記所定のキーワード又は構文を有するコードの参照先を前記ゲートコンポーネントに変更するものを挙げることができる。
【発明の効果】
【００１４】
本発明の処理システムによれば、悪意ある開発者が作成したプログラムが存在していた場合に、ユーザやシステムを確実に保護することができる。
【図面の簡単な説明】
【００１５】
【図１】第１実施形態における処理システムのブロック図。
【図２】開発者から送られてきたプログラムを示す一例。
【図３】書き換え部を経たプログラムを示す一例。
【図４】第１実施形態における処理システムの変形例を示すブロック図。
【図５】第２実施形態における処理システムのブロック図。
【発明を実施するための形態】
【００１６】
本発明の処理システムの一実施形態について以下に図面を用いて説明する。
【００１７】
＜第１実施形態＞
本発明の処理システムは、外部サーバから取得した情報に、プログラム開発者が開発したプログラムを合成したコンテンツを、ウェブサイトを介してユーザに提供するものである。この一例としては、外部サーバから取得した地図情報に、プログラム開発者が開発したゲームプログラムを合成して作成したゲームコンテンツを、ウェブサイトを通じてユーザに提供するものが挙げられる。なお、以下ではゲームを例に本発明の処理システムを説明するが、本発明の処理システムはこの例に限ったものではない。
【００１８】
本発明の処理システム１は、図１に示すように、外部サーバ１００、プログラム開発者の開発者端末２００、ユーザのユーザ端末３００とそれぞれ有線又は無線のネットワークを介して接続されるとともに、このネットワークは図示しないプロキシサーバ等を介してインターネットに接続されている。
【００１９】
外部サーバ１００は、ユーザ端末３００から要求された情報を送信するものである。なお、本実施形態では外部サーバ１００は、一つであるが複数あってもよく、ユーザ端末３００が複数の外部サーバ１００のそれぞれに情報を要求してもよい。
【００２０】
開発者端末２００は、図示しないＣＰＵ、メモリ、通信ポート、ネットワークインターフェイス等を備える例えばスマートフォン、タブレット端末、ＰＣ等であって、ＪａｖａＳｃｒｉｐｔ（登録商標）、ＴｙｐｅＳｃｒｉｐｔ等のソースコードを用いてプログラムを作成するものである。
【００２１】
ユーザ端末３００は、図示しないＣＰＵ、メモリ、通信ポート、ネットワークインターフェイス等を備える例えばスマートフォン、タブレット端末、ＰＣ等である。ところで、このユーザ端末３００では、ユーザ端末自体に予め入力されたプログラムの機能やユーザ端末が管理するデータ等を呼び出すための規約であるアプリケーションプログラミングインターフェース（以下ＡＰＩという）が開示されている。そのため、プログラム開発者は、このＡＰＩを用いて、ユーザ端末３００で実行されるプログラムを開発する。なお、本実施形態ではプログラムのコードが、ＪａｖａＳｃｒｉｐｔ（登録商標）を用いて記載されているものとする。
【００２２】
第１実施形態における処理システム１の構成について、以下に詳述する。
【００２３】
この処理システム１は、ＣＰＵ、メモリ、Ａ／Ｄコンバータ、通信ポート、ネットワークインターフェイス等からなるサーバであって、メモリに所定のプログラムをインストールすることによって、図１に示す記録部５、受信部２、解析部３、追加部４、書き換え部５、作成部６、記録部７、送信部８としての機能を担うものである。
【００２４】
受信部２は、開発者端末２００から送られてきたプログラムを受信して、解析部３、書き換え部５及び書き換え部９へと送信する。このプログラムは、上述したＡＰＩを用いて開発されたプログラムである。この一例としては、一定の条件を満たせば宝が現れる宝探しゲームのプログラムや、謎を解いて脱出を図る脱出ゲームのプログラム等、ゲームコンテンツの一要素をなすものを挙げることができる。
【００２５】
解析部３は、受信部２から送られてきたプログラムを解析して、ユーザやシステムに攻撃を行うことが可能な処理を行う所定のキーワードや構文が記載された箇所を検出する。
【００２６】
説明のため、以下に受信部２から送られてきたプログラムにおいて、外部サイトへの通信処理を要求するＨＴＴＰリクエストが、ウィンドウオブジェクトを用いて記載されている場合のコードの記載例を図２に示す。外部サイトへの通信処理では、その通信先のサイトがフィッシングサイト等の場合にユーザに害をなすことが可能である。なお、本実施形態では説明のため、以下のコードが全て１つのプログラムの中に含まれているとする。
【００２７】
・ウィンドウオブジェクトがｏｐｅｎ関数を用いて記載されている場合
ｗｉｎｄｏｗ.ｏｐｅｎ（“ｈｔｔｐ：／／ｍａｌｉｃｉｏｕｓａａａａｓｉｔｅ.ｃｏｍ／”,“ｗｅｌｃｏｍｅ  ｔｏ  ｍａｌｉｃｉｏｕｓａａａａ  ｓｉｔｅ”）;
【００２８】
・ウィンドウオブジェクトが別変数として記載されている場合
ｖａｒ  ｗ＝ｗｉｎｄｏｗ；
ｗ.ｏｐｅｎ（“ｈｔｔｐ：／／ｍａｌｉｃｉｏｕｓａａａａｓｉｔｅ.ｃｏｍ／”, 
“ｗｅｌｃｏｍｅ ｔｏ ｍａｌｉｃｉｏｕｓａａａａ  ｓｉｔｅ”）；
【００２９】
・ｏｐｅｎ関数が文字列として扱われている場合
ｖａｒ  ｏ＝“ｏｐｅｎ”；
ｗｉｎｄｏｗ［ｏ］（“ｈｔｔｐ：／／ｍａｌｉｃｉｏｕｓａａａａｓｉｔｅ.ｃｏｍ／”,  “ｗｅｌｃｏｍｅ  ｔｏ  ｍａｌｉｃｉｏｕｓａａａａ  ｓｉｔｅ”）；
【００３０】
・ウィンドウオブジェクトが、ウィンドウというワードを用いずにｔｈｉｓで参照されている場合
ｔｈｉｓ.ｏｐｅｎ（“ｈｔｔｐ：／／ｍａｌｉｃｉｏｕｓａａａａｓｉｔｅ.ｃｏｍ／”,“ｗｅｌｃｏｍｅ  ｔｏ  ｍａｌｉｃｉｏｕｓａａａａ  ｓｉｔｅ”）；
【００３１】
・ウィンドウオブジェクトが、グローバル変数としてｏｐｅｎ関数を用いて表されている場合
ｏｐｅｎ（“ｈｔｔｐ：／／ｍａｌｉｃｉｏｕｓａａａａｓｉｔｅ.ｃｏｍ／”, “ｗｅｌｃｏｍｅ  ｔｏ  ｍａｌｉｃｉｏｕａａａａｓ  ｓｉｔｅ”）；
【００３２】
・上述の例を組み合わせて記載されている場合
ｖａｒ  ｗ＝ｗｉｎｄｏｗ；
ｖａｒ  ｏ＝“ｏｐｅｎ”；
ｖａｒ  ｕｒｌ＝“ｈｔｔｐ：／／ｍａｌｉｃｉｏｕｓａａａａｓｉｔｅ.ｃｏｍ／”；
ｖａｒ  ｍｓｇ＝“ｗｅｌｃｏｍｅ  ｔｏ  ｍａｌｉｃｉｏｕｓａａａａ  ｓｉｔｅ”；
ｗ［ｏ］（ｕｒｌ,ｍｓｇ）；
【００３３】
次に、受信部２から送られてきたプログラムにおいて、外部サイトへの通信処理を要求するＨＴＴＰリクエストがＤＯＭオブジェクトを用いて記載された場合について説明する。
【００３４】
この一例としては、ＤＯＭにｉｎｎｅｒＨＴＭＬを用いてｓｃｒｉｐｔタグを注入したコードで記載したものが挙げられる。
ｖａｒ  ｄｏｍ＝ｗｉｎｄｏｗ.ｄｏｃｕｍｅｎｔ.ｃｒｅａｔｅＥｌｅｍｅｎｔ（“ｄｉｖ”）；
ｄｏｍ.ｉｎｎｅｒＨＴＭＬ＝‘＜ｓｃｒｉｐｔ＞ｏｐｅｎ（ｈｔｔｐ：／／ｍａｌｉｃｉｏｕｓａａａａｓｉｔｅ.ｃｏｍ／）＜／ｓｃｒｉｐｔ＞’；
【００３５】
また、上述した例に加えて、例えばダミーコードを挟んで記載する場合も考えられる。
【００３６】
解析部３は、上述の例に挙げた様に種々の方法で記載されたコードの中から所定のキーワードや構文を特定し、その解析結果を示すデータを書き換え部５へと送信する。上述の例であれば、「ｗｉｎｄｏｗ」というキーワードやウィンドウオブジェクトを示す関数（例えばｏｐｅｎ関数等）を有する構文を特定し、その解析結果を示すデータを書き換え部５へと送信する。
【００３７】
追加部４は、受信部２が受信したプログラムに、ユーザ又はシステムへの攻撃を行う処理を制限するゲートコンポーネントを追加する。本実施形態においては、図３に示すように受信部２が受信したプログラムにゲートコンポーネントとなるプログラムＰ２、Ｐ３を追加する。
【００３８】
このゲートコンポーネントが制限する処理は、例えば、外部サーバ１００やサイトへ通信する処理、ファイルを読み込む処理、ループ処理、ログアウト、ログインの自動操作処理、確認画面を通さない他サイトへのリンク処理、Ｃｏｏｋｉｅの読み取り処理、実行ファイルのアップロード・ダウンロード処理、プラウザの処理を著しく制限する処理の連続実行処理、プラグインの呼出し処理、長いデータの定義や長い演算処理等である。
【００３９】
ここでは、上述した処理のうち外部サーバ１００やサイトへ通信する処理、ファイルを読み込む処理、ループ処理についてより具体的に説明する。まず、外部サーバ１００やサイトへ通信する処理であれば、アクセス先のＵＲＬが予め安全性を確認されたドメイン以外の場合には、処理を中断する。次に、ファイルを読み込む処理であれば、その参照先のファイルが予め禁止したファイル（例えば、顧客情報や個人情報が収容されたファイル等）であれば、ファイル処理を中断する。最後にループ処理であれば、そのコードに記載されたループ回数が予め定めた上限を上回る場合にループ処理を中断する。
【００４０】
書き換え部５は、解析部３の解析結果を受けて、ファイルの読み込み処理、外部サーバ１００やサイトへの通信処理、ループ処理等を行う所定のキーワード又は構文を有するコードを書き換えたり、コードを追加したりして、これら所定のキーワード又は構文を有するコードの参照先をゲートコンポーネントに変更する。
【００４１】
具体的には、上述した受信部２から送られてきたプログラムにおいて、外部サイトへの通信処理を要求するＨＴＴＰリクエストが、ウィンドウオブジェクトを用いて記載されている場合であれば、図３に示すように、ｗｉｎｄｏｗ部分をｆａｋｅＷｉｎｄｏｗに書き換えることが挙げられる。このｆａｋｅｗｉｎｄｏｗは、ゲートコンポーネントのことを示す。
【００４２】
また、ｗｉｎｄｏｗというキーワードを用いずにウィンドウオブジェクトを表す部分については、ｆａｋｅｗｉｎｄｏｗというキーワードを追加して、確実にコードの参照先がゲートコンポーネントとなるように書き換える。
【００４３】
上述の処理を行うことで、書き換え部５は所定のキーワード又は構文を有するコードの参照先をゲートコンポーネントに変更したプログラムＰ１を作成する。
【００４４】
作成部６は、追加部４及び書き換え部５を経て作成されたプログラムＰ１、プログラムＰ２、プログラムＰ３を取得して、これらプログラムＰ１、プログラムＰ２、プログラムＰ３からなるプログラムＸを予め作成した定型プログラムに埋め込んだ初期プログラムを作成する。この初期プログラムとは、ユーザ端末３００で機能するものであって、外部サーバ１００が有する情報を取得する要求を行うとともに、新規コンテンツを作成するように命令するものである。なお、本実施形態では、初期プログラムを生成する際に、書き換え部５を経て作成されたプログラムＰ１のみを組み込んでいるが、書き換え部５で書き換えられた複数のプログラムを組み込むことも可能である。
【００４５】
記録部７は、初期プログラムを記録する。なお、記録時に例えばプログラムを受信部２で受け付けた時間情報や、プログラムの名称に関する情報等に紐付けて初期プログラムを記録してもよい。
【００４６】
送信部８は、ユーザ端末３００からの初期プログラムの要求を受け付けて、初期プログラムを記録部７から抽出してユーザ端末３００に送信するものである。
【００４７】
ユーザ端末３００では、送信部８から送信された初期プログラムが実行され、外部サーバ１００に情報を取得する要求を行い、外部サーバ１００からこの情報が送信される。ユーザ端末３００では、この情報にプログラムＸや定型プログラムを合成して新規コンテンツを生成する。このコンテンツは、例えば外部サーバ１００から地図情報を取得し、地図上の所定の地点に宝を配置するとともに、ユーザの現在位置からその所定の地点までの間に位置情報に紐付けた様々なトラップを仕掛け、ユーザが実際にその位置に移動してトラップを解いていくことによって宝を獲得できるとした所謂リアルゲームに関する新規コンテンツである。
【００４８】
上述した第１実施形態の処理システムによれば、開発者が開発したプログラムにおいて、ユーザに害をなす可能性がある処理が含まれるコードの参照先を一律にゲートコンポーネントに書き換える。そのため、プログラムが実行されると、特定のキーワード又は構文を有するコードによって実行される処理は、全てゲートコンポーネントを経ることとなり、ゲートコンポーネントが、プログラム実行時にユーザに害をなす予め定めた処理の実行を制限する。そのため、ユーザに害を及ぼす処理を行うコードが偽装された場合であっても、偽装されたコードの参照先はゲートコンポーネントに変更されるので、プログラムが実行されると、ゲートコンポーネントにおいてユーザに害をなす処理が制限される。したがって、コードの偽装に関わらず、プログラム開発者からの攻撃を確実に防ぐことができる。
【００４９】
具体的にゲートコンポーネントは、悪意ある開発者がプログラムの中に、フィッシングサイトや不正サイトへと導くウェブブラウザへの通信処理を含ませていた場合、ゲートコンポーネントにおいてその処理を中断して、ユーザを保護することができる。また、悪意ある開発者がユーザ端末に保存された個人情報を取得するため、個人情報が収容されたファイルへの読み込み処理を行った場合、個人情報が収容されたファイルを予め読み込みを禁止するファイルに定めておき、処理を実行する際に参照先のファイルが禁止ファイルに該当すれば、処理を中断して個人情報が取得されることを防止し、ユーザを保護する。さらに、悪意ある開発者がユーザ端末に負荷をかけるためにループ処理を含んでいた場合、このループ処理のループ回数が予め定めた所定回数を超えていると、ループ処理を中断してユーザ端末への負荷を低減することができる。
【００５０】
なお、第１実施形態の変形例として、図４に示すように追加部４が、解析部３が作成した解析データを取得して、解析データに含まれる処理に対応したゲートコンポーネントを作成してもよい。このように構成すれば、ゲートコンポーネントをプログラムに合わせてカスタマイズできるので、処理を最適化して処理時間を短縮化することができる。
【００５１】
また、第１実施形態ではゲートコンポーネントを追加する追加部を経た後に書き換え部において、所定のキーワードまたは構文を有するコードの参照先をゲートコンポーネントに変更していたが、書き換え部での処理を行った後に、追加部でゲートコンポーネントを追加するように構成してもよい。さらに、作成部でゲートコンポーネントを追加するように構成してもよい。
【００５２】
＜第２実施形態＞
次に第２実施形態における本発明の処理システムについて説明する。
【００５３】
第２実施形態における処理システムは、処理システム側でプログラムが実行される点が第１実施形態と異なっている。なお、第１実施形態とは同様の符号を付し、説明を省略する。
【００５４】
第２実施形態における処理システムは、図５に示すように、受信部２、解析部３、追加部４、書き換え部５、作成部６、記録部７に加えて、プログラムを実行する制御部９及びユーザ端末３００との通信を行う送受信部１０をさらに備える。
【００５５】
第２実施形態における処理システムの具体例を、旅行の予約サイトを例に挙げて説明する。
【００５６】
旅行の予約サイトは一般的に大きく分けて、日時、目的場所、費用等のユーザの所望する条件を入力して検索する検索画面、検索結果を表示して所望のプランを選択する選択画面、所望のプランにおいて人数や部屋タイプ等が入力して予約を完了する予約画面が設けられている。
【００５７】
このような予約サイトにおいて、よりユーザが使いやすいように画面をカスタマイズするため、プログラム開発者がそれぞれ各画面に応じた複数のプログラムを作成する。
【００５８】
受信部２はこれらのプログラムを取得して解析部３、追加部４へと送り、書き換え部５は解析部３から得られた解析データをもとに、追加部４でゲートコンポーネントが追加されたプログラムを書き換える。
【００５９】
ここで、開発者が開発したプログラムにファイルの読み込み処理を行う以下のコードが含まれていたとする。
ｆｕｎｃｔｉｏｎ  ｓｈｏｗＦｉｌｅ（ｅｒｒ,  ｔｘｔ）｛
ｃｏｎｓｏｌｅ.ｌｏｇ（“ｅｒｒ：”  ＋  ｅｒｒ）；
ｃｏｎｓｏｌｅ.ｌｏｇ（“ｔｘｔ：”  ＋  ｔｘｔ）；
}
ｖａｒ  ｆｓ  ＝  ｒｅｑｕｉｒｅ（“ｆｓ”）；
ｆｓ.ｒｅａｄＦｉｌｅ（“ｔｅｓｔ.ｔｘｔ”,  “ｕｔｆ−８”,  ｓｈｏｗＦｉｌｅ）；
【００６０】
この場合、書き換え部５は以下のようにコードを変更する。
ｆｕｎｃｔｉｏｎ  ｓｈｏｗＦｉｌｅ（ｅｒｒ,  ｔｘｔ）｛
ｃｏｎｓｏｌｅ.ｌｏｇ（“ｅｒｒ：”  ＋  ｅｒｒ）；
ｃｏｎｓｏｌｅ.ｌｏｇ（“ｔｘｔ：”  ＋  ｔｘｔ）；
}
ｖａｒ  ｆｓ  ＝  ｆａｋｅＲｅｑｕｉｒｅ（“ｆｓ”）；
ｆｓ.ｒｅａｄＦｉｌｅ（“ｔｅｓｔ.ｔｘｔ”,  “ｕｔｆ−８”,  ｓｈｏｗＦｉｌｅ）；
ここで、ｆａｋｅＲｅｑｕｉｒｅがゲートコンポーネントを示すので、このコードの参照先がゲートコンポーネントに変更される。
【００６１】
また、ファイルの読み込み処理を行うコードが以下のように記載されていたとする。
ｆｕｎｃｔｉｏｎ  ｓｈｏｗＦｉｌｅ（ｅｒｒ,  ｔｘｔ）｛
ｖａｒ  ａ  ＝  ｒｅｑｕｉｒｅ（“ｆｓ”）；
ｖａｒ  ｂ  ＝  “ｒｅａｄＦｉｌｅ”；
ｖａｒ  ｃ  ＝  “ｔｅｓｔ.ｔｘｔ”；
ｖａｒ  ｄ  ＝  “ｕｔｆ−８”；
ｖａｒ  ｅ  ＝  ｓｈｏｗＦｉｌｅ；
ａ〔ｂ〕（ｃ,  ｄ,  ｅ）；
}
【００６２】
この場合には、以下のようにコードを変更してこのコードの参照先をゲートコンポーネントに変更する。
【００６３】
ｖａｒ  ａ  ＝  ｆａｋｅＲｅｑｕｉｒｅ（“ｆｓ”）；
ｖａｒ  ｂ  ＝  “ｒｅａｄＦｉｌｅ”；
ｖａｒ  ｃ  ＝  “ｔｅｓｔ.ｔｘｔ”；
ｖａｒ  ｄ  ＝  “ｕｔｆ−８”；
ｖａｒ  ｅ  ＝  ｓｈｏｗＦｉｌｅ；
ａ〔ｂ〕（ｃ,  ｄ,  ｅ）；
ここで、ｆａｋｅＲｅｑｕｉｒｅがゲートコンポーネントを示すので、このコードの参照先がゲートコンポーネントに変更される。
【００６４】
作成部６は書き換え部５を経たプログラムを定型プログラムに組み込む。ここで、本実施形態では複数の定型プログラムが予め入力されており、この定型プログラムのいずれかに書き換え部５を経たプログラムを組み込む。このとき、書き換え部５を経たプログラムを複数埋め込む構成であってもよい。
【００６５】
本実施形態では説明のため、検索画面を構成する第１定型プログラム、選択画面を構成する第２定型プログラム、予約画面を構成する第３定型プログラムに書き換え部５を経たプログラムがそれぞれ組み込まれて、第１プログラム、第２プログラム、第３プログラムが作成されたものとする。
【００６６】
これら第１プログラム、第２プログラム、第３プログラムはそれぞれ記録部７に記録される。
【００６７】
制御部９は、ユーザ端末３００からの要求を受け付けて、記録部７に記録された第１プログラム、第２プログラム、第３プログラムのうちの一つを抽出して実行し、その実行結果を示すデータを、送受信部１０を介してユーザ端末３００に表示する。
【００６８】
具体的に制御部９は、旅行サイトにアクセスしたユーザ端末３００からのアクセス要求を送受信部１０を介して受け付けて、記録部７に記録された複数のプログラムのうちの第１プログラムを選択して実行し、その実行結果を示すデータ（検索画面）を、送受信部１０を介してユーザ端末３００のディスプレイ等に表示する。
【００６９】
次に、ユーザが検索画面において、所望の日時や場所等を入力して検索ボタンを押すと、制御部９が送受信部１０を介してこの要求を受け付けて、記録部７から第２プログラムを抽出して実行し、実行結果を示すデータ（選択画面）を、送受信部１０を介してユーザ端末３００のディスプレイ等に表示する。
【００７０】
最後に、ユーザが選択画面から所望のプランを選択すると、制御部９が送受信部１０を介してこの要求を受け付けて、記録部７から第３プログラムを抽出して実行し、実行結果を示すデータ（予約画面）を、送受信部１０を介してユーザ端末３００のディスプレイ等に表示する。この予約画面にユーザが所定の情報を入力することにより旅行の予約が完了する。
【００７１】
第２実施形態の処理システムでは、ユーザ端末３００からの要求を受け付けてシステム側で複数のプログラムが実行されるが、このプログラムに開発者が開発した悪意あるコードが含まれていたとしても、このコードは書き換え部５において、そのコードの参照先を一律にゲートコンポーネントに変更されている。そのため、プログラム実行時に、ゲートコンポーネントがシステムに害を及ぼす処理を制限するので、システムを確実に保護することができる。
【００７２】
なお、ゲートコンポーネントが制限する処理については第１実施形態と同様であるため、ここでは説明を省略するが、具体的にゲートコンポーネントは、悪意ある開発者がシステムに保存された顧客情報等を取得するため、顧客情報が収容された読み込み処理をおこなった場合、この顧客情報が収容されたファイルを予め読み込みを禁止するファイルに定めておき、処理を実行する際のファイルの参照先が禁止ファイルであれば、処理を中断してシステムを保護する。また、悪意ある開発者がシステムに負荷をかけるためにループ処理を含んでいた場合、このループ処理のループ回数が予め定めた所定回数を超えていると、ループ処理を中断してシステムへの負荷を低減する等の処理を行う。
【００７３】
本発明の処理システムは上記実施形態に限られたものではない。
【００７４】
例えば、上記実施形態ではプログラムがＪａｖａＳｃｒｉｐｔ（登録商標）を用いて作成されたものであったが、ＲｕｂｙやＰＨＰ等のプログラム言語を用いて作成されたものであってもよい。
【００７５】
また、第２実施形態では全てのプログラムに開発者が開発したプログラムが組み込まれていたが、開発者のプログラムが含まれない定型プログラムがあってもよい。
【００７６】
本発明は、その趣旨に反しない範囲で様々な変形が可能である。
【符号の説明】
【００７７】
１・・・処理システム
２・・・受信部
３・・・解析部
４・・・作成部
５・・・書き換え部
【図１】
2017130583.tif 000003
【図２】
2017130583.tif 000004
【図３】
2017130583.tif 000005
【図４】
2017130583.tif 000006
【図５】
2017130583.tif 000007
【国際調査報告】
2017130583.tif 000008
2017130583.tif 000009