JP2010277494A - システムおよび端末装置 - Google Patents
システムおよび端末装置 Download PDFInfo
- Publication number
- JP2010277494A JP2010277494A JP2009131710A JP2009131710A JP2010277494A JP 2010277494 A JP2010277494 A JP 2010277494A JP 2009131710 A JP2009131710 A JP 2009131710A JP 2009131710 A JP2009131710 A JP 2009131710A JP 2010277494 A JP2010277494 A JP 2010277494A
- Authority
- JP
- Japan
- Prior art keywords
- data
- client
- application
- processing
- application program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
【課題】
データの外部漏洩の可能性をより低減することを課題とする。
【解決手段】
クライアントと、クライアントとネットワークを介して接続され、クライアントのデータを管理するデータサーバと、クライアントとネットワークを介して接続され、クライアントに対してアプリケーション機能を提供するアプリケーションサーバと、を備えるシステムにおいて、アプリケーションサーバは、クライアントへアプリケーション機能としてのアプリケーションプログラムを送信し、クライアントは、データサーバから秘匿化処理が施されたデータを受信し、アプリケーションプログラムに対して秘匿化処理が施されたデータを参照させる。
【選択図】図1
データの外部漏洩の可能性をより低減することを課題とする。
【解決手段】
クライアントと、クライアントとネットワークを介して接続され、クライアントのデータを管理するデータサーバと、クライアントとネットワークを介して接続され、クライアントに対してアプリケーション機能を提供するアプリケーションサーバと、を備えるシステムにおいて、アプリケーションサーバは、クライアントへアプリケーション機能としてのアプリケーションプログラムを送信し、クライアントは、データサーバから秘匿化処理が施されたデータを受信し、アプリケーションプログラムに対して秘匿化処理が施されたデータを参照させる。
【選択図】図1
Description
本発明は、システムおよび端末装置に関し、特に、端末装置のデータをWebアプリケーションに直接参照させない技術に関する。
これまでクライアント装置上で実行するデスクトップアプリケーションとして実装されてきた企業向け業務システムの多くがWeb上のサービスであるWebアプリケーションとして提供され始めている。
特許文献1は、個人情報や企業の機密情報を外部に出さずに内部で管理するために、Webアプリケーションの機能のうち、データを管理する機能を利用者組織内のネットワークに配備することで(データ分離モデル)、データを利用者組織内に置いたまま外部のWebアプリケーションを利用する技術を開示している。
しかしながら、特許文献1記載の技術では、悪意あるWebアプリケーションの場合、利用者組織内に配備したデータがWebアプリケーションの提供元やその他のサーバに送信される可能性を排除できない可能性があった。
上記課題を解決するため、本発明は、クライアントと、クライアントとネットワークを介して接続され、クライアントのデータを管理するデータサーバと、クライアントとネットワークを介して接続され、クライアントに対してアプリケーション機能を提供するアプリケーションサーバと、を備えるシステムにおいて、アプリケーションサーバは、クライアントへアプリケーション機能としてのアプリケーションプログラムを送信し、クライアントは、データサーバから秘匿化処理が施されたデータを受信し、または、データサーバから受信したデータに秘匿化処理を施し、アプリケーションプログラムに対して秘匿化処理が施されたデータを参照させる。
本発明によれば、セキュリティをより向上させることが可能になる。
まず、本発明の概要について説明する。
本発明の実施形態では、アプリケーションプロバイダから提供されたアプリスクリプトが、利用者組織内にあるデータプロバイダのデータを直接参照できないようにすることで、アプリスクリプトがWebアプリケーション提供者等にデータプロバイダが保持する保護すべきデータの送信を不可能にする。
ここで、アプリスクリプトとは、利用者組織外のWebアプリケーション提供サーバから提供され、利用者組織内に配備されたデータ提供サーバを介して利用者組織内のデータにアクセスしながらアプリケーション機能を提供するスクリプトプログラムを指し、一般的にはスクリプト言語JavaScript(登録商標)で記述される。また、データプロバイダとは、利用者組織内に配備したWebアプリケーションで利用するデータを管理するためのサーバ装置である。
アプリスクリプトがデータプロバイダのデータを直接参照できないようにするため、本発明の実施形態では、データプロバイダが保持するデータをアプリスクリプトが直接参照しないように暗号化処理や符番処理を施す。暗号化処理とは、対象となる値そのものから暗号鍵等を用いて何らかの演算処理を行い元の値を第3者に見られないようにすることを指す。また、符番処理とは、対象となる値そのものとは無関係の他と重複のない識別子を対象となる値に対し付与し、その値と付与した識別子の組をひとつのレコードとする符番表を用意しておくことで、識別子だけを見ても元の値は算出されず、後から識別子を指定することで元の値を取り出すことができるようにする処理を指す。暗号化処理の場合は暗号鍵が、符番処理の場合は符番表がアプリスクリプトに対して秘匿されていれば、元の値はアプリスクリプトからの参照が不可能となる。
しかしながら、アプリスクリプトがデータプロバイダのデータを参照できないままでは当該Webアプリケーション利用者にデータプロバイダのデータを表示することもできない。そこで、アプリスクリプトにはデータを参照させず、かつ、データプロバイダのデータを表示可能とする仕組みをWebブラウザ(のアプリスクリプトを実行する環境)に導入する。
秘匿すべきデータは暗号化処理もしくは符番処理によりアプリスクリプトに対して参照できなくし、表示時やデータプロバイダへのデータ保存時は元の値に戻して処理する。アプリスクリプトが表示したものを再取得する場合も暗号化処理もしくは符番処理を行いアプリスクリプトには参照できないようにする。
以下、暗号化処理や符番処理を秘匿化または秘匿化処理と呼び、秘匿化したデータを参照できる状態にすることをいずれも復号または復号処理と呼ぶこととする。
アプリスクリプトによる画面入出力処理はWebブラウザが表示対象のWebページ内に含まれるスクリプトに対して提供する、DOM APIと呼ばれるAPIを通して行われる。DOM APIはウェブページの見栄えを表現するHTMLをプログラム等からアクセスするための標準APIである。ツリー構造で表現され、HTML内の各要素を参照するだけでなく、追加、修正、削除操作を可能とする。多くのWebブラウザがHTML内に記述されたJavaScriptを実行するためのエンジンを有しており、JavaScriptに対しDOM APIを通して表示中のHTMLに対し参照、追加、修正、削除処理の実行を可能としている。
そこで、秘匿化した結果アプリスクリプトから直接参照できなくなったデータを表示処理可能とするため、DOM APIの処理を修正し、秘匿化データが設定される場合には復号処理を行ってから表示設定処理を行うことで利用者に対象データの値を見えるようにする。
ただし、リンク、画像、インラインフレーム、スクリプト要素を示すDOMノード(具体的にはAタグIMGタグ、IFRAMEタグ、SCRIPTタグ)の場合、そのデータ取得先(IMGタグでは画像の取得先、IFRAMEタグではHTMLの取得先、SCRIPTタグではJavaScriptの取得先)のURLのパラメタとして秘匿対象のデータが設定されてしまうと、指定されたURLが示すサーバに当該データが送信されることとなる(パラメタとしてURLで示す先のサーバにデータが送信されてしまうため)。そのため、そのようなDOMノード属性に対する設定処理の場合、上記のような復号処理は行わないようにし、データ漏洩を防ぐ。この点は本発明の実施形態におけるアプリケーションに対する制限事項である。つまり、本発明の実施形態では、Webアプリケーションでは秘匿対象のデータを使って画像、フレームページ、スクリプトのURLを構成し取得することがないように処理が行われる。
データプロバイダへデータを送信する場合には、秘匿化データが渡された場合には復号処理をしたのちに送信する。ただし、データプロバイダでの暗号化処理により秘匿化している場合は暗号化したままの形式でデータを送信し、復号はデータプロバイダで行っても良い。符番処理の場合も、符番対応表をデータプロバイダでも参照できる形式にしてあれば復号はデータプロバイダで行っても良い。
アプリプロバイダへデータを送信する場合には、送信対象として秘匿化データが渡された場合でも復号処理を行わず、そのまま文字列化処理を行ったものを送信すればよい。このような処理手順によりデータプロバイダ以外の送信先に対しては秘匿すべきデータを利用者外部に送信せずにすむ。
なお、Webアプリケーションにおいて、入力データをデータプロバイダのデータとして保存したい場合がある。そのため、入力データについても外部漏洩対策が必要となる。この場合には、データプロバイダのデータの場合と同様に、利用者からの入力データに対し、アプリスクリプトによる取得処理時には秘匿化処理を行うことで、アプリスクリプトに対して秘匿化する。
また、Webアプリケーションの機能として、データプロバイダからのデータやアプリケーション利用者からの入力データに対し合計計算や文字列連結等の演算処理が必要になる場合がある。このような演算処理結果を表示したり、データとして保存したりすることは、Webアプリケーションの基本機能となることが多く想定される。秘匿化されたままだとこれが不可能となり、アプリケーションとしては非常に制限されたものになってしまう。
通常は表示対象の文字列をDOMノードの属性として設定すれば表示されるが、秘匿化した上で表示処理を可能とするため、表示対象として表示に必要な演算処理を行うための処理オブジェクト(関数)を設定すれば、その結果を表示可能にする処理方式をとることで対処する。DOMノードに対する属性設定処理による表示処理時、表示対象として関数が渡された場合、秘匿データを参照可能にした状態で当該関数を実行し、その結果を秘匿データと同様に表示可能・参照不可能な状態(秘匿化した状態)で表示する。関数実行の直後に再び秘匿データを通常どおり参照不可能な状態にすることで、アプリケーションスクリプトに対し秘匿すべきデータを秘匿した状態を保つことができる。
また、その関数内では秘匿データが参照可能な状態になってしまうため、関数の処理内に秘匿データを画面表示する処理がある場合、そのまま表示処理させることが可能となってしまい、あとから表示済みデータをアプリスクリプトから取得処理した場合に参照可能となってしまう。そのため、表示処理のために秘匿データを参照可能としている処理中は、その他の表示処理を禁止する。
以上の処理により、安全に秘匿データに対して演算処理や変換処理を表示可能とし、かつ漏洩を防止することができる。
以下、添付の図面を参照しながら、本発明にかかる実施の形態について説明する。
まず、図1により、本実施の形態に係るネットワークシステムの全体構成について説明する。
本実施の形態に係るネットワークシステムには、ネットワークに接続された複数の情報処理装置10、20、30が含まれている。即ち、
(1)本システムで提供するWebアプリケーションの利用者が利用するWebブラウザがインストールされた1台以上の情報処理装置(以下、Webブラウザ)10、
(2)本システムで提供するWebアプリケーションの機能のうち、秘匿対象の情報を管理する機能を提供し、利用者組織にて管理される情報処理装置(以下データプロバイダ)20、
(3)本システムで提供するWebアプリケーションの機能のうち、(2)がもつ秘匿対象の情報の管理機能以外の機能(秘匿対象ではない情報の管理機能とページ生成処理機能)を提供し、利用者組織以外の第三者にて管理される。情報処理装置(以下、アプリケーションプロバイダ)30が含まれている。
(1)本システムで提供するWebアプリケーションの利用者が利用するWebブラウザがインストールされた1台以上の情報処理装置(以下、Webブラウザ)10、
(2)本システムで提供するWebアプリケーションの機能のうち、秘匿対象の情報を管理する機能を提供し、利用者組織にて管理される情報処理装置(以下データプロバイダ)20、
(3)本システムで提供するWebアプリケーションの機能のうち、(2)がもつ秘匿対象の情報の管理機能以外の機能(秘匿対象ではない情報の管理機能とページ生成処理機能)を提供し、利用者組織以外の第三者にて管理される。情報処理装置(以下、アプリケーションプロバイダ)30が含まれている。
これら情報処理装置10,20,30はそれぞれの機能を実現するためのプログラムの実行に必要な通常のハードウェア構成(CPU,一時記憶装置、プログラムがインストールされた二次記憶装置等)を有している(図2)。以下の各図面で説明するフローチャートは、特に言及しない限り、記憶装置に記憶されたプログラムがCPUで実行されるものとする。
図2は情報処理装置10,20,30のハードウェア構成を示したものである。情報処理装置2−1は二次記憶装置2−102に実行すべきプログラムや、そのプログラムの実行に用いるデータを記録しておき、プログラムの実行時にはプログラムやデータを二次記憶装置2−103から一時記憶装置2−102に読み込み、CPU2−101が一時記憶装置2−102にあるプログラムやデータを読み込みながらプログラムを実行する。プログラムの実行時には外部装置との入出力処理を入力インタフェース2−104、出力インタフェース2−105、通信インタフェース2−106を通じて、それぞれ入力装置2−2、出力装置2−3、通信装置2−4に対して行う。
なお、図1において、Webブラウザ10の構成要素のうち、符番表15、HTML18、アプリスクリプト32は上記プログラムの実行に用いるデータであり、それ以外の構成要素は上記プログラムに相当する。同様に、データプロバイダ20の構成要素のうち、秘匿対象データ205は上記プログラムの実行に用いるデータであり、それ以外の構成要素は上記プログラムに相当し、アプリケーションプロバイダ30の構成要素のアプリスクリプトは上記プログラムの実行に用いるデータであり、Webサーバ31は上記プログラムに相当する。それぞれ、各情報処理装置(10,20,30)の二次記憶装置2−103に保存され、CPU2−101が一時記憶装置2−102に読み込みながら実行する。
なお、図1ではWebブラウザ10はユーザの数だけ存在しうるが、ここでは説明のためひとつだけ示している。
以下、実施例1の構成要素の機能および処理手順について説明する。データプロバイダ20はネットワークを介してWebブラウザ10からの処理要求を受け付け、処理要求に応じたWebページを返信するWebサーバ201と、本システムによるWebアプリケーションを実行するための初期ページを生成する初期ページ生成機能202と、本システムによるWebアプリケーションで扱うデータを操作する処理を行うためのユーザインタフェース機能を提供するデータAPI(Application Programming Interface)機能204と、本システムによるWebアプリケーションで扱うコンテンツデータ205と、秘匿対象データ205とから構成される。秘匿対象データ205は一時記憶装置もしくは二次記憶装置に記憶されており、初期ページ生成機能202とデータAPI機能204はプログラムであり、通常、上述の二時記憶装置に記憶され一時記憶装置に読み込まれた後、CPUで実行される。
データプロバイダ20はWebブラウザ10からの処理要求に応じて、初期ページを生成する機能と、秘匿対象データのデータ操作機能をWebブラウザ10に提供する。
初期ページ生成機能は初期ページ生成機能202によって行う。初期ページはWebブラウザが読み込むものであり、本発明によるWebアプリケーションを実行する際に最初に読み込むべきページであり、アプリケーションプロバイダ30からアプリスクリプト32を読み込むことと、データプロバイダ20のデータ操作機能を利用するのに必要な設定が記述されたものである。
データ操作機能はデータAPI機能204により実行され、Webブラウザ10からのデータ操作要求をWebサーバ201により受信すると、データ操作要求に応じたデータ操作を、秘匿対象データ205に対して実行し、その結果を要求もとのWebブラウザ10に返信する処理を行うものである。 一方、アプリケーションプロバイダ30は、ネットワークを介してWebブラウザ10からの処理要求を受け付け、処理要求に応じたアプリスクリプトを返信するWebサーバ31と、本システムによるWebアプリケーションの機能のうちユーザインタフェースの機能を提供するプログラムであるアプリスクリプト32とから構成される。このアプリスクリプト32等のプログラムは、通常、プロバイダ30を構成する情報処理装置の二次記憶装置に記憶されている。
アプリケーションプロバイダはWebブラウザ10からの要求に応じてアプリスクリプトを提供する機能を提供する。Webブラウザ10からのアプリスクリプト取得要求をWebサーバ31が受信すると、アプリスクリプト取得要求に応じたアプリスクリプト32を要求元のWebブラウザ10に返送する処理を行うものである。
実施例1のシステムはWebブラウザ10とデータプロバイダ20およびアプリケーションプロバイダ30との間でネットワークを介して通信を行いながら、データの操作処理(データの作成、編集、参照、削除)に関してはデータプロバイダ20のデータAPI機能204を利用し、ユーザインタフェース機能についてはアプリケーションプロバイダ30の提供する機能を利用するアプリケーション実行環境をユーザに提供する。
Webブラウザ10はデータプロバイダ20やアプリケーションプロバイダ30との通信処理を行うための通信処理部17と、利用者により操作された入力装置による入力や、画面表示処理を行うための画面入出力部16と、アプリケーションプロバイダ30より提供されるアプリスクリプト32を実行処理するためのスクリプトエンジン11と、Webサーバ201により提供され、アプリスクリプト32により操作されるHTML18を処理するためのDOMハンドラ12と、データプロバイダ20のデータAPI機能を介して秘匿対象データ205にアクセスするためのデータアクセサ13と、データアクセサ13により取得したデータを管理するための秘匿データ管理部14と、秘匿データ管理部が管理する秘匿データ情報を記録する符番表15とから構成される。スクリプトエンジンはアプリケーションプロバイダ30から提供されるアプリスクリプト32の内容を読み取りながら動作し、DOMハンドラ12は画面表示対象のHTML18を読み取りながら動作する。スクリプトエンジン11等のWebブラウザ内の構成要素であるプログラムは通常、Webブラウザ10を構成する情報処理装置の二時記憶装置に記憶され一時記憶装置に読み込まれた後、CPUで実行される。
以下、実施例1のシステムの処理手順を具体的に説明する。
ここでは単純な顧客管理アプリケーションを例に説明する。例示する顧客管理アプリケーションはデータプロバイダ20の秘匿対象データ205として記録される顧客管理情報の一覧を表示する機能と、新規に顧客管理情報を作成し秘匿対象データ205内に保存する機能とを有するものとする。
図3に顧客管理アプリケーションを実行するための(データプロバイダ20の初期ページ生成機能202によって生成される)初期ページの一例を示す(ただし、説明のため左端に行番号を付与してある)。2行目から10行目までに、顧客管理情報の一覧を表示するためのtable要素が記述されており、11行目から19行目までに新規顧客管理情報を作成するための入力欄のためのform要素が記述されており、20行目にアプリスクリプトを読み込むためのscript要素が記述されている。
顧客管理情報の一覧を表示するためのtable要素は図3の状態では中身の情報がない状態であるが、アプリスクリプトの動作によりデータプロバイダ20から顧客情報の一覧が取得され、その内部に取得した顧客情報が挿入される。
例示する顧客管理アプリケーションを実現するアプリスクリプト32のうちデータプロバイダ20にアクセスして顧客情報を取得しその一覧を表示する処理のためのスクリプトの一例を図4に、利用者により入力された情報に基づき新規に顧客管理情報を作成し秘匿対象データ205内に保存する処理のためのスクリプトの一例を図5にそれぞれ示す(ただしそれぞれ説明のため左端に行番号を付与してある)。
例示する顧客管理アプリケーションを実現するアプリスクリプト32のうちデータプロバイダ20にアクセスして顧客情報を取得しその一覧を表示する処理のためのスクリプトの一例を図4に、利用者により入力された情報に基づき新規に顧客管理情報を作成し秘匿対象データ205内に保存する処理のためのスクリプトの一例を図5にそれぞれ示す(ただしそれぞれ説明のため左端に行番号を付与してある)。
以下、図4のスクリプトの処理手順にそって、データプロバイダからデータを受信する処理フローと、受信したデータを画面表示する処理フローを説明する。
まずデータプロバイダからデータを受信する処理を図6のフローに従って説明する。
まずデータプロバイダからデータを受信する処理を図6のフローに従って説明する。
図4のスクリプト例では4行目の「Customer.find_all();」の部分がデータアクセサにより顧客情報の一覧をデータプロバイダからデータを受信する処理の命令に相当し、図6のステップ6−101に相当する。
アプリスクリプトが4行目のような命令によりデータアクセサにデータ取得呼び出しを行うと、データアクセサはアプリスクリプトからの命令に応じてデータプロバイダ20に対しデータ取得要求を送信する(ステップ6−201)。4行目の例では、データ取得要求は顧客情報の一覧を取得することを表したものであり、例えばSQL文により「SELECT * FROM CUSTOMERS」のように表される(秘匿対象データ205が一般的なRDBにより構成され、顧客情報を表すテーブルの名前がCUSTOMERSの場合)。
アプリスクリプトが4行目のような命令によりデータアクセサにデータ取得呼び出しを行うと、データアクセサはアプリスクリプトからの命令に応じてデータプロバイダ20に対しデータ取得要求を送信する(ステップ6−201)。4行目の例では、データ取得要求は顧客情報の一覧を取得することを表したものであり、例えばSQL文により「SELECT * FROM CUSTOMERS」のように表される(秘匿対象データ205が一般的なRDBにより構成され、顧客情報を表すテーブルの名前がCUSTOMERSの場合)。
データプロバイダ20はデータ取得要求を受信すると(ステップ6−301)データAPI機能204によりこれを処理し、秘匿対象データ205より顧客情報一覧を取得し(ステップ6−302)、要求元のデータアクセサ13に返信する(ステップ6−303)。
データアクセサ13はデータプロバイダ20よりデータ取得要求の結果を受信すると(ステップ6−202)、結果の値すべてに対し符番処理を行う(ステップ6−203)。符番処理についてはこの後説明するが、アプリスクリプト32に対して得られた値を直接参照させないために値の代わりに対応する符番をアプリスクリプト32に取得結果として渡すために行う。
そして、符番処理によって得られた値を呼び出しもとのアプリスクリプト32に返す(ステップ6−204、6−102)。
ステップ6−203で行われる符番処理について、図10(a)に示す処理フローを用いて説明する。ただし、この後の本実施例の説明において、符番処理はステップ6−203以外の箇所でも利用する。
符番処理はWebブラウザ10の秘匿データ管理部14によって行われる。
秘匿データ管理部14は、データプロバイダ20が保持する秘匿対象データのように、アプリスクリプト32に対し直接参照させないデータを、符番処理対象として与えられると、はじめに新規に符番を生成する(ステップ10a−1)。符番は符番表15のどのレコードの符番情報とも重複しない値のものであればどのような値でもよく、例えば1ずつ増加する正数値でよい。
図11は符番表の一例を示しており、符番として1ずつ増加する正数値を用いている(11−c1)。
次に生成した符番と、与えられた符番対象データをもつレコードを作成し符番表15に記録する(ステップ10a−2)。そして、生成した符番を符番処理要求元に返す(ステップ10a−3)(ステップ6−203の例ではデータアクセサ13に返す)。
次に、符番処理したデータプロバイダからの受信データを画面表示する処理を図8のフローに従って説明する。
画面表示する処理はアプリスクリプト32からDOM APIを通じてDOMハンドラ12が処理する。
図4のスクリプト例の5〜14行目において、符番処理したデータプロバイダ20から受信した顧客情報一覧データを繰り返し一レコードずつ処理し、各々のレコードについてカラムの値を画面表示中のテーブルのレコードのカラムの値として表示する処理を行っている。10行目の「td.textContent = customer[CUSTOMER_ATTRS[j]];」の部分が画面表示のテーブルレコードのカラムの値として、受信したレコードのカラムの値を設定しようとしている部分となり、図8のフローの初期状態に相当する。
本実施例のDOMハンドラ12は一般的なWebブラウザが具備するDOMハンドラに修正を加えたものである。一般的なWebブラウザが具備するDOMハンドラの場合、ステップ8−1のような設定対象値の種類による処理判別をせず、即、設定対象値を指定属性の値として設定する(ステップ8−301の動作がこれにあたる)。本実施例のDOMハンドラ12は、設定対象値として符番や関数が与えられた場合、与えられた対象値に基づいて設定値を生成し、設定処理を行う。
設定対象値が関数の場合(ステップ8−201〜8−205)の処理説明は後で行う。
設定対象値が符番の場合、まず演算処理中フラグの値がONになっているか否かを調べる(ステップ8−101)。演算処理中フラグは設定対象値が関数の場合にその値がONに設定されるものであり、その意味については設定対象値が関数の場合の処理説明において行う。
演算処理中フラグがONの場合はそのまま処理を終了する。
演算処理中フラグがOFFの場合、設定対象値の符番に対し復号処理を行い、符番に対応する元の値(この例ではデータプロバイダの秘匿対象データから取得した顧客情報の値)を取り出す(ステップ8−102)。復号処理の詳細についてはこの後説明する。
次に復号処理の結果として得た値を指定された属性の値として設定する(ステップ8−103)。この処理は通常のDOMハンドラにおける属性設定処理(ステップ8−301に相当)と同じである。
ただし、設定対象のDOMノードがリンク、画像、インラインフレーム、スクリプト要素などを示すDOMノード(具体的にはAタグIMGタグ、IFRAMEタグ、SCRIPTタグ)の場合、そのデータ取得先(IMGタグでは画像の取得先、IFRAMEタグではHTMLの取得先、SCRIPTタグではスクリプトの取得先)のURLを示す属性が設定対象である場合は、設定処理は行わない。これらのDOMノード属性に値を設定すると、それに伴い通信処理が発生し、指定データが外部に送信されてしまうが、上記の設定処理の中止処理により、データ漏洩を防止する。
そして、対象DOMノードに対し、アプリスクリプト32に対し秘匿すべきデータが設定されたことを記録するため、秘匿値設定フラグを設定する(ステップ8−104)。このフラグは後にDOMノード属性値取得処理を行う際に利用される。
ステップ8−102に記載の、符番復号処理を図10(b)のフロー図を用いて説明する。
符番復号処理はWebブラウザ10の秘匿データ管理部が、符番表を参照しながら行う。秘匿データ管理部は符番復号処理において、符番を指定されると、符番表を参照し、指定された符番を持つレコードを検出し(ステップ10b−1)、検出したレコードの値を返す(ステップ10b−2)。例えば、符番表が図11の符番表例の状態であったとき、指定された符番が2である場合、レコード11−r2を検出し、その秘匿対象値カラムの値”京都府”を復号結果として返す。
以上の処理により、アプリスクリプト32はデータプロバイダ20が保持する秘匿対象データよりデータを取得し、画面表示処理を行うことができる。ただし、取得したデータは符番処理されており、直接値を参照することはできず、かつ、画面表示処理においては元の値を表示することが可能となっている。
以下、図5のスクリプトの処理手順にそって、利用者により入力された情報を取得する処理フローと、取得した入力情報をデータプロバイダに保存する処理フローを説明する。
まず利用者により入力された情報を取得する処理を図9のフローに従って説明する。
図5のスクリプトの3行目〜9行目で図3の初期ページの12行目から19行目に準備済みの入力用DOMノード(具体的にはINPUT要素)の値を取得し、保存対象の顧客情報としてまとめる処理が記載されており、7行目の「customer[element.name] = element.value;」の部分が入力用DOMノードから値取得処理を示しており、図9のフローの初期状態に相当する。
前記の通り、本実施例のDOMハンドラ12は一般的なWebブラウザが具備するDOMハンドラに修正を加えたものである。一般的なWebブラウザが具備するDOMハンドラの場合、ステップ9−1のような対象DOMノードに秘匿値が設定済みか否かを判定する処理をせず、即、対象DOMノードの指定属性の値を返す(ステップ9−201の動作がこれにあたる)。本実施例のDOMハンドラ12は、対象DOMノードに秘匿値が設定済みである場合、指定属性の値に対し符番処理を行い、対応する符番を返す。
DOMハンドラ12はDOMノード属性値取得処理において、はじめに対象DOMノードに秘匿値が設定されているか否かを示すフラグがONであるか否かを判定する(ステップ9−201)。フラグがOFFである場合、対象DOMノードの指定属性の値を返す(ステップ9−201)。フラグがONである場合、対象DOMノードの指定属性の値を取り出し、符番処理を行う(ステップ9−101)。符番処理は前述と同様、図10(a)のフローに従って行う。そして、符番処理の結果生成された符番をDOMノード属性取得処理の呼び出し元に返す(この例の場合、7行目のcustomer[element.name]の値として設定される)。
次に符番処理した利用者により入力された情報をデータプロバイダに保存する処理を図7のフローに従って説明する。
図5の10行目の「customer.save();」が、スクリプトの3行目〜9行目によって生成された保存対象情報をデータプロバイダ20の秘匿対象データに保存する処理を示しており、ステップ7−101に相当する。アプリスクリプト32が10行目のような命令によりデータアクセサ13にデータ保存呼び出しを行うと(ステップ7−101)、データアクセサ13はアプリスクリプト32から渡される保存対象の情報に対し、復号処理を行う(ステップ7−201)。復号処理は前述と同様、図10(b)のフローに従って処理する。ただし、保存対象の情報が符番でない場合は、符号処理をせずそのままの値を保存対象情報として処理する。
符番復号処理により秘匿対象の元の値と置き換えられた保存対象情報を得ると、次にデータプロバイダ20に対し保存対象情報を含むデータ保存要求を送信する(ステップ7−202)。
10行目の例では、データ保存要求は利用者による入力値に基づく新規顧客情報レコードを保存することを表したものであり、例えばSQL文により「INSERT INTO CUSTOMERS(name,order,address,contact,saleseperson) VALUES('company3',1000,'大阪府','01X−2YYY−3ZZZ','saleseperson3')」のように表現される(一般的なRDBにより構成され、顧客情報を表すテーブルの名前がCUSTOMERSの場合)。
データプロバイダ20はデータ保存要求を受信すると(ステップ7−301)データAPI機能204によりこれを処理し、秘匿対象データ205に受信した新規顧客情報を保存し(ステップ7−302)、要求元のデータアクセサに保存結果を返信する(ステップ7−303)。
データアクセサ13はデータプロバイダ20よりデータ保存要求の結果を受信すると(ステップ7−203)、受信した保存結果を呼び出しもとのアプリスクリプト32に返す(ステップ7−204、7−102)。
以上の処理手順により、利用者により入力された情報をデータプロバイダ20に保存することができる。ただし、アプリスクリプト32に対しては利用者により入力された情報は直接参照できず、データプロバイダ20以外のサーバ等に送信処理が試みられても元の値とは関係のない符番データが送信されることとなるため、データ漏洩を防止することができる。
以上の手順による実施例により、データプロバイダ20が保持するデータや、利用者により入力されたデータを符番処理によりアプリスクリプト32に対し秘匿化しながら、それらのデータを画面表示したり、データプロバイダ20に保存したりすることを可能な機能をもったデータ分離モデルアプリケーションを構成することができる。
実施例1では、秘匿すべきデータ(データプロバイダ20から取得したデータと、利用者からの入力データ)をアプリスクリプト32に直接参照させることなく、画面上に表示したり、データプロバイダ20に保存することができたが、通常のアプリケーション処理では取得したデータに演算処理を行い、その結果を画面表示したり、データ保存したりすることが必要となる。
しかしながら、上記の処理方式では、アプリスクリプト32は秘匿データに対しては直接値を参照することが不可能なため、演算処理を行うこともできない。
そこでDOMノード属性やデータアクセサ13に渡す保存対象データとして、演算処理を表す関数を渡すことにより、演算結果を表示したりデータ保存したりすることを可能とする。
DOMノード属性に対し関数が渡された場合、当該関数の実行中は符合値を参照する場合は符番に対応する値を参照することができるようにし、関数の実行結果を取得した直後に再び符合はそのまま符番とし、対応する値は取得できないものとする。そして関数の実行結果として取得した演算結果をDOMノード属性の値として設定し、画面に反映させる。
ただし、当該演算処理を表現する関数内でDOMノード属性に秘匿データを設定する処理があると符番に対応する値そのものとして設定されてしまうため、演算処理関数の実行中はDOMノード属性に対して値を設定されても無視して設定されないようにする。
上記の処理手順を、図8のフローにそって説明する。
上記の処理手順を、図8のフローにそって説明する。
DOMノード属性に対して関数が渡された場合、ステップ8−201に進み、現行の処理が始まる前にDOMノード属性に対して関数が渡されているか否かを判定するための演算処理実行中フラグがONであるか否かを判定する。演算処理実行中フラグがONの場合は、現行の処理が始まる前にDOMノード属性設定処理で関数が渡され、その関数が実行中であるため、設定処理を中断し終了する。演算処理実行中フラグがOFFの場合、まず、演算処理実行中フラグをONに設定する(ステップ8−202)。
次に関数実行中は符番が符番復号処理された値として評価されるよう、符番オブジェクトを変更する。この符番オブジェクトの変更は、例えば符番をJavaScriptのオブジェクトとして表現する場合、式の評価中の値を表現する関数valueOfの処理を変更し、復号処理した値を返すようにすることで実現できる。
そして、指定された関数を実行して結果を取得し(ステップ8−204)、演算処理実行中フラグをOFFに戻す(ステップ8−205)。後は、ノード属性設定処理の値として符番値が設定された場合と同様に、結果として得た値を指定された属性値として設定し(ステップ8−103)、対象ノードに秘匿値設定フラグを付与して(ステップ8−104)処理を終了する。
データプロバイダ20へのデータ保存処理において関数が渡された場合も、上記と同様に、当該関数の実行中は符合値を参照する場合は符番に対応する値を参照することができるようにし、関数の実行結果を取得した直後に再び符合はそのまま符番とし、対応する値は取得できないものとする。そして関数の実行結果として取得した演算結果を保存対象データとして他のカラムの値とともに設定し、送信する。送信後の保存処理は前述のデータ保存処理と同様である。
上記の処理手順により、秘匿データを対象にした場合でも演算処理を行った結果を画面表示したりデータ保存したりすることが可能となり、アプリケーションに対する制限を抑えることが可能となる。
実施例1において、DOMノード属性設定処理で秘匿対象データ(符番や関数)が対象値として設定された場合(図8のフローのステップ8−103)に、設定処理により通信を伴うようなDOMノード属性が設定対象である場合は設定処理をスキップすることによってデータ漏洩を防止していたが、一般的に普及しているWebブラウザではこれらのDOMノード属性以外にも、window.open関数や、document.location属性など、呼び出し処理や設定処理に伴って通信処理が発生する要素がJavaScriptエンジンの機能に与えられている。そのため、これらの機能に対しても秘匿対象データが渡された場合は処理をスキップするように機能変更することで、さらに本発明の実施形態によるアプリケーションにおける、データ漏洩を防止することができる。
実施例1〜3において、データプロバイダ20から取得したデータや利用者から入力された値をアプリスクリプトに対して直接参照できなくするために符番処理を用いていたが、代わりに暗号処理を利用することもできる。符番処理では符番から秘匿対象の値を復元するために符番表が必要であったが、暗号処理を用いることで符番表が不要となり、Webブラウザ10が動作するコンピュータ装置における一時記憶装置の記憶領域の使用量を低減することができる。ただし、一般に暗号処理のほうが符番処理よりも計算量がかかるため、記憶領域とCPU性能を鑑みて、処理方法を選定するべきである。
また、暗号・復号処理はWebブラウザではなく、データプロバイダ20内で行ってもよく、データプロバイダ20内の秘匿対象データとしてはじめから暗号化した値を記録してもよい。後者の場合、表示処理や演算処理など、元の値が必要なときに復号処理を行う。
実施例1〜4において、DOMハンドラ、データアクセサ、秘匿データ管理部、符番表の機能はWebブラウザに組み込まれた機能として説明したが、これらの機能をスクリプトにより実装し、初期ページにおいてそのスクリプトをアプリスクリプトよりも前に読み込まれるように設定することで、アプリスクリプトが実行されるときに実施例1〜4の処理手順を実現する方法をとることもできる。
DOMハンドラについては既存のDOM APIを実施例1に記載の処理手順が動作するよう上書き定義することで対処する。データアクセサは一般的に普及しているWebブラウザでJavaScriptエンジンに対して提供される画面遷移なしにサーバとの通信処理を可能とするXMLHttpRequestとよばれるオブジェクトを利用することでデータプロバイダとの通信処理を記述することができ、実施例1に記載の処理手順が動作するよう定義することで対処する。秘匿データ管理部、符番表については一般的にWebブラウザからその実現を支援する機能はないので、実施例1に記載の処理手順をJavaScriptのプログラムとして実装することで対処する。
以上の処理方式をとることにより、実施例1〜4に記載の機能を具備するWebブラウザ10の代わりに、一般的に普及しているWebブラウザを本発明の実施形態のWebアプリケーションを利用するクライアント装置として利用することができる。
ただし、JavaScriptとしてこれらの機能を実現した場合、悪意あるアプリスクリプトにより再度DOMハンドラ12やデータアクセサ13の処理が上書き定義されてしまい、秘匿データが漏洩されてしまう可能性がある。
そのため、本実施例では、図12のようにWebブラウザ10が読み込むアプリスクリプトに対しフィルタ処理を行うフィルタプロキシ40を配置する構成とし、そのフィルタ処理により上記のような再上書き定義を防止する。
フィルタ処理では、アプリスクリプト32内の変数や関数など全識別子に対し一定の文字列を付与する処理を行う。こうすることで、たとえDOMノードを表すオブジェクトを変更するようなプログラムが記述されていても識別子が一致しなくなるため、それが機能させないことができる。
フィルタ処理では、アプリスクリプト32内の変数や関数など全識別子に対し一定の文字列を付与する処理を行う。こうすることで、たとえDOMノードを表すオブジェクトを変更するようなプログラムが記述されていても識別子が一致しなくなるため、それが機能させないことができる。
以上のように本発明の実施形態によれば、データ分離モデルによるアプリケーションにおいて、悪意あるアプリスクリプトによるデータプロバイダ上データの外部漏洩を防止することができ、利用者はWebアプリケーションを安心して利用することができるようになる。
また、Webアプリケーション提供者側にデータを置く場合であっても、データプロバイダのデータはアプリケーション提供者側やその他組織に漏洩しない。
10:Webブラウザ、20:データプロバイダ、30:アプリケーションプロバイダ、40:フィルタプロキシ。
Claims (22)
- クライアントと、前記クライアントとネットワークを介して接続され、前記クライアントのデータを管理するデータサーバと、前記クライアントとネットワークを介して接続され、前記クライアントに対してアプリケーション機能を提供するアプリケーションサーバと、を備えるシステムにおいて、
前記アプリケーションサーバは、
前記クライアントへアプリケーション機能としてのアプリケーションプログラムを送信し、
前記クライアントは、
前記データサーバから秘匿化処理が施されたデータを受信し、または、前記データサーバから受信したデータに秘匿化処理を施し、
前記アプリケーションプログラムに対して秘匿化処理が施されたデータを参照させることを特徴とするシステム。 - 請求項1記載のシステムにおいて、
前記クライアントは、前記アプリケーションプログラムに対して秘匿化処理が施されていないデータを参照させないことを特徴とするシステム。 - 請求項1または2記載のシステムにおいて、
前記クライアントは、前記秘匿化処理が施されたデータの秘匿化を解除してデータを表示することを特徴とするシステム。 - 請求項1から3の何れか記載のシステムにおいて、
前記クライアントは、前記アプリケーションプログラムが前記秘匿化処理が施されたデータを参照して処理を実行した後、前記秘匿化処理を解除して前記アプリケーションプログラムにより処理されたデータを表示することを特徴とするシステム。 - 請求項1から4の何れか記載のシステムにおいて、
前記クライアントは、利用者からの情報の入力を受け付ける入力部から情報が入力された場合には、前記入力された情報を前記アプリケーションプログラムに参照させないことを特徴とするシステム。 - 請求項1から5の何れか記載のシステムにおいて、
前記クライアントは、前記アプリケーションプログラムが前記データサーバから送信されたデータを外部へ送信する送信処理を含む場合には、前記送信処理を中止することを特徴とするシステム。 - 請求項1から6の何れか記載のシステムにおいて、
前記クライアントは、利用者からの情報の入力を受け付ける入力部から情報が入力された場合には、前記入力された情報を前記アプリケーションプログラムに参照させないことを特徴とするシステム。 - 請求項7記載のシステムにおいて、
前記クライアントは、前記アプリケーションプログラムが前記入力された情報を外部へ送信する送信処理を含む場合には、前記送信処理を中止することを特徴とするシステム。 - 請求項3記載のシステムにおいて、
前記クライアントは、前記秘匿化処理を解除するための符番表を備えることを特徴とするシステム。 - 請求項1から9の何れか記載のシステムにおいて、
前記秘匿化処理は、暗号化処理または符号処理であることを特徴とするシステム。 - データを管理するデータサーバおよびアプリケーション機能を提供するアプリケーションサーバとネットワークを介して接続されたクライアントにおいて、
前記クライアントは、
前記アプリケーションサーバからアプリケーション機能としてのアプリケーションプログラムを受信し、
前記データサーバから秘匿化処理が施されたデータを受信し、または、前記データサーバから受信したデータに秘匿化処理を施し、
前記アプリケーションプログラムに対して秘匿化処理が施されたデータを参照させることを特徴とするクライアント。 - 請求項11記載のクライアントにおいて、
前記アプリケーションプログラムに対して秘匿化処理が施されていないデータを参照させないことを特徴とするクライアント。 - 請求項11または12記載のクライアントにおいて、
前記秘匿化処理が施されたデータの秘匿化を解除してデータを表示することを特徴とするクライアント。 - 請求項11から13の何れか記載のクライアントにおいて、
前記アプリケーションプログラムが前記秘匿化処理が施されたデータを参照して処理を実行した後、前記秘匿化処理を解除して前記アプリケーションプログラムにより処理されたデータを表示することを特徴とするクライアント。 - 請求項11から14の何れか記載のクライアントにおいて、
利用者からの情報の入力を受け付ける入力部から情報が入力された場合には、前記入力された情報を前記アプリケーションプログラムに参照させないことを特徴とするクライアント。 - 請求項11から15の何れか記載のクライアントにおいて、
前記アプリケーションプログラムが前記データサーバから送信されたデータを外部へ送信する送信処理を含む場合には、前記送信処理を中止することを特徴とするクライアント。 - 請求項11から16の何れか記載のクライアントにおいて、
利用者からの情報の入力を受け付ける入力部から情報が入力された場合には、前記入力された情報を前記アプリケーションプログラムに参照させないことを特徴とするクライアント。 - 請求項17記載のクライアントにおいて、
前記アプリケーションプログラムが前記入力された情報を外部へ送信する送信処理を含む場合には、前記送信処理を中止することを特徴とするクライアント。 - 請求項13記載のクライアントにおいて、
前記秘匿化処理を解除するための符番表を備えることを特徴とするクライアント。 - 請求項11から19の何れか記載のクライアントにおいて、
前記秘匿化処理は、暗号化処理または符号処理であることを特徴とするクライアント。 - 請求項1から10の何れか記載のシステムにおいて、
前記クライアントはWebブラウザであり、前記アプリケーションプログラムはアプリスクリプトであることを特徴とするシステム。 - 請求項11から20の何れか記載のクライアントはWebブラウザであり、前記アプリケーションプログラムはアプリスクリプトであることを特徴とするクライアント。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009131710A JP2010277494A (ja) | 2009-06-01 | 2009-06-01 | システムおよび端末装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009131710A JP2010277494A (ja) | 2009-06-01 | 2009-06-01 | システムおよび端末装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010277494A true JP2010277494A (ja) | 2010-12-09 |
Family
ID=43424369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009131710A Pending JP2010277494A (ja) | 2009-06-01 | 2009-06-01 | システムおよび端末装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010277494A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012168703A (ja) * | 2011-02-14 | 2012-09-06 | Hitachi Ltd | Webシステム、Webサーバ装置、Webクライアント装置およびWeb情報秘匿制御方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004295247A (ja) * | 2003-03-25 | 2004-10-21 | Ntt Docomo Inc | 通信方法、通信システム、通信端末、サーバ、プログラムおよび記録媒体 |
JP2007272539A (ja) * | 2006-03-31 | 2007-10-18 | Ns Solutions Corp | セキュリティ装置およびアプリケーションサーバシステム |
JP2009015816A (ja) * | 2007-06-05 | 2009-01-22 | Hitachi Ltd | Webアプリケーションの構成方法とそのシステム |
JP2009075666A (ja) * | 2007-09-18 | 2009-04-09 | Toshiba Corp | サービス連携装置及びサービス連携システム |
JP2010128593A (ja) * | 2008-11-25 | 2010-06-10 | Fujitsu Ltd | 通信システム、情報記録装置、提供装置及び通信方法 |
JP2010157062A (ja) * | 2008-12-26 | 2010-07-15 | Nippon Telegr & Teleph Corp <Ntt> | データ処理システムと、それらの各装置と、そのプログラム |
-
2009
- 2009-06-01 JP JP2009131710A patent/JP2010277494A/ja active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004295247A (ja) * | 2003-03-25 | 2004-10-21 | Ntt Docomo Inc | 通信方法、通信システム、通信端末、サーバ、プログラムおよび記録媒体 |
JP2007272539A (ja) * | 2006-03-31 | 2007-10-18 | Ns Solutions Corp | セキュリティ装置およびアプリケーションサーバシステム |
JP2009015816A (ja) * | 2007-06-05 | 2009-01-22 | Hitachi Ltd | Webアプリケーションの構成方法とそのシステム |
JP2009075666A (ja) * | 2007-09-18 | 2009-04-09 | Toshiba Corp | サービス連携装置及びサービス連携システム |
JP2010128593A (ja) * | 2008-11-25 | 2010-06-10 | Fujitsu Ltd | 通信システム、情報記録装置、提供装置及び通信方法 |
JP2010157062A (ja) * | 2008-12-26 | 2010-07-15 | Nippon Telegr & Teleph Corp <Ntt> | データ処理システムと、それらの各装置と、そのプログラム |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012168703A (ja) * | 2011-02-14 | 2012-09-06 | Hitachi Ltd | Webシステム、Webサーバ装置、Webクライアント装置およびWeb情報秘匿制御方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8214367B2 (en) | Systems, methods, means, and media for recording, searching, and outputting display information | |
US9317681B2 (en) | Information processing apparatus, information processing method, and computer program product | |
US10015226B2 (en) | Methods for making AJAX web applications bookmarkable and crawlable and devices thereof | |
US9948676B2 (en) | System and method for securing documents prior to transmission | |
EP2847686A1 (en) | Enhanced document and event mirroring for accessing content | |
US8255921B2 (en) | Method and apparatus that enables a web-based client-server application to be used offline | |
US20130262696A1 (en) | Proxy server apparatus, client terminal apparatus, remote access system, transfer control method, access method, and recording medium | |
CN106663083B (zh) | 用于基于http的应用的网络浏览器策略 | |
JP6557184B2 (ja) | 機能拡張システム、機能拡張方法および機能拡張プログラム | |
US8290152B2 (en) | Management system for web service developer keys | |
US20090132538A1 (en) | Information processing apparatus, information processing system, and information processing method | |
CN107315972A (zh) | 一种大数据非结构化文件动态脱敏方法及系统 | |
JP2007181031A (ja) | 情報処理装置、その制御方法、プログラム、及び記憶媒体 | |
CN112069468B (zh) | 一种页面动态水印的方法及设备 | |
JP2007184920A (ja) | 携帯端末機の画像管理装置及び方法 | |
JP4660483B2 (ja) | コンピューティング環境において使用するためのアイデンティティシステム | |
US20110295924A1 (en) | Methods, systems, and computer program products for preventing processing of an http response | |
JP2014525638A (ja) | アプリケーションのためのコンテンツの管理 | |
JP2011044062A (ja) | 宛先チェック機能追加プログラム、電文送信システム | |
JP5685804B2 (ja) | Webアプリケーションの連携方法、連携装置、および連携プログラム | |
JP2010277494A (ja) | システムおよび端末装置 | |
CN113591000A (zh) | 一种浏览器引擎的切换方法和装置及设备 | |
KR20160132854A (ko) | 콘텐츠의 캡처를 통한 자산 수집 서비스 제공 기법 | |
JP2001154984A (ja) | ネットワークを介して伝送されるディジタル画像の著作権保護のための方法及びシステム | |
CN111656349B (zh) | 通过虚拟桌面管理机密信息和数据的访问和显示服务的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110715 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20121226 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130528 |