(57)【要約】【課題】簡易な構成で、Javascriptにバインディングしたネイティブ機能をアプリケーションの状態によって制御し、セキュリティを担保する。【解決手段】Javascriptにバインディングしたネイティブ機能をAPI情報303に登録しておき、WebView302を利用するアプリケーションの表示状態に応じて、ネイティブ機能を利用可能とし、あるいは利用不可とするよう制御することで、より簡易にアプリケーション毎のセキュリティを担保することが可能となる。【選択図】図３
2017097662.tif 000002
【特許請求の範囲】
【請求項１】
実行中のアプリケーションにおいて取得したスクリプトに対してネイティブ機能を提供できる情報処理装置であって、
アプリケーションの識別情報と、ネイティブ機能と、前記アプリケーションにおいて取得したスクリプトにより前記ネイティブ機能が利用可能であるか否かを示すバインディング状態とを関連付けたテーブルを記憶する記憶手段と、
実行中の複数のアプリケーションの表示の状態が切り替えられた際に、前記テーブルを参照して表示状態から非表示状態に移行したアプリケーションに関連づけられた前記バインディング状態を、前記ネイティブ機能が利用可能でないことを示す値に変更するとともに、前記ネイティブ機能を前記スクリプトにより利用可能でない状態に変更する変更手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記変更手段は更に、実行中の複数のアプリケーションの表示の状態が切り替えられた際に、前記非表示状態から前記表示状態に移行したアプリケーションが前記テーブルに登録されている場合には、前記アプリケーションに関連づけられた前記バインディング状態を、前記ネイティブ機能が利用可能であることを示す値に変更するとともに、前記ネイティブ機能を前記スクリプトにより利用可能である状態に変更することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記テーブルはさらに、前記アプリケーションによりスクリプトを取得する取得先と、前記テーブルに登録された前記取得先と同一オリジンの第二の取得先から取得した前記スクリプトに対して前記ネイティブ機能を利用可能であることを示す利用許可情報とを含み、
前記変更手段は、前記取得先が前記第二の取得先に変更された際に、前記取得先に関連付けられた前記利用許可情報が利用可能であれば、前記テーブルに、前記アプリケーションの識別情報と、前記ネイティブ機能と、前記アプリケーションにおいて取得したスクリプトにより前記ネイティブ機能が利用可能であるか否かを示すバインディング状態と、前記第二の取得先とを関連付けて登録することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記変更手段は、前記取得先が前記第二の取得先に変更された際に、前記取得先に関連付けられたバインディング状態が利用可能であれば、前記ネイティブ機能を前記スクリプトにより利用可能である状態に変更することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記アプリケーションの表示状態を監視し、前記アプリケーションの表示状態の変更を前記変更手段に通知する手段を更に有することを特徴とする請求項1乃至４のいずれか一項に記載の情報処理装置。
【請求項６】
前記スクリプトを含むWebコンテンツを指定された取得先から取得するとともに、前記取得先の変更を監視し、前記取得先の変更を前記変更手段に通知する手段を更に有することを特徴とする請求項1乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記変更手段は、webViewのメソッドとして実装されることを特徴とする請求項１乃至６のいずれか一項に記載の情報処理装置。
【請求項８】
前記スクリプトはJavascript で記述され、前記ネイティブ機能はJavaで定義されるクラスであることを特徴とする請求項７に記載の情報処理装置。
【請求項９】
実行中のアプリケーションにおいて取得したスクリプトに対してネイティブ機能を提供できる情報処理装置を、
アプリケーションの識別情報と、ネイティブ機能と、前記アプリケーションにおいて取得したスクリプトにより前記ネイティブ機能が利用可能であるか否かを示すバインディング状態とを関連付けたテーブルを記憶する記憶手段と、
実行中の複数のアプリケーションの表示の状態が切り替えられた際に、前記テーブルを参照して表示状態から非表示状態に移行したアプリケーションに関連づけられた前記バインディング状態を、前記ネイティブ機能が利用可能でないことを示す値に変更するとともに、前記ネイティブ機能を前記スクリプトにより利用可能でない状態に変更する変更手段と
して機能させるためのプログラム。
【請求項１０】
実行中のアプリケーションにおいて取得したスクリプトに対してネイティブ機能を提供できる情報処理装置において、
アプリケーションの識別情報と、ネイティブ機能と、前記アプリケーションにおいて取得したスクリプトにより前記ネイティブ機能が利用可能であるか否かを示すバインディング状態とを関連付けたテーブルを記憶する記憶工程と、
実行中の複数のアプリケーションの表示の状態が切り替えられた際に、前記テーブルを参照して表示状態から非表示状態に移行したアプリケーションに関連づけられた前記バインディング状態を、前記ネイティブ機能が利用可能でないことを示す値に変更するとともに、前記ネイティブ機能を前記スクリプトにより利用可能でない状態に変更する変更工程と
を有することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Webサーバーに接続され当該Webサーバーにより提供される操作画面を表示するWebブラウザーを備えた情報処理装置の制御方法、プログラムに関する。
【背景技術】
【０００２】
PCや携帯電話などの情報処理装置がネットワーク上のWebサーバーに接続し、Webサーバー上のWebアプリケーションにより提供される操作画面を情報処理装置が備えるWebブラウザー上に表示することが知られている。この場合、まず情報処理装置のWebブラウザーがWebサーバー上のWebアプリケーションに対して操作画面を要求（リクエスト）する。そしてWebアプリケーションが情報処理装置からの要求に応えて、Webブラウザーに操作画面を表示させるためのHTMLデータを情報処理装置に応答（レスポンス）する。情報処理装置のWebブラウザーは受信したHTMLデータを解析し、HTMLデータの記述に基づいた操作画面を表示する。Webブラウザーに表示された操作画面を介してユーザーが指示を入力すると、入力された指示をWebブラウザーがWebサーバーに対して通知する。そして、この通知を受けたWebサーバー上のWebアプリケーションは入力された指示に従って処理を実行する。また上述したWebプラウザー機能と同等の機能を持ち、情報処理装置上のアプリケーションを構成するGUI要素として利用できるWebViewと呼ばれるコンポーネントがある。情報処理装置上のアプリケーションはWebViewを利用することでWebブラウザーと同等の表現や機能を実現できる。近年、スキャナやプリンタを備えた多機能周辺装置（Multi Function Peripheral：MFP）にも上述したようなWebブラウザーやWebViewが搭載されつつある。
【０００３】
ところで、WebViewには、Webアプリケーションにて実行するJavaScript（登録商標）から直接情報処理装置のネイティブ機能を呼び出すためのバインディング（bind/unbind）機構を備えているものがある。アプリケーションはこのバインディング機構を利用してその実装をより簡易化する一方、アプリケーションを実行するシステム側ではバインディング機構を悪用するアプリケーションに対する安全策を考慮する必要がでてきた。なおネイティブ機能とは、情報処理装置のオペレーティングシステムや言語処理系などが提供している機能を指す。
【０００４】
システム側の安全策としては、アプリケーションを逆コンパイルしてそのアプリケーションで実行するJavaScript（登録商標）にバインディングされているネイティブ機能を特定し、脅威を推定するものがある（特許文献1）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2012-234401号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、従来の方法では、脅威となり得る悪性のAPIを記憶するためのAPI記憶機構や逆コンパイル機構を持つ必要がある。このことは、システムをより複雑にする。それと共に、従来の方法では個々のアプリケーションに対する対応が必要となる。
【０００７】
本発明は上記従来例に鑑みて成されたもので、より簡易な方法で、WebViewを利用しJavaScript（登録商標）とネイティブ機能とのバインディングを、アプリケーションの状態によって制御することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明は以下の構成を有する。すなわち、
実行中のアプリケーションにおいて取得したスクリプトに対してネイティブ機能を提供できる情報処理装置であって、
アプリケーションの識別情報と、ネイティブ機能と、前記アプリケーションにおいて取得したスクリプトにより前記ネイティブ機能が利用可能であるか否かを示すバインディング状態とを関連付けたテーブルを記憶する記憶手段と、
実行中の複数のアプリケーションの表示の状態が切り替えられた際に、表示状態から非表示状態に移行したアプリケーションに関連づけられた前記バインディング状態を、前記ネイティブ機能が利用可能でないことを示す値に変更するとともに、前記ネイティブ機能を前記スクリプトにより利用可能でない状態に変更する変更手段とを有する。
【発明の効果】
【０００９】
本発明によれば、WebViewを利用するアプリケーションの状態に応じて、JavaScript（登録商標）とネイティブ機能とのバインディング状態を制御することで、より簡易にアプリケーション毎のセキュリティを担保することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態における画像処理装置を用いたシステムの全体図である
【図２】本発明の実施形態における画像処理装置のハード構成図である
【図３】本発明の実施形態におけるシステムソフトの構成図である
【図４】本発明の実施形態におけるJavaコード例を示す図である
【図５】本発明の実施形態におけるJavascriptコード例を示す図である
【図６】本発明の実施形態におけるAPI情報例を示す図である
【図７】本発明の実施形態におけるアプリケーション非表示に伴うアンバインドの流れを示すフローチャートである
【図８】本発明の実施形態におけるアプリケーション再表示に伴う再バインドの流れを示すフローチャートである
【図９】本発明の実施形態におけるAPI情報の拡張例を示す図である
【図１０】本発明の実施形態における図９で示したAPI情報の拡張例を利用し自動バインドの流れを示すフローチャートである
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を用いて説明する。
［第一実施形態］
＜システム構成例＞
図1は本発明の画像処理装置を用いたシステムの構成例である。本システムはネットワーク100を介してインターネット103に接続される多機能周辺機器(MFP)101と、インターネット103に接続されたサーバーA102、サーバーB104とから構成される。ネットワーク100は各装置間で通信を行うための基盤であって、インターネット103に接続されている。MFP101はWebブラウザーやWebview機能を有すれば、MFPに限定されるものではない。さらに、MFP101はローカルなＩＰアドレスで管理されていても良い。その場合ネットワーク100とMFP101の間にゲートウェイ（不図示）が存在し、ゲートウェイはアドレス変換を行う。例えばゲートウェイにはルーターが含まれる。また前記ゲートウェイや、MFP101がファイアウォール機能を備えていても良い。サーバーA102やサーバーB104は、Webコンテンツをネットワーク経由で配信する機能を持っており、MFP101からのリクエストに応じてWebコンテンツを返す。Webコンテンツにはクライアントで実行されるスクリプトが含まれている。各装置及びネットワーク101はインターネット103に必ずしも接続されている必要はなく、ローカルネットワーク上に存在してもよい。
【００１２】
＜情報処理装置の構成例＞
図2は本実施形態のＭＦＰ101および、サーバーA102、サーバーB104などの情報処理装置の機器構成図の一例である。なおMFP101に関しては、図2に示す構成のほか、画像の読み取りやプリントなどのための構成要素を更に含んでいるが、図では省略した、MFPおよび情報処理装置は、本実施形態に係るプログラムのほか、オペレーティングシステムやアプリケーション、スクリプト等を含むプログラムを実行するＣＰＵ201を含む。またＣＰＵ201へ、実行されるプログラムやデータ等を記憶するためのワークエリアを提供するＲＡＭ202、本実施形態に係るプログラムや様々な設定を記憶する記憶部203（HDD、SSD、NVRAM等でもよい）が含まれる。さらに、ユーザーがコマンドの入力を行うユーザー入力部204、ユーザーインターフェイス画面などの画面表示を行うUI表示部205、他機器とネットワークによる通信を行うネットワーク部206、各構成要素を接続するメインバス200がMFPおよび情報処理装置には含まれる。尚、特に断らない限り、ＭＦＰ101、サーバーA102、サーバーB104では、ＣＰＵ201がメインバス200を介してＲＡＭ202、記憶部203、ユーザー入力部204、ＵＩ表示部205、ネットワーク部206を制御する。また、タッチパネルディスプレイのようにＵＩ表示部205がユーザー入力部204を兼ねても良い。ただし、サーバーA102やサーバーB104は、ユーザー入力部204とＵＩ表示部205を有していなくても良い。また、ＭＦＰ101はその他に画像読取部や画像印刷部がメインバス200に接続されていても良い。なお上述のようにMFPは情報処理装置と共通する構成を有しており、そのためMFPを情報処理装置と称する場合もある。
【００１３】
＜ソフトウェア構成例＞
図3は本実施形態におけるMFP101に搭載されるソフトウェア構成を説明した図である。図3に示す各機能部は、MFP101内のCPU201がプログラムを実行することで実現する。アプリケーションA300やアプリケーションB309はHTTPプロトコルにより通信を行うモジュールであるネットワーク部206を介してサーバーA102やサーバーB104からWebコンテンツA301やWebコンテンツB310を取得する。取得したWebコンテンツA301やWebコンテンツB310は、アプリケーションA300やアプリケーションB309が共有するWebView302で表示することができる。WebView302は、いわば各アプリケーションから使用できるWebブラウザーということもできる。
【００１４】
WebコンテンツA301やWebコンテンツB310は、例えばMFP101の画面で表示する操作画面などである。また、例えば操作画面を介して入力されたユーザーからの入力情報を基にMFP101のデバイス機能（不図示）を実行することができる。これは、この後で説明するバインディング機能によりスクリプトからデバイス機能のライブラリを利用可能としていることで実現されている。WebView302は、Webエンジン305を利用してWebコンテンツA301やWebコンテンツB310をレンダリングし、その結果を表示することができる。Webエンジン305はWebコンテンツA301やWebコンテンツB310に含まれるHTMLをレンダリングするWebコア307と、Javascript（登録商標。以下、登録商標であることの表示は省略する。）を解釈し実行するJavascriptコア306とを構成要素として持つ。Javascriptコア306はJavascriptを解釈し、ネイティブ機能としてネイティブライブラリ308を実行する機能を持つ。また、アプリケーションA300やアプリケーションB309からの命令に応じてJavascriptとネイティブのライブラリ（例えばJavaのクラスやCの関数など）をバインディングするバインディング機能も有している。各アプリケーションがバインディング機能を利用する際、WebView302はバインディングしたJavascriptの情報とネイティブAPIの情報とをAPI情報303として管理する。WebView302は、API情報303にてバインディング状態を含めて管理することで、Javascriptコア306に対して無駄のない命令を実行できる。すなわち、WebView302は、Javascriptコア306に対して適時に適切な命令を実行できる。また、WebView302は、各アプリケーションのアプリケーション表示状態を管理するウィンドウ制御モジュール304と連携しアプリケーションそれぞれの表示状態を知ることができる。
【００１５】
MFP101は、Java（登録商標）で記述されているアプリケーションを実行するための不図示のエンジンを含むプラットフォームを有している。さらに図3に示した構成要素のうち、webView302、API情報303、Webエンジン305、ネイティブライブラリ308はそのプラットフォームに含まれる。さらにそのプラットフォームにはウィンドウ制御モジュール304が含まれてもよい。アプリケーションA301やアプリケーションB310がJava（登録商標）で記述されていれば、MFP101はそのプラットフォームを介してアプリケーションを実行できる。実行されるアプリケーションは、webView302を用いてWebコンテンツを表示させることができ、Webコンテンツに含まれたJavascriptによるJavaオブジェクトの使用を許すことができる。
【００１６】
なお、上述した各WebコンテンツはサーバーA102やサーバーB104が提供するものに限定しない。同様に、前記サーバーA102やサーバーB104の形態もHTTPプロトコルに従ってリクエスト／レスポンスを送受信するWebサーバーに限定するものではない。またJavascriptコア306がバインディングするネイティブライブラリ308はJavaやCなど特定の言語に限定するものではない。
【００１７】
＜アプリケーションおよびスクリプトのコードの例＞
図4は本発明の実施形態におけるアプリケーションA300がJavascriptコア306にバインディングするJavaコードの例である。アプリケーションA300は、図4に示した例のようにアプリケーションA300自身の識別子すなわち識別情報とWebView302に表示するWebコンテンツAを取得したURL情報とJavaのクラス情報とJavascript情報とをWebViewクラスに命令する際に引数として渡す。WebView302は受け取った情報を基にJavascriptコア306にバインディング命令を実行する。なおURLを読込先を示す読込先情報または取得先を示す取得先情報とも呼ぶ。読込先情報はたとえば、URLやURIなど、Webコンテンツのオリジンを含む情報である。図4のコードを簡単に説明すると、第1行目及び第2行目から始まるブロックは、アプリケーションA300においてJavaScriptから利用できるオブジェクトクラスの定義である。この例では、TestClassクラスのchangeAdminPwdメソッドが定義されている。図4の最終行では、WebViewクラスに対してaddJavascriptInterfaceメソッドを呼び出しており、それによってJavaScript（登録商標）とJavaとで相互に通信できるJavaScriptオブジェクトが作成される。またそれとともに、このメソッドの実行によりバインドされたJavaScriptとネイティブ機能すなわちJavaのクラスとを関連付けたテーブル（以下バインディングテーブルとも呼ぶ。図6参照）が作成される。カッコ内の記述は引数であり、先頭から順に、アプリケーション識別子、URL情報、JavaScriptから利用可能なJavaのクラス情報、作成したオブジェクトにJavaScriptからアクセスするためのグローバル変数である。バインディングだけが目的であれば、パラメータは、JavaScriptから利用可能なJavaのクラス情報と、作成したオブジェクトにJavaScriptからアクセスするためのグローバル変数だけでよい。アプリケーション識別子およびURL情報は図6のデータテーブルの作成のために必要な情報である。
図4のコードの実行により、JavaScriptは、JavaのTestClass.changeAdminPwdメソッドを実行するために、Testオブジェクトの対応するメソッドを呼び出せばよい。なお本実施形態では、addJavascriptInterfaceメソッドにパラメータを追加し、またデータテーブルの作成機能を追加したものとして説明したが、データテーブルの作成は別のメソッドにより実現してもよい。その場合にはaddJavascriptInterfaceメソッドは既存のメソッドのままである。また新たに追加されるメソッドの引数は、図6に示したaddJavascriptInterfaceメソッドの引数と同じで良い。
【００１８】
図5は本発明の実施形態におけるWebコンテンツA301に含まれるJavascriptコードの例である。WebコンテンツA301は、図5の記述例のようにJavascriptを実行する。すなわち、図5の第1行目はスクリプトの呼び出しであり、たとえばHTMLなどで記述されている。ここでは"123"を引数としてchangePasswordを呼び出している。第2行目以下にスクリプトchangePasswordが定義されている。まずスクリプト言語がJvascriptであり、スクリプトはchangePasswordという名称の関数であることが記述され、その中で、図4でJavascriptで読み出し可能なクラスとして定義したJavaのTestClassオブジェクトのchangeAdminPwdメソッドがstringを引数として呼び出されている。ただし、スクリプト内では、webView.addJavascriptInterfaceメソッドで設定された名称Testを用いてTest.changeAdminPwdTestで呼び出される。このようにして、Javascript実行時、Javascriptコア306は図4にてバインディングしたJavaクラスを実行することができる。
【００１９】
＜データテーブルの例＞
図6は本発明の実施形態における図3で示したAPI情報303のデータテーブル例である。データテーブル600は、たとえば図4に示したwebView.addJavascriptInterfaceメソッドで作成されるが、データテーブル作成のためのメソッドにより作成されてもよい。データテーブル600の登録情報には、データを登録したアプリケーションを判定するための各アプリケーション識別子と、各WebViewで表示するWebコンテンツを取得する先であるURL情報と、バインディングしたJavascript（登録商標）とJavaの情報と、バインディング状態601とが含まれる。このバインディング状態601にはbind/unbindの二種類が存在し、この情報を基にWebView302はJavascript（登録商標）コア306に対してバインド命令またはアンバインド命令を実行する。例えば、アプリケーションA300が図4に示したコードを実装すると、その実行によりWebView302はAPI情報303のデータテーブル600に必要な情報を登録する。なお、ここで示したデータテーブルの要素群は一例であり、要素内容を限定するものではない。図6に一例を示したデータテーブル（あるいはバインディングテーブル）により、アプリケーションと表示するWebコンテンツのソースURL、Javaスクリプトとネイティブ機能（Javaオブジェクト）とを関連付け、さらにバインディング状態をも管理できる。
【００２０】
なお、バインディングテーブル600の作成の際には、アプリケーション識別子およびURL項目には、webView.addJavascriptInterfaceメソッドの引数であるアプリケーション識別子およびURLが複製される。Javascript項目には、webView.addJavascriptInterfaceメソッドの引数である、作成したオブジェクトにJavaScriptからアクセスするための変数名（図4の"Test"）を含むJavascriptが検索され、該当するJavascriptの名称が登録される。Java項目には、webView.addJavascriptInterfaceメソッドの引数であるクラス名（図4では"TestClass"）が登録される。バイディング状態601には、バインディングされている（バインディングが有効である）状態を示す値、例えばbindが設定される。
なお本実施形態においては、データテーブル600はURLの項目を含まなくてもよい。
【００２１】
＜アプリケーションが表示状態から非表示状態となった際の処理＞
図７は、本発明の実施形態におけるアプリケーション300が非表示状態になったことをWebView302が検知し、アプリケーション300に紐付け管理されているバインド状態にあるAPIをアンバインド状態にするまでの流れを示すフローチャートである。MFP101上に表示されているアプリケーション300が、ユーザーのMFP操作によって表示状態から非表示状態に遷移すると処理がスタートする。なおMFP101では、実行中のアプリケーションが複数の場合には、選択されたアクティブなアプリケーションの画面のみが表示され、それ以外のアプリケーションの画面は表示されない。したがってアプリケーションがアクティブか否かはその表示状態により識別される。ウィンドウ制御モジュール304はアプリケーションの表示状態を示す情報を監視し、その情報にアクセスして表示状態を取得することができる。そして表示状態の移行があればそれを検知する。図7はその表示状態の検知をトリガとしている。
【００２２】
ステップS701にて、ウィンドウ制御モジュール304はWebView302に対してMFP101上に表示されているアプリケーションが切り替わったことを情報通知し、ステップS702へ進む。なお、この通知の中には何のアプリケーションから何のアプリケーションへ切り替わったかを判断するための情報（アプリケーション識別子を含む）が含まれている。
ステップS702にて、WebView302は受信したアプリケーション切り替え情報を解釈し、非表示状態となったアプリケーションの識別子を抽出しステップS703へ進む。
ステップS703にて、WebView302はAPI情報303内のデータテーブル600に非表示状態となったアプリケーションの識別子に紐付けられた情報があるか否かを判断する。非表示状態となったアプリケーションの識別子に紐付けられた情報がある場合はステップS704へ進む。紐付けられた情報がない場合は終了となる。
ステップS704にて、WebView302は、データテーブル600のうち非表示状態となったアプリケーションの識別子に紐付けられたバインディング状態601を参照する。該当するアプリケーション識別子に関連づけられたバインディング状態601がbind状態であればステップ705へ進む。bind状態でない場合は終了となる。
ステップS705にて、WebView302はデータテーブルの当該データに関するバインディング状態601をbindからunbindへ変更し、ステップS706へ進む。
ステップS706にて、WebView302はアンバインド命令をJavascriptコア306に送信しステップ707に進む。
ステップS707にて、Javascriptコア306は受信した命令を基にアンバインド処理を実施し終了となる。アンバインド処理の実行により、webView.addJavascriptInterfaceメソッドにより遂行されたスクリプトとネイティブ機能（すなわちAPI）とのバインディングが解除され、スクリプトからネイティブ機能を使用できなくなる。例えばアプリケーション300においては、図4のwebView.addJavascriptInterfaceメソッドによりTestClassオブジェクトがTestという名称でJavascriptから利用可能なオブジェクトとして追加されている（すなわちバインディングされている）。ステップS707ではこのバインディングが解除されて、たとえばスクリプトから利用可能なオブジェクトTestが削除されて、アプリケーションA300により利用できなくなる。そのために、ステップS707においては、アンバインド命令のパラメータとして、アプリケーション識別子とJavaオブジェクト名とがJavascriptコア306に送信されるのが望ましい。
【００２３】
＜アプリケーションが非表示状態から表示状態となった際の処理＞
図8は、本発明の実施形態におけるアプリケーション300が表示状態になったことをWebView302が検知し、アプリケーション300に紐付け管理されているアンバインド状態にあるAPIをバインド状態にするまでの流れを失すフローチャートである。MFP101上に表示されているアプリケーション300が、ユーザー操作によって非表示状態から表示状態に遷移すると処理がスタートする。
【００２４】
ステップS801にて、ウィンドウ制御モジュール304はWebView302に対してMFP101上に表示されているアプリケーションが切り替わったことを情報通知し、ステップS802へ進む。なお、この通知の中には何のアプリケーションから何のアプリケーションへ切り替わったかを判断するための情報（アプリケーション識別子を含む）が含まれている。
ステップS802にて、WebView302は受信したアプリケーション切り替え情報を解釈し、表示状態となったアプリケーションの識別子を抽出しステップS803へ進む。
ステップS803にて、WebView302はAPI情報303内のデータテーブル600に表示状態となったアプリケーションの識別子に紐付けられた関連する情報があるか否かを判断する。表示状態となったアプリケーションの識別子に紐付けられた情報がある場合はステップS804へ進む。紐付けられた情報がない場合は終了となる。
ステップS804にて、WebView302は、データテーブル600のうち非表示状態となったアプリケーションの識別子に紐付けられたバインディング状態601を参照する。該当するバインディング状態601がunbind状態であればステップS805へ進む。unbind状態でない場合は終了となる。
ステップS805にて、WebView302はデータテーブルの当該データに関するバインディング状態601をunbindからbindへ変更しステップS806へ進む。
ステップS806にて、WebView302はバインド命令をJavascriptコア306に送信しステップS807に進む。
ステップS807にて、Javascriptコア306は受信した命令を基にバインド処理を実施し終了となる。ステップS807の処理は、webView.addJavascriptInterfaceメソッドで実行される処理と同様の処理でよい。ただし、図6のデータテーブル600は既に作成済みなので、新たに作成する必要は無い。
【００２５】
以上説明した構成および手順により、本実施形態では、アプリケーションが表示状態にある間に限って、そのアプリケーションで設定したJavascriptとJavaオブジェクト（すなわちAPI）とのバインディングを維持する。そして、アプリケーションが非表示状態になるとそのバインディングを解除する。それにより、JavascriptによるJavaオブジェクトすなわちネイティブ機能の使用を、バインディングを設定したアプリケーションが表示状態にある場合に限定して許可することができる。このように、より簡易な方法で、WebViewを利用したJavaScript（登録商標）とネイティブ機能とのバインディングを、アプリケーションの状態によって制御できる。このため、悪意のあるスクリプトによるネイティブ機能の使用を防止でき、よりセキュリティを向上させることができる。
【００２６】
［第二実施形態］
図9は本発明の実施形態におけるアプリケーション実装の利便性をより向上させるため、図6にて示したAPI情報303のデータテーブル600を拡張した拡張データテーブル900である。一般的なセキュリティ保全方法として、例えばアプリケーションA300がWebView302に対してWebコンテンツA301とは異なるWebコンテンツB310を表示する場合、Webコンテンツ自体の取得先URLが変わるためJavascriptコア306に対してアンバインド処理が行われる。このため、アプリケーション300は必要に応じて都度バインディング処理を行うことになり利便性が低い。
【００２７】
そこで、図4で例示したような、アプリケーションA300がJavascriptコア306にバインディングするためのJavaコードを拡張し、バインディングする際の引数として同一オリジンに対する利用許可フラグ（あるいは利用許可情報）901（true/false）を追加する。オリジンとは、サーバー等からWebコンテンツ等を取得する際に指定されるスキーム（例えばhttp）、ホスト（例えばappA.com）、ポート（例えば80）の組み合わせである。それらの組み合わせが同じオリジンを同一オリジンと呼ぶ。なおデフォルトのポートが指定されているスキームについては、ポートが明示されていない場合には、デフォルトのポートをオリジンのポートとすればよい。WebView302に表示するWebコンテンツの取得先URLが変わった際、そのWebコンテンツの取得先URLと同一オリジンのデータが拡張データテーブル900に存在し、且つ同一オリジンに対する利用許可フラグ901がtrueの場合、WebView302が当該データを基にあらたなデータを追加し（例えばデータ902を基にデータ903を追加する）、Javascriptコア306に対してバインディング処理を実施する。すなわち利用許可フラグは、テーブルデータ600に登録された取得先のURLと同一オリジンの第二の取得先のURLから取得したスクリプトによっても、取得先のURLと関連付けられたネイティブ機能が利用可能であることを示す。なお、例えば指定されたURLからオリジンを特定し、そのオリジンと、データテーブル901に登録されたURLから特定されるオリジンとが一致すればそれらは同一オリジンと判定される。一方、同一オリジンデータが存在しない場合、または、同一オリジンデータが存在しても同一オリジンに対する利用許可フラグ901がfalseの場合、はデータを追加しない。
【００２８】
図10は本発明の実施形態における図9で示した、API情報303の内容である拡張データテーブル900を利用した自動バインディングのフローチャートである。図7や図8とは異なり、MFP101上に表示されているアプリケーションA300自体の表示状態は変わらず、ユーザー操作等によってアプリケーションA300上のWebView302内に表示しているWebコンテンツが、WebコンテンツA301とは別のWebコンテンツを表示するために、取得先URLが代わったことを起点として処理がスタートする。
【００２９】
ステップS1001にて、Webコア307は表示するWebコンテンツを取得するためのURLが切り変わったことをWebView302へ情報通知して、ステップS1002へ進む。
ステップS1002にて、WebView302は受信した情報から、切り替わった新たなURL情報を取得し、ステップS1003へ進む。
ステップS1003にて、WebView302は取得したURL情報を基に、そのURLから特定されるオリジンと、データテーブル900内のデータ群におけるURLから特定されるオリジンとの比較を実施し、同一オリジンのデータが存在するか判定する。存在する場合はステップS1004へ進み、存在しない場合は終了となる。
ステップS1004にて、WebView302は前述のステップにて判定した同一オリジンのURLに関連付けられた利用許可フラグ901を参照し、trueの場合はステップS1005へ進み、falseの場合は終了となる。
ステップS1005にて、WebView302は前述の同一オリジンに対する利用許可フラグがtrueであるデータをコピーし、コピーしたデータのURL情報をステップ1002で取得した新たなURLに差し替え、データテーブル900へ新たなエントリの追加処理を行い、ステップ1006へ進む。
ステップS1006にて、WebView302はステップ106にて追加処理した情報を基にJavascriptコア306へバインド命令を送信し、ステップS1007へ進む。
ステップS1007にて、Javascriptコア306はバインド処理を実施し、終了となる。
【００３０】
なお、拡張データテーブル900の利用許可フラグ901の値の設定は、たとえばwebViewのメソッドとして実装しておくことで、true/falseを自在に設定できる。またセキュリティ維持のために、新たに作成した拡張データテーブル900については利用許可フラグ901を一律に不許可すなわちfalseに設定してもよい。
またステップS1006、S1007はバインディング状態がbindである場合の例であり、バインディング状態がunbindであれば、ステップS1005終了後に処理を終了してもよい。
【００３１】
なお、別の実施形態として、図7にてWebView302が非表示状態となったアプリケーション識別子を基に、関連するWebエンジン305の実体（インスタンス）を破棄する形（アプリケーションが非表示になるとステップ702にてWebエンジン305に対して破棄命令実行）も可能である。
【００３２】
以上に示す構成によりWebViewを利用するアプリケーションの表示状態に応じて、WebViewを利用するアプリケーションが最前面に表示されている場合に限り、Javascriptにバインディングしたネイティブ機能を利用可能となる。また、アプリケーション状態は変わらず、WebViewに表示するWebコンテンツの取得先が変わった場合、同一オリジンであればシステム側で自動バインドすることも可能となる。これらにより、より簡易な形でアプリケーション毎のセキュリティを担保することが可能となると共に利便性の向上がねらえる。
【００３３】
［その他の実施例］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００３４】
300、309...アプリケーション、301，310...Webコンテンツ、302...WebView、303...API情報、304...ウインドウ制御モジュール、306...Javascriptコア、307...webコア
【図１】
2017097662.tif 000003
【図２】
2017097662.tif 000004
【図３】
2017097662.tif 000005
【図４】
2017097662.tif 000006
【図５】
2017097662.tif 000007
【図６】
2017097662.tif 000008
【図７】
2017097662.tif 000009
【図８】
2017097662.tif 000010
【図９】
2017097662.tif 000011
【図１０】
2017097662.tif 000012