JP2017097662A - 情報処理装置、情報処理装置の制御方法、及びプログラム - Google Patents

情報処理装置、情報処理装置の制御方法、及びプログラム Download PDF

Info

Publication number
JP2017097662A
JP2017097662A JP2015230027A JP2015230027A JP2017097662A JP 2017097662 A JP2017097662 A JP 2017097662A JP 2015230027 A JP2015230027 A JP 2015230027A JP 2015230027 A JP2015230027 A JP 2015230027A JP 2017097662 A JP2017097662 A JP 2017097662A
Authority
JP
Japan
Prior art keywords
application
native function
script
state
display state
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
Application number
JP2015230027A
Other languages
English (en)
Inventor
伊藤 大介
Daisuke Ito
大介 伊藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2015230027A priority Critical patent/JP2017097662A/ja
Priority to US15/341,399 priority patent/US10067807B2/en
Publication of JP2017097662A publication Critical patent/JP2017097662A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】簡易な構成で、Javascriptにバインディングしたネイティブ機能をアプリケーションの状態によって制御し、セキュリティを担保する。
【解決手段】Javascriptにバインディングしたネイティブ機能をAPI情報303に登録しておき、WebView302を利用するアプリケーションの表示状態に応じて、ネイティブ機能を利用可能とし、あるいは利用不可とするよう制御することで、より簡易にアプリケーション毎のセキュリティを担保することが可能となる。
【選択図】図3

Description

本発明は、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情報の拡張例を示す図である 本発明の実施形態における図9で示したAPI情報の拡張例を利用し自動バインドの流れを示すフローチャートである
以下、本発明を実施するための形態について図面を用いて説明する。
[第一実施形態]
<システム構成例>
図1は本発明の画像処理装置を用いたシステムの構成例である。本システムはネットワーク100を介してインターネット103に接続される多機能周辺機器(MFP)101と、インターネット103に接続されたサーバーA102、サーバーB104とから構成される。ネットワーク100は各装置間で通信を行うための基盤であって、インターネット103に接続されている。MFP101はWebブラウザーやWebview機能を有すれば、MFPに限定されるものではない。さらに、MFP101はローカルなIPアドレスで管理されていても良い。その場合ネットワーク100とMFP101の間にゲートウェイ(不図示)が存在し、ゲートウェイはアドレス変換を行う。例えばゲートウェイにはルーターが含まれる。また前記ゲートウェイや、MFP101がファイアウォール機能を備えていても良い。サーバーA102やサーバーB104は、Webコンテンツをネットワーク経由で配信する機能を持っており、MFP101からのリクエストに応じてWebコンテンツを返す。Webコンテンツにはクライアントで実行されるスクリプトが含まれている。各装置及びネットワーク101はインターネット103に必ずしも接続されている必要はなく、ローカルネットワーク上に存在してもよい。
<情報処理装置の構成例>
図2は本実施形態のMFP101および、サーバーA102、サーバーB104などの情報処理装置の機器構成図の一例である。なおMFP101に関しては、図2に示す構成のほか、画像の読み取りやプリントなどのための構成要素を更に含んでいるが、図では省略した、MFPおよび情報処理装置は、本実施形態に係るプログラムのほか、オペレーティングシステムやアプリケーション、スクリプト等を含むプログラムを実行するCPU201を含む。またCPU201へ、実行されるプログラムやデータ等を記憶するためのワークエリアを提供するRAM202、本実施形態に係るプログラムや様々な設定を記憶する記憶部203(HDD、SSD、NVRAM等でもよい)が含まれる。さらに、ユーザーがコマンドの入力を行うユーザー入力部204、ユーザーインターフェイス画面などの画面表示を行うUI表示部205、他機器とネットワークによる通信を行うネットワーク部206、各構成要素を接続するメインバス200がMFPおよび情報処理装置には含まれる。尚、特に断らない限り、MFP101、サーバーA102、サーバーB104では、CPU201がメインバス200を介してRAM202、記憶部203、ユーザー入力部204、UI表示部205、ネットワーク部206を制御する。また、タッチパネルディスプレイのようにUI表示部205がユーザー入力部204を兼ねても良い。ただし、サーバーA102やサーバーB104は、ユーザー入力部204とUI表示部205を有していなくても良い。また、MFP101はその他に画像読取部や画像印刷部がメインバス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の項目を含まなくてもよい。
<アプリケーションが表示状態から非表示状態となった際の処理>
図7は、本発明の実施形態におけるアプリケーション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コンテンツの取得先が変わった場合、同一オリジンであればシステム側で自動バインドすることも可能となる。これらにより、より簡易な形でアプリケーション毎のセキュリティを担保することが可能となると共に利便性の向上がねらえる。
[その他の実施例]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
300、309...アプリケーション、301,310...Webコンテンツ、302...WebView、303...API情報、304...ウインドウ制御モジュール、306...Javascriptコア、307...webコア

Claims (10)

  1. 実行中のアプリケーションにおいて取得したスクリプトに対してネイティブ機能を提供できる情報処理装置であって、
    アプリケーションの識別情報と、ネイティブ機能と、前記アプリケーションにおいて取得したスクリプトにより前記ネイティブ機能が利用可能であるか否かを示すバインディング状態とを関連付けたテーブルを記憶する記憶手段と、
    実行中の複数のアプリケーションの表示の状態が切り替えられた際に、前記テーブルを参照して表示状態から非表示状態に移行したアプリケーションに関連づけられた前記バインディング状態を、前記ネイティブ機能が利用可能でないことを示す値に変更するとともに、前記ネイティブ機能を前記スクリプトにより利用可能でない状態に変更する変更手段と
    を有することを特徴とする情報処理装置。
  2. 前記変更手段は更に、実行中の複数のアプリケーションの表示の状態が切り替えられた際に、前記非表示状態から前記表示状態に移行したアプリケーションが前記テーブルに登録されている場合には、前記アプリケーションに関連づけられた前記バインディング状態を、前記ネイティブ機能が利用可能であることを示す値に変更するとともに、前記ネイティブ機能を前記スクリプトにより利用可能である状態に変更することを特徴とする請求項1に記載の情報処理装置。
  3. 前記テーブルはさらに、前記アプリケーションによりスクリプトを取得する取得先と、前記テーブルに登録された前記取得先と同一オリジンの第二の取得先から取得した前記スクリプトに対して前記ネイティブ機能を利用可能であることを示す利用許可情報とを含み、
    前記変更手段は、前記取得先が前記第二の取得先に変更された際に、前記取得先に関連付けられた前記利用許可情報が利用可能であれば、前記テーブルに、前記アプリケーションの識別情報と、前記ネイティブ機能と、前記アプリケーションにおいて取得したスクリプトにより前記ネイティブ機能が利用可能であるか否かを示すバインディング状態と、前記第二の取得先とを関連付けて登録することを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記変更手段は、前記取得先が前記第二の取得先に変更された際に、前記取得先に関連付けられたバインディング状態が利用可能であれば、前記ネイティブ機能を前記スクリプトにより利用可能である状態に変更することを特徴とする請求項3に記載の情報処理装置。
  5. 前記アプリケーションの表示状態を監視し、前記アプリケーションの表示状態の変更を前記変更手段に通知する手段を更に有することを特徴とする請求項1乃至4のいずれか一項に記載の情報処理装置。
  6. 前記スクリプトを含むWebコンテンツを指定された取得先から取得するとともに、前記取得先の変更を監視し、前記取得先の変更を前記変更手段に通知する手段を更に有することを特徴とする請求項1乃至5のいずれか一項に記載の情報処理装置。
  7. 前記変更手段は、webViewのメソッドとして実装されることを特徴とする請求項1乃至6のいずれか一項に記載の情報処理装置。
  8. 前記スクリプトはJavascript で記述され、前記ネイティブ機能はJavaで定義されるクラスであることを特徴とする請求項7に記載の情報処理装置。
  9. 実行中のアプリケーションにおいて取得したスクリプトに対してネイティブ機能を提供できる情報処理装置を、
    アプリケーションの識別情報と、ネイティブ機能と、前記アプリケーションにおいて取得したスクリプトにより前記ネイティブ機能が利用可能であるか否かを示すバインディング状態とを関連付けたテーブルを記憶する記憶手段と、
    実行中の複数のアプリケーションの表示の状態が切り替えられた際に、前記テーブルを参照して表示状態から非表示状態に移行したアプリケーションに関連づけられた前記バインディング状態を、前記ネイティブ機能が利用可能でないことを示す値に変更するとともに、前記ネイティブ機能を前記スクリプトにより利用可能でない状態に変更する変更手段と
    して機能させるためのプログラム。
  10. 実行中のアプリケーションにおいて取得したスクリプトに対してネイティブ機能を提供できる情報処理装置において、
    アプリケーションの識別情報と、ネイティブ機能と、前記アプリケーションにおいて取得したスクリプトにより前記ネイティブ機能が利用可能であるか否かを示すバインディング状態とを関連付けたテーブルを記憶する記憶工程と、
    実行中の複数のアプリケーションの表示の状態が切り替えられた際に、前記テーブルを参照して表示状態から非表示状態に移行したアプリケーションに関連づけられた前記バインディング状態を、前記ネイティブ機能が利用可能でないことを示す値に変更するとともに、前記ネイティブ機能を前記スクリプトにより利用可能でない状態に変更する変更工程と
    を有することを特徴とする情報処理装置の制御方法。
JP2015230027A 2015-11-25 2015-11-25 情報処理装置、情報処理装置の制御方法、及びプログラム Pending JP2017097662A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015230027A JP2017097662A (ja) 2015-11-25 2015-11-25 情報処理装置、情報処理装置の制御方法、及びプログラム
US15/341,399 US10067807B2 (en) 2015-11-25 2016-11-02 Information processing apparatus and method of controlling information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015230027A JP2017097662A (ja) 2015-11-25 2015-11-25 情報処理装置、情報処理装置の制御方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2017097662A true JP2017097662A (ja) 2017-06-01

Family

ID=58721128

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015230027A Pending JP2017097662A (ja) 2015-11-25 2015-11-25 情報処理装置、情報処理装置の制御方法、及びプログラム

Country Status (2)

Country Link
US (1) US10067807B2 (ja)
JP (1) JP2017097662A (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107402763B (zh) * 2017-07-27 2020-07-03 深圳市泰衡诺科技有限公司 一种基于智能终端的图标控制方法和控制系统
CN107563736B (zh) * 2017-09-20 2020-10-16 北京三快在线科技有限公司 原生页面与Web页面的切换方法和服务器
KR101891140B1 (ko) * 2017-12-16 2018-08-23 세타랩 주식회사 테스트 자동화를 위한 기법
CN110020326A (zh) * 2018-09-07 2019-07-16 天翼电子商务有限公司 一种提升Webview打开速度的方法
CN109063202B (zh) * 2018-09-13 2022-01-25 北京三快在线科技有限公司 在混合界面应用中实现弹窗的方法、装置以及计算机设备
CN110377360A (zh) * 2019-07-12 2019-10-25 深圳市酷开网络科技有限公司 webview快速加载的方法、显示终端及计算机可读存储介质
JP2022025975A (ja) * 2020-07-30 2022-02-10 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及びプログラム。
CN112052417A (zh) * 2020-09-01 2020-12-08 企查查科技有限公司 网页加载方法、装置、设备及存储介质
JP2023082421A (ja) * 2021-12-02 2023-06-14 株式会社リコー 情報処理装置、方法およびプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8112745B2 (en) * 2006-03-22 2012-02-07 Honeywell International Inc. Apparatus and method for capabilities verification and restriction of managed applications in an execution environment
US20080148298A1 (en) * 2006-12-18 2008-06-19 Palm, Inc. System and Methods for Providing Granular Security for Locally Running Scripted Environments and Web Applications
JP5523011B2 (ja) 2009-08-13 2014-06-18 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
JP5585585B2 (ja) * 2009-10-02 2014-09-10 日本電気株式会社 情報端末、表示方法及びプログラム
KR20120067858A (ko) * 2010-12-16 2012-06-26 한국전자통신연구원 모바일 웹 어플리케이션을 네이티브 어플리케이션으로 변환하는 방법 및 이러한 방법을 사용하는 장치
JP5654944B2 (ja) 2011-05-02 2015-01-14 Kddi株式会社 アプリケーション解析装置およびプログラム
US10140102B2 (en) * 2014-08-21 2018-11-27 International Business Machines Corporation Evaluating accessibility compliance of a hybrid user interface design
US10116814B2 (en) * 2014-10-10 2018-10-30 Seiko Epson Corporation Electronic apparatus and display control method for electronic apparatus

Also Published As

Publication number Publication date
US20170147414A1 (en) 2017-05-25
US10067807B2 (en) 2018-09-04

Similar Documents

Publication Publication Date Title
JP2017097662A (ja) 情報処理装置、情報処理装置の制御方法、及びプログラム
JP6982006B2 (ja) ハードウェア・ベースの仮想化セキュリティ分離
US20220224726A1 (en) Distribution and Management of Services in Virtual Environments
EP2847686B1 (en) Enhanced document and event mirroring for accessing content
JP5475064B2 (ja) サーバ装置、アプリケーション実行システム、アプリケーション実行方法、およびプログラム
US20110252117A1 (en) Devices and Methods for Redirecting a Browser to Access Computer Resource Behind a Network Firewall
US8056125B2 (en) Recording medium storing control program and communication system
JP2015149568A (ja) 画像形成装置、その制御方法およびプログラム
TWI613551B (zh) 針對基於超文字傳輸協定的應用程式之網路瀏覽器策略技術
JP2012048457A (ja) 印刷サーバ装置、印刷装置、情報処理方法及びプログラム
JP5553670B2 (ja) 管理装置、その制御方法およびプログラム
EP3381169A2 (en) Secure, anonymous browsing with a remote browsing server
US10341346B2 (en) Information processing method, information processing apparatus, and storage medium
JP2015035143A (ja) 情報処理システム、情報処理方法、及びプログラム
WO2017030607A1 (en) Systems and methods for establishing a control channel between a virtualization server and a client device
US10951682B2 (en) Systems and methods for accessing multiple resources via one identifier
US9251362B2 (en) Medium for storing control program, client apparatus, and control method for client apparatus
JP5951002B2 (ja) 選択的ポリシーによるホストと複数のゲストとの間での構成要素伝播の実現
US20230224302A1 (en) Techniques for providing hypertext transfer protocol through a secure environment
JP2016143212A (ja) 情報処理装置、情報処理装置の制御方法、及び制御プログラム
JP6205013B1 (ja) アプリケーション利用システム
US20230266985A1 (en) Execution redirection in a remote desktop
TW201917595A (zh) 雲端安全網路瀏覽方法及系統
US20240045915A1 (en) Web browsing system, communication terminal, image generation server
US11108872B2 (en) System and method using the same, information processing apparatus and method using the same, and storage medium