説明

サーバ、制御方法、および、プログラム

【課題】端末上で動作するブラウザへの所定のイベントに応じて実行されるべきイベント処理コードを含む第1コンテンツデータを端末に送信するシステムを提供する。
【解決手段】サーバは、端末上で動作するブラウザへのアドオンとして実行され、ブラウザに対するコンテンツへのアクセスイベントに応じて実行されユーザによるコンテンツへのアクセスを防止するイベント処理コードが実行されるか否かを判定する判定コードと、アクセス防止コードが実行されないと判定された場合にコンテンツの提供を停止する制御コードとを含む第2コンテンツデータを端末に送信するデータ送信部と、第2コンテンツデータに従って処理を実行している端末からコンテンツの要求を取得する要求取得部と、要求取得部がコンテンツの要求を取得した場合に、要求されたコンテンツとイベント処理コードとを含む第1コンテンツデータを生成するデータ生成部とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サーバ、制御方法、および、プログラムに関する。
【背景技術】
【0002】
JavaScriptを利用したWebシステムが知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2005−00320号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
JavaScriptなど、ブラウザの拡張言語で記述したスクリプトを利用することで、ブラウザを用いて効果的なアプリケーションをユーザに提供することができる。例えば、ユーザによるクリップボードへのコピー操作、ブラウザ画面の印刷操作を防ぐスクリプトを用いることで、ブラウザに表示された情報を外部に流出させにくくすることができる。また、ユーザ操作に応じた動作を定義したスクリプトを用いることで、インタラクティブなWebアプリケーションを提供することもできる。しかしながら、スクリプトを無効にする設定がブラウザになされている場合には、スクリプトによる上記利点を得ることはできない。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明の第1の態様においては、端末上で動作するブラウザによりユーザに提供されるべきコンテンツと、ユーザによるブラウザに対するコンテンツへのアクセスイベントに応じて実行されユーザによるコンテンツへのアクセスを防止するイベント処理コードとを含む第1コンテンツデータを端末に送信するサーバであって、端末上で動作するブラウザへのアドオンとして実行され、アクセスイベントに応じてイベント処理コードが実行されるか否かを判定する判定コードと、アクセスイベントに応じてイベント処理コードが実行されない旨が判定コードにより判定された場合に、ブラウザによるユーザへのコンテンツの提供を停止させる制御コードとを含む第2コンテンツデータを、端末に送信するデータ送信部と、第2コンテンツデータに従って処理を実行している端末から、コンテンツの要求を取得する要求取得部と、要求取得部がコンテンツの要求を取得した場合に、要求されたコンテンツと、当該コンテンツを読み込んだブラウザへのアクセスイベントに応じて実行されるべきイベント処理コードとを含む第1コンテンツデータを生成するデータ生成部とを備える。
【0006】
要求取得部がコンテンツの要求を取得した場合に、コンテンツを外部のサーバから取得するコンテンツ取得部をさらに備え、データ生成部は、コンテンツ取得部が取得したコンテンツにイベント処理コードを埋め込むことにより、第1コンテンツデータを生成してよい。
【0007】
判定コードは、イベント処理コードを実行するコード処理系と同じコード処理系でブラウザに所定のコードを実行させる実行コードと、所定のコードの実行結果に基づいて、判定を行う判定実行コードとを含んでよい。実行コードは、端末で実行される複数のソフトウェアコンポーネント間でデータが共有される記憶領域に所定値を記憶させるコードをブラウザに実行させ、判定実行コードは、実行コードの実行後に記憶領域に記憶されている値に基づいて判定を行ってよい。判定コードは、イベント処理コードを実行するコード処理系と同じコード処理系で実行され、記憶領域に記憶されている値を取得するコードを、ブラウザに実行させるデータ取得コードをさらに含み、判定実行コードは、データ取得コードの実行により取得された値に基づいて、判定を行ってよい。
【0008】
制御コードは、判定コードにより、アクセスイベントに応じてイベント処理コードが実行されない旨が判定された場合に、コンテンツを表示しているブラウザの画面を書き換える画面制御コードを含んでよい。制御コードは、判定コードにより、アクセスイベントに応じてイベント処理コードが実行されない旨が判定された場合に、コンテンツを表示しているブラウザの画面を閉じさせる画面制御コードを含んでよい。
【0009】
コンテンツデータは、マークアップ言語で記述されたWebコンテンツであり、イベント処理コードは、JavaScriptで記述されたコードであってよい。第2コンテンツデータは、Flashコンテンツであり、判定コードは、ActionScriptで記述されたコードであってよい。
【0010】
アクセスイベントは、ブラウザで表示されたコンテンツを出力する指示によってブラウザに生じるイベントであってよい。指示は、端末における複数のソフトウェアコンポーネント間でデータ共有される記憶領域に、ブラウザにより表示されたデータを記憶するユーザ指示を含んでよい。指示は、ブラウザによる表示内容をプリントするユーザ指示を含でよい。イベント処理コードは、ブラウザにおいてアクセスイベントを生じさせるユーザ操作をフックして、ブラウザによる規定の処理に替えて実行されてよい。
【0011】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【0012】
【図1】一実施形態に係るシステム10の一例を示す図である。
【図2】サーバ100のブロック構成の一例を示す図である。
【図3】処理シーケンスの一例を示す図である。
【図4】ブラウザが表示するウィンドウの一例を示す図である。
【図5】生成されるWebコンテンツデータの一例を示す図である。
【図6】判定ルーチンにおける処理フローの一例を示す図である。
【発明を実施するための形態】
【0013】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0014】
図1は、一実施形態に係るシステム10の一例を示す。システム10は、複数のクライアント120a−d、サーバ100、および、社内サーバ110を備える。以後の説明では、クライアント120a−dをクライアント120と総称する。なお、クライアント120は、この発明における端末の一例であるとする。
【0015】
社内ネットワーク20に接続された社内サーバ110は、Webサーバを含み、Webアプリケーション環境をクライアント120のそれぞれに提供する。具体的には、社内サーバ110は、メールサーバ、ワークフローサーバ、ファイルサーバなどのサーバを含むサーバシステムであってよく、社内サーバ110は、これらの各サーバからのデータまたは社内サーバ110が保持するデータを、クライアント120からの要求に応じて加工して、クライアント120に提供する。
【0016】
社内サーバ110、クライアント120c、クライアント120dは、社内ネットワーク20に接続され、クライアント120aおよびクライアント120bは、通信回線180に接続される。通信回線180は、社内ネットワーク20の外の通信ネットワークであり、インターネット網、携帯電話通信網などの公衆の通信ネットワークを含む。クライアント120aはパーソナルコンピュータであり、クライアント120bは携帯電話、携帯情報端末(PDA)などの携帯端末であってよい。
【0017】
サーバ100は、社内サーバ110ならびにクライアント120と通信することができる。サーバ100は、社内ネットワーク20に接続されており、クライアント120cおよびクライアント120dは、社内ネットワーク20を通じてサーバ100と通信することができる。また、サーバ100は、通信回線180に接続されており、クライアント120aおよびクライアント120bは、通信回線180を通じてサーバ100と通信することができる。
【0018】
クライアント120は、クライアント120上で動作するブラウザを通じてサーバ100にアクセスして、サーバ100からコンテンツを取得して表示する。具体的には、クライアント120はサーバ100に対して、コンテンツを要求する。サーバ100は、クライアント120からのコンテンツの要求に応じて、要求されたコンテンツをクライアント120に送信する。例えば、クライアント120は、HTTPリクエストをサーバ100に送信する。サーバ100は、クライアント120からのHTTPリクエストに応じて、HTTPレスポンスをクライアント120に送信する。
【0019】
サーバ100は、サーバ100が提供する独自のコンテンツと、社内サーバ110が提供するWebコンテンツとを、クライアント120からの要求に応じて提供する。ここで、Webコンテンツは、社内サーバ110が提供するWebアプリケーションを通じた要求により、社内サーバ110で生成されるとする。
【0020】
具体的には、サーバ100は、クライアント120からリクエストがあった場合に、予め定められた独自のコンテンツをクライアント120に送信する。予め定められた独自のコンテンツとは、Flashコンテンツを含むコンテンツデータを例示することができる。ここで、Flashコンテンツは、ActionScriptで記述されたコードを含む。また、Flashコンテンツは、社内サーバ110が提供するWebコンテンツを要求するインタフェースを提供する。ActionScriptで記述されたコードについては後述する。なお、Flashコンテンツを含むコンテンツデータは、この発明における第2コンテンツデータの一例であるとする。
【0021】
クライアント120は、Flashコンテンツを通じて、社内サーバ110が提供するWebコンテンツをサーバ100に要求する。サーバ100は、社内サーバ110からWebコンテンツを取得して、取得したWebコンテンツに、JavaScriptで記述されたイベント処理コードを埋め込んで、クライアント120に提供する。このように、サーバ100は、クライアント120に対してプロクシサーバとして機能する。なお、本コードが埋め込まれたコンテンツデータは、この発明における第1コンテンツデータの一例であるとする。
【0022】
ここで、社内サーバ110が提供するWebコンテンツは、HTMLなどのマークアップ言語で記述されたコンテンツであってよい。サーバ100が提供するFlashコンテンツを含むコンテンツデータも、マークアップ言語およびJavaScriptで記述されたコンテンツ部分を含んでよい。また、サーバ100が提供するコンテンツデータもWebコンテンツとみなすこともできる。しかしながら、説明が複雑になることを防ぐべく、以後の説明では、社内サーバ110が提供するコンテンツを単に「Webコンテンツ」と呼び、サーバ100が提供するコンテンツを単に「Flashコンテンツ」と呼ぶことで、両者を区別する。
【0023】
サーバ100が埋め込むJavaScriptのコードは、クライアント120におけるユーザによる所定のキーボード操作またはマウス操作をフックするコードを含む。当該所定の操作としては、ブラウザの表示内容を出力する操作を含む。ブラウザにより表示された表示データを出力するとは、クリップボードなどの端末の内部リソースに表示データをコピーすること、表示データをプリントすること、表示データを外部に送信すること、などを含む概念とする。ブラウザの表示データとは、ユーザ操作により選択することができるテキストデータ、画像などを含む。所定のユーザ操作は、サーバ100が埋め込むJavaScriptのコードによってフックされてJavaScriptのコードで処理され、上述した印刷、クリップボードへのコピーなどの、ブラウザが有する規定の出力機能は実行されない。
【0024】
ここで、クライアント120は、Flashコンテンツに含まれるActionScriptのコードに従って、ブラウザでJavaScriptの実行が有効に設定されているか否かを継続的にチェックする。JavaScriptの実行がブラウザで無効に設定されていることが検出された場合には、Flashコンテンツに含まれるActionScriptのコードにより、Webコンテンツのブラウザ・ウィンドウが強制的に閉じられたり、Webコンテンツの表示画面が、JavaScriptを有効に設定するヘルプ画面で強制的に書き換えられたりされる。
【0025】
以上説明したサーバ100によれば、社内サーバ110が提供するWebアプリケーションが、コピー・ペースト操作、プリント操作などのセキュリティ上危険なユーザ操作を防止する機能を有していなくても、それらのユーザ操作を防止することができる。このため、クライアント120を通じて企業の機密情報等が漏洩してしまう可能性を著しく低減することができる。また、既存の社内ネットワーク20にサーバ100を追加するだけでよく、ユーザ操作を防止するために社内サーバ110が提供するWebアプリケーションに変更を加えなくて済む。
【0026】
図2は、サーバ100のブロック構成の一例を示す。サーバ100は、クライアント通信部210、要求取得部220、コンテンツ要求生成部230、外部サーバ通信部240、コンテンツ取得部250、データ生成部260、コンテンツ記憶部270、および、埋め込みコード記憶部280を有する。
【0027】
クライアント通信部210は、クライアント120と通信することができ、外部サーバ通信部240は、サーバ100の外部のサーバと通信することができる。外部のサーバとしては、社内サーバ110を例示することができる。ここではクライアント通信部210および外部サーバ通信部240を別個の機能ブロックとして説明したが、これらの機能ブロックは1つの機能ブロックとして実装されてよいことは言うまでもない。また、クライアント通信部210の一部の機能および外部サーバ通信部240の一部の機能が、それぞれ別個のネットワークインタフェースカードで実装されてよいが、別個のネットワークインタフェースカードにより実装されることは要しない。なお、本図に説明する他の機能ブロックについて同様であり、別個の機能ブロックで表すことが別個のソフトウェアコンポーネントまたはハードウェアコンポーネントで実装されることを要するものではないことは当然である。
【0028】
要求取得部220は、クライアント120からの要求を取得する。具体的には、要求取得部220は、クライアント120からFlashコンテンツの要求を取得する。要求取得部220がFlashコンテンツの要求を取得した場合に、データ生成部260は、Flashコンテンツのデータを生成する。具体的には、コンテンツ記憶部270がFlashコンテンツを予め記憶しており、データ生成部260はコンテンツ記憶部270が記憶しているFlashコンテンツをコンテンツ記憶部270から取得して、取得したFlashコンテンツのデータをクライアント通信部210に供給する。クライアント通信部210は、Flashコンテンツデータをクライアント120に送信する。なお、クライアント通信部210は、Flashコンテンツデータをクライアント120に送信する送信部として機能する。
【0029】
Flashプログラムは、クライアント120に対して、社内サーバ110が提供するWebアプリケーションへのインタフェースを提供する。また、Flashコンテンツデータは、ブラウザへの所定のイベントに応じてイベント処理コードが実行されるか否かを判定する判定コードを含んでいる。判定コードとは、ブラウザにおいてJavaScriptが有効に設定されているか否かを判定する、ActionScriptで記述されたコードを含む。
【0030】
ここで、所定のイベントとしては、ユーザによるブラウザに対するコンテンツへのアクセスイベントを例示することができる。この場合においてイベント処理コードは、ユーザによるコンテンツへのアクセスを防止するコードであってよい。アクセスイベントとしては、ブラウザで表示されたコンテンツを外部に出力する指示によってブラウザに生じるイベントを例示することができる。また、当該外部に出力する指示としては、クライアント120における複数のソフトウェアコンポーネント間でデータ共有される記憶領域に、ブラウザにより表示されたデータを記憶するユーザ指示を含む。他にも、外部出力する指示としては、ブラウザによる表示画面を印刷するユーザ指示を含む。
【0031】
ここで、ブラウザに表示されたデータとは、ブラウザに表示されたテキストデータ、イメージデータなどを含む概念であってよい。クライアント120における複数のソフトウェアコンポーネント間でデータ共有される記憶領域は、ハードウェアとしてはメモリ、ハードディスク等の記憶デバイスであってよく、ソフトウェアとしてはいわゆるクリップボードなどの共有のメモリアドレス空間であってよい。また、データを記憶するとは、一時的に記憶することを含む概念であるとする。データを記憶するとは、例えばデータを電子ファイルとしてファイルシステムに記録する概念を含む。
【0032】
クライアント120に送信されたFlashコンテンツデータは、クライアント120上で動作するブラウザへのアドオン(またはプラグイン)として実行される。具体的には、ブラウザには、Flashコンテンツを実行するソフトウェアコンポーネントであるアドオンプログラムが拡張機能として組み込まれており、当該アドオンプログラムにより、Flashコンテンツデータが実行される。なお、Flashコンテンツはいわば動画の一種とみなすこともできるので、Flashコンテンツデータの実行を、Flashコンテンツデータの再生と言い換えることもできる。
【0033】
また、要求取得部220は、Flashコンテンツデータに従って処理を実行しているクライアント120から、コンテンツの要求を取得する。具体的には、要求取得部220は、Flashコンテンツデータに従って処理を実行しているクライアント120から、社内サーバ110が提供するWebコンテンツの要求を取得する。より具体的には、Flashコンテンツデータには、社内サーバ110が提供するWebコンテンツの場所を示すリンク情報が含まれている。要求取得部220は、クライアント120上で動作しているブラウザ上でリンク情報が選択されることでクライアント120から発行されるHTTPリクエストを、Webコンテンツの要求として取得する。
【0034】
要求取得部220が、社内サーバ110が提供するWebコンテンツの要求を取得した場合に、コンテンツ要求生成部230は、外部の社内サーバ110にWebコンテンツを要求するHTTPリクエストを生成する。コンテンツ要求生成部230が生成したHTTPリクエストは、外部サーバ通信部240により社内サーバ110に送信される。外部サーバ通信部240は、社内サーバ110と通信して、社内サーバ110が提供するWebコンテンツを取得する。
【0035】
コンテンツ取得部250は、要求取得部220がコンテンツの要求を取得した場合に、コンテンツを外部のサーバから取得する。具体的には、コンテンツ取得部250は、外部サーバ通信部240が取得した通信データからWebコンテンツを抽出する。
【0036】
データ生成部260は、要求されたWebコンテンツと、当該Webコンテンツを読み込んだブラウザへのアクセスイベントに応じて実行される、ユーザによるコンテンツへのアクセスを防止するためのイベント処理コードとを含むWebコンテンツデータを生成する。具体的には、データ生成部260は、コンテンツ取得部250が取得したWebコンテンツに当該イベント処理コードを埋め込むことにより、Webコンテンツデータを生成する。このように、データ生成部260は、要求取得部220がコンテンツの要求を取得した場合に、Webコンテンツデータを生成する。なお、埋め込みコード記憶部280は、イベント処理コードを記憶しており、データ生成部260は、埋め込みコード記憶部280が記憶しているイベント処理コードをWebコンテンツに埋め込むことにより、Webコンテンツデータを生成する。データ生成部260が生成したWebコンテンツデータは、クライアント通信部210によりクライアント120に送信される。
【0037】
以上説明したように、サーバ100は、上記判定コードを含むFlashコンテンツおよびイベント処理コードが埋め込まれたWebコンテンツをクライアント120に提供する。これにより、クライアント120上で動作するブラウザでJavaScriptの設定が無効にされたことを検出でき、クライアント120のユーザによる所定のキー操作をイベント処理コードにより確実に禁止することができる。
【0038】
なお、記録媒体90は、サーバ100用のプログラムを記憶している。記録媒体90が記憶しているプログラムは、本実施形態に係るサーバ100として機能するコンピュータなどの電子情報処理装置に提供される。当該コンピュータが有するCPUは、当該プログラムの内容に応じて動作して、当該コンピュータの各部を制御する。CPUが実行するプログラムは、図1以後の図に関連して説明されるサーバ100などとして、当該コンピュータを機能させる。
【0039】
記録媒体90としては、CD−ROMの他に、DVDまたはPD等の光学記録媒体、MOまたはMDなどの光磁気記録媒体、テープ媒体またはハードディスク装置などの磁気記録媒体、半導体メモリ、磁気メモリなどを例示することができる。また、専用通信ネットワークあるいはインターネットに接続されたサーバシステムに設けたハードディスクまたはRAM等の記憶装置が、記録媒体90として機能することもできる。
【0040】
図3は、サーバ100、クライアント120、および社内サーバ110の処理シーケンスの一例を示す。S302において、クライアント120は、ユーザの操作に応じて、Flashコンテンツをクライアント120に要求する。データ生成部260は、当該要求へのレスポンスとして、コンテンツ記憶部270が記憶しているFlashコンテンツをクライアント120に返信する(S304)。クライアント120は、受信したFlashコンテンツをブラウザのアドオンで再生することにより、Flashコンテンツを表示する(S306)。
【0041】
Flashコンテンツには、社内サーバ110が提供するWebコンテンツへのリンク情報が含まれている。ユーザが当該リンク情報をマウス操作などで選択すると、クライアント120は、リンク情報で示されるWebコンテンツを要求するHTTPリクエストを、サーバ100を宛先として送信する(S308)。サーバ100では、要求取得部220が当該HTTPリクエストを受け取った場合に、コンテンツ要求生成部230は、送信元をサーバ100、宛先を社内サーバ110として、Webコンテンツを要求するHTTPリクエストを生成する。コンテンツ要求生成部230が生成したHTTPリクエストは、外部サーバ通信部240により社内サーバ110に送信される(S310)。
【0042】
社内サーバ110は、サーバ100から受信したHTTPリクエストに応じて、要求されたWebコンテンツをサーバ100に送信する(S312)。サーバ100では、データ生成部260により、社内サーバ110から取得したWebコンテンツに、イベント処理コードが埋め込まれる(S314)。クライアント通信部210は、イベント処理コードが埋め込まれたWebコンテンツを、送信元をサーバ100、宛先をクライアント120として、クライアント120に送信する。
【0043】
クライアント120は、Flashコンテンツ内のActionScriptで記述されたコードに従って、サーバ100から受信したイベント処理コードが埋め込まれたWebコンテンツを、新たなウィンドウを生成して表示する。これにより、クライアント120は、Flashコンテンツを再生しているブラウザ・ウィンドウと、社内サーバ110が提供するWebコンテンツを表示するブラウザ・ウィンドウとを表示する。
【0044】
クライアント120上で動作するブラウザにおいてJavaScriptが有効に設定されている場合に、社内サーバ110が提供するWebコンテンツを表示しているブラウザ・ウィンドウに対して所定のユーザ操作がなされると、その操作はイベント処理コードによりフックされる。このように、イベント処理コードは、ブラウザにおいてアクセスイベントを生じさせるユーザ操作をフックして、ブラウザによる規定の処理に替えて実行される。このため、ブラウザが当該ユーザ操作に対して定めている規定の処理は実行されない。
【0045】
一方、Flashコンテンツを再生しているブラウザ・ウィンドウの存在により、ActionScriptで記述された判定コードによって、ブラウザにおいてJavaScriptが有効に設定されているか否かが継続的に判定される。したがって、ブラウザにおいてJavaScriptが無効に設定された場合には、そのことが検出される。なお、Flashコンテンツには、判定コードの他に、アクセスイベントに応じてイベント処理コードが実行されない旨が判定コードにより判定された場合に、ブラウザによるユーザへのコンテンツの提供を停止させる制御コードが含まれていてよい。制御コードには、Webコンテンツを表示しているブラウザの画面を制御するActionScriptのコードが含まれていてよい。
【0046】
より具体的には、制御コードには、アクセスイベントに応じてイベント処理コードが実行されない旨が判定コードの実行により判定された場合に、Webコンテンツを表示しているブラウザの画面を書き換える画面制御コードが含まれてよい。例えば、画面制御コードの実行により、社内サーバ110のWebコンテンツを表示しているブラウザの画面は、JavaScriptを有効に設定する操作を促すヘルプ画面で強制的に書き換えられる。他にも、制御コードには、イベント処理コードが実行されない旨が判定コードの実行により判定された場合に、Webコンテンツを表示しているブラウザの画面を閉じさせる画面制御コードが含まれてよい。これにより、JavaScriptが無効にされた場合には、社内サーバ110が提供するWebコンテンツは強制的に閉じられる。このため、ユーザがJavaScriptを無効にしてWebコンテンツからデータを抽出しようとする行為を防止することができる。
【0047】
図4は、クライアント120上で動作するブラウザが表示するウィンドウの一例を示す。ウィンドウ400は、図3のS306のステップにおいてブラウザが表示するFlashコンテンツの一例を示す。Flashコンテンツは、ブラウザへのアドオンプログラムにより再生され、再生結果はブラウザに表示される。
【0048】
ブラウザは、Flashコンテンツを再生することにより、ウィンドウ400内にアイコン410a−fを表示する。ウィンドウ400内のアイコン410a−eがマウスによりクリックされると、それぞれ受信メール、メールボックス、新規メール、予定表、アドレス帳、および設定変更の各機能を実行するコードが実行される。それぞれのアイコン410がクリックされた場合の動作は、Flashコンテンツに含まれるActionScriptのコードで定められる。
【0049】
ここで、アイコン410fがクリックされると、Webアプリケーションが立ち上がる。具体的には、アイコン410fがクリックされると、アイコン410fへのクリック操作に対応づけられたActionScriptのコードが実行され、社内サーバ110が提供するWebアプリケーションのWebコンテンツを要求するリクエストがサーバ100に送信される。ブラウザは、Webコンテンツを受信した場合に、新たに生成されたウィンドウ420にWebコンテンツを表示する。
【0050】
ウィンドウ420は、Webアプリケーションにより提供されたWebコンテンツを表示したブラウザの画面の一例を示す。ブラウザは、社内サーバ110が生成したWebコンテンツを解釈して、顧客情報などのテキストデータ430a、bをウィンドウ420内に表示する。クライアント120のユーザは、クライアント120が有するマウス、キーボードなどの入力デバイスを操作して、ウィンドウ420内に表示されたテキストデータ430を選択することができる。
【0051】
ここで、クライアント120では、ソフトウェアコンポーネント間でデータを共用することを一つの目的として、OSまたはOS上で動作するソフトウェアコンポーネントの機能により、選択されたデータをクリップボード等の共通のメモリ領域に記憶させる操作が定められている。例えば、データが選択された状態でキーボードのコントロール・キーおよび"C"キーが共に押下された場合に、選択されたデータは共通のメモリ領域に記憶され少なくとも一時的に保持される。
【0052】
一方、ウィンドウ420には、入力デバイスによる所定の操作の一例として、キーボードのコントロール・キーおよび"C"キーが共に押下する操作をフックするJavaScriptのコードが組み込まれたWebコンテンツが表示されている。このため、ウィンドウ420内で選択したテキストデータをクリップボードにコピーすべく、ウィンドウ420が選択された状態でユーザが入力デバイスで当該キー操作をすると、ブラウザが提供するクリップボードへの記憶機能ではなく、ブラウザは当該JavaScriptのコードを実行する。このため、顧客情報などの機密データがクリップボードにコピーされることを防ぐことができる。したがって、ウィンドウ420内に表示されたデータを他のソフトウェアコンポーネントで不正に利用されることを未然に防ぐことができる。
【0053】
また、ウィンドウ400に表示されたFlashコンテンツには、ブラウザにおいてJavaScriptが有効に設定されているか否かを継続的に判定するActionScriptのコードが含まれている。ウィンドウ400の存在により、JavaScriptが無効にされたことを検出することができる。このため、データをクリップボードにコピーすべくユーザがJavaScriptを無効に設定すると、当該判定コードによりその行為が検出される。
【0054】
また、Flashコンテンツには、Flashコンテンツを再生しているウィンドウ400が閉じられた場合に、Webコンテンツを表示しているウィンドウ420を強制的に閉じるActionScriptコードが含まれてよい。これにより、ウィンドウ400が閉じられた場合にウィンドウ420を強制的に閉じることができ、JavaScriptの無効設定を検出できない状態でウィンドウ420が開かれたままになってしまうことを防ぐことができる。
【0055】
図5は、サーバ100が生成するWebコンテンツの一例を示す。サーバ100は、イベント処理コード530を含むヘッダ部510と、本文520とを含む、HTMLで記載されたWebコンテンツデータを生成する。具体的には、社内サーバ110からは、イベント処理コード530を含まないWebコンテンツがサーバ100に提供され、サーバ100においてイベント処理コード530がヘッダ部510に埋め込まれる。イベント処理コード530は、サーバ100内の埋め込みコード記憶部280に予め記憶され、データ生成部260においてWebコンテンツに埋め込まれる。そして、イベント処理コード530が埋め込まれたWebコンテンツデータは、サーバ100からクライアント120に送信される。
【0056】
図示されるように、イベント処理コード530としては、サーバ100が保持している"ConnectONE.js"という名前のファイルに記載されたコードを組み込む旨の記述形式をとることができる。ファイル"ConnectONE.js"には、JavaScriptでイベント処理コードの実体が記述されており、クライアント120は、当該ファイルに記載されたイベント処理コードを読み込み、当該コードに従って動作する。
【0057】
ここで、イベント処理コードとして、キーイベントの発生をフックするキーイベント関数が記述されてよい。キーイベント関数は、発生したキーイベントを取得して、発生したキーイベントが予め定められた種類のイベントである場合に、False値を返却する関数であってよい。また、キーイベント関数は、発生したキーイベントが予め定められた種類以外のイベントである場合に、True値を返却する関数であってよい。予め定められた種類のキーイベントとは、複数のキーイベントの組み合わせの種類であってもよい。
【0058】
一例として、キーイベント関数は、発生したキーイベントが、クリップボードコピーの操作が割り当てられているコントロール・キーと"C"キーとの組み合わせの押下イベントである場合に、False値を返却してよい。このため、当該イベントが発生した場合には、ブラウザを介して本来実行されるクリップボードコピー機能は実行されずに終了する。このため、選択されたデータはクリップボードにコピーされることはない。他にも、キーイベント関数は、所定のメッセージをポップアップ表示して終了する関数であってよい。所定のメッセージとしては、「コピー・ペースト機能は禁止されています」等の警告メッセージを例示することができる。
【0059】
クリップボードコピーの操作の他、禁止されるべきキーイベントとしては、クライアント120のローカルリソースにコンテンツを保存するキーイベント、ウィンドウ画面をキャプチャするキーイベント、ウィンドウ画面をプリントするキーイベントなどを例示することができる。ここで、プリントとは、プリンタへの印刷出力および電子データとしてのプリント出力を含む概念とする。また、キーイベントとは、キーボードの押下イベントの他に、マウスのクリックイベントを含む概念とする。
【0060】
なお、既に説明したように、JavaScriptが有効に設定されているか否かはActionScriptのコードで判定される。しかしながら、Flashコンテンツを再生するアドオンが無効に設定されると、JavaScriptが有効に設定されているか否かを判定することができない場合がある。このため、ファイル"ConnectONE.js"には、アドオンが無効に設定されているか否かを判定するコードが含まれていてよい。また、本コードによりアドオンが無効に設定されている旨が判定された場合に、Webコンテンツを表示しているブラウザ・ウィンドウを強制的に閉じるコードがさらに含まれていてよい。これにより、JavaScriptが有効であるか否かと、Flashアドオンが有効であるか否かを、JavaScriptのコードと、ActionScriptのコードとで相互に監視することができる。
【0061】
以上に例示した埋め込みコードにより、ブラウザから情報が外部に流出してしまうことを未然に防ぐことができる。このため、サーバ100を追加することにより、社内サーバ110のWebアプリケーションに変更を加えずとも、情報が外部に漏洩しにくいWebアプリケーション環境をクライアント120に提供することができる。
【0062】
図6は、JavaScriptが有効か否かを判定する判定ルーチンにおける処理フローの一例を示す。本判定フローの実行機能は、ActionScriptのコードによりクライアント120に組み込まれ、クライアント120が各ステップを実行する。
【0063】
S602において、クリップボードに所定値を書き込むJavaScript関数をブラウザに実行させる。本ステップの機能は、JavaScriptの関数をコールするActionScriptのサブルーチンを用いて実装される。例えば、Flashコンテンツをリンクとして含むHTMLドキュメントに、引数で与えられた値をクリップボードに記憶するJavaScriptの関数を組み込んでおく。そして、ActionScriptでは、当該JavaScriptの関数と当該関数の引数となる所定値とを指定して、上記サブルーチンを呼び出す。ここで、所定値は、Flashコンテンツに組み込まれた固定値であってよいが、上記サブルーチンを呼び出す度に生成される、実質的にランダムな値であってよい。
【0064】
そして、S604において、クリップボードに書き込まれている値を取得するJavaScriptを、ブラウザに実行させる。そして、S606において、JavaScriptの実行結果を戻り値で取得する。具体的には、Flashコンテンツをリンクとして含むHTMLドキュメントに、クリップボードに記憶されている値をクリップボードから読み出して、読み出した値を返却するJavaScriptの関数を組み込んでおく。そして、ActionScriptでは、当該JavaScriptの関数を指定して、上記サブルーチンを呼び出すことで、クリップボードに記憶された値を戻り値で取得する。
【0065】
そして、S608において、S606で取得した値が書き込んだ値と一致しているか否かを判断する。一致している場合には、本判定ルーチンを終了する。一致していない場合には、現在表示しているWebコンテンツの画面を、所定の画面に書き換える。所定の画面とは、上述したヘルプ画面であってよい。本判定ルーチンが所定の時間間隔で実行されることにより、ブラウザにおいてJavaScriptが有効であるか否かが継続的にチェックされる。
【0066】
なお、本図のS602〜S604では、JavaScriptによるクリップボード操作を通じた処理を例示した。この処理は、JavaScriptが有効に設定されているか否かを判定する処理の一例に過ぎない。本クリップボード操作を通じた処理以外にも、JavaScriptの処理系で実行されるコードをActionScriptから実行させ、その実行結果に基づく判定処理を用いることができる。
【0067】
すなわち、ActionScriptによる判定コードは、上述したイベント処理コードを実行するコード処理系と同じコード処理系でブラウザに所定のコードを実行させる実行コードと、所定のコードの実行結果に基づき、判定を行う判定実行コードとを含む。具体的には、本図のS602の処理のように、実行コードは、クライアント120で実行される複数のソフトウェアコンポーネント間でデータが共有される記憶領域に所定値を記憶させるコードをブラウザに実行させ、判定実行コードは、実行コードの実行後に当該記憶領域に記憶されている値に基づいて判定を行う。
【0068】
そして、S604およびS606の処理のように、判定コードは、イベント処理コードを実行するコード処理系と同じコード処理系で実行され、上述の記憶領域に記憶されている値を取得するコードを、ブラウザに実行させるデータ取得コードをさらに含む。そして、判定実行コードは、データ取得コードの実行により取得された値に基づいて、判定を行う。
【0069】
なお、本図のS602〜S606の処理では、クリップボードへの書き込み処理および読み出し処理を、ともにJavaScriptの処理系で実行させた。判定コードを実行する処理系で当該記憶領域に直接アクセスすることができる場合には、書き込み処理および読み出し処理のいずれか一方だけをJavaScriptの処理系で実行させてよい。具体的には、S604およびS606に替えて、クリップボードに直接アクセスして値を読み出しする処理を実行してもよい。他にも、S602に替えて、クリップボードに直接アクセスして所定値を書き込む処理を実行してもよい。
【0070】
本図では、ActionScriptのコードからJavaScriptのコードを実行して、JavaScriptが有効に設定されているか否かを判定する処理を例示した。逆に、JavaScriptのコードから、ActionScriptのコードまたは関数を実行して、ActionScriptを実行するアドオンが有効に設定されているか否かを判定することができる。
【0071】
以上の説明では、サーバ100がFlashコンテンツを提供するとしたが、サーバ100は、Flashコンテンツ以外に、Java(登録商標)アプレットのコンテンツを提供してもよい。Java(登録商標)アプレットのコードによっても、上述したActionScriptのコードによる機能と同様の機能を実装することができる。
【0072】
以上説明したように、システム10によれば、JavaScriptが有効に設定されているか否かを判定することができる。これにより、本実施形態を通じて説明したようにJavaScriptのコードを用いて所定のキー操作を禁止することができる。また、システム10によれば、所定のキー操作を禁止することだけでなく、以下の利点を提供することができる。
【0073】
例えば、JavaScriptが動作することを前提として構築されたWebアプリケーションでは、クライアント120側でJavaScriptが無効にされることで誤った処理をしてしまう可能性がある。システム10によれば、クライアント120側でJavaScriptの有効/無効を判定することができるので、JavaScriptが無効にされてWebアプリケーションが誤った処理をしてしまうことを未然に防ぐことができる。
【0074】
また、本実施形態でいうブラウザとは、ブラウジング機能を有するソフトウェアコンポーネントを含む概念であるとする。すなわち、いわゆる単体のブラウザ・ソフトウェアとして提供されるソフトウェアコンポーネントだけでなく、ワードプロセッサなどの種々のソフトウェアコンポーネントにブラウジング・エンジンが組み込まれるなどして、いわゆるブラウザ・ソフトウェアとして機能するソフトウェアコンポーネントも、本実施形態でいうブラウザに含まれる。
【0075】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【0076】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【0077】
10 システム
20 社内ネットワーク
90 記録媒体
100 サーバ
110 社内サーバ
120 クライアント
180 通信回線
210 クライアント通信部
220 要求取得部
230 コンテンツ要求生成部
240 外部サーバ通信部
250 コンテンツ取得部
260 データ生成部
270 コンテンツ記憶部
280 埋め込みコード記憶部
400 ウィンドウ
410 アイコン
420 ウィンドウ
430 テキストデータ
510 ヘッダ部
520 本文
530 イベント処理コード

【特許請求の範囲】
【請求項1】
端末上で動作するブラウザによりユーザに提供されるべきコンテンツと、ユーザによる前記ブラウザに対する前記コンテンツへのアクセスイベントに応じて実行されユーザによる前記コンテンツへのアクセスを防止するイベント処理コードとを含む第1コンテンツデータを前記端末に送信するサーバであって、
前記端末上で動作するブラウザへのアドオンとして実行され、前記アクセスイベントに応じて前記イベント処理コードが実行されるか否かを判定する判定コードと、前記アクセスイベントに応じて前記イベント処理コードが実行されない旨が前記判定コードにより判定された場合に、前記ブラウザによるユーザへの前記コンテンツの提供を停止させる制御コードとを含む第2コンテンツデータを、前記端末に送信するデータ送信部と、
前記第2コンテンツデータに従って処理を実行している前記端末から、前記コンテンツの要求を取得する要求取得部と、
前記要求取得部が前記コンテンツの要求を取得した場合に、要求されたコンテンツと、当該コンテンツを読み込んだ前記ブラウザへの前記アクセスイベントに応じて実行されるべき前記イベント処理コードとを含む前記第1コンテンツデータを生成するデータ生成部と
を備えるサーバ。
【請求項2】
前記要求取得部が前記コンテンツの要求を取得した場合に、前記コンテンツを外部のサーバから取得するコンテンツ取得部
をさらに備え、
データ生成部は、前記コンテンツ取得部が取得した前記コンテンツに前記イベント処理コードを埋め込むことにより、前記第1コンテンツデータを生成する
請求項1に記載のサーバ。
【請求項3】
前記判定コードは、
前記イベント処理コードを実行するコード処理系と同じコード処理系で前記ブラウザに所定のコードを実行させる実行コードと、
前記所定のコードの実行結果に基づいて、前記判定を行う判定実行コードと
を含む請求項1または2に記載のサーバ。
【請求項4】
前記実行コードは、前記端末で実行される複数のソフトウェアコンポーネント間でデータが共有される記憶領域に所定値を記憶させるコードを前記ブラウザに実行させ、
前記判定実行コードは、前記実行コードの実行後に前記記憶領域に記憶されている値に基づいて前記判定を行う
請求項3に記載のサーバ。
【請求項5】
前記判定コードは、前記イベント処理コードを実行するコード処理系と同じコード処理系で実行され、前記記憶領域に記憶されている値を取得するコードを、前記ブラウザに実行させるデータ取得コードをさらに含み、
前記判定実行コードは、前記データ取得コードの実行により取得された値に基づいて、前記判定を行う
請求項4に記載のサーバ。
【請求項6】
前記制御コードは、前記判定コードにより、前記アクセスイベントに応じて前記イベント処理コードが実行されない旨が判定された場合に、前記コンテンツを表示している前記ブラウザの画面を書き換える画面制御コードを含む
請求項1から5のいずれかに記載のサーバ。
【請求項7】
前記制御コードは、前記判定コードにより、前記アクセスイベントに応じて前記イベント処理コードが実行されない旨が判定された場合に、前記コンテンツを表示している前記ブラウザの画面を閉じさせる画面制御コードを含む
請求項1から5のいずれかに記載のサーバ。
【請求項8】
前記コンテンツデータは、マークアップ言語で記述されたWebコンテンツであり、前記イベント処理コードは、JavaScriptで記述されたコードである
請求項1から7のいずれかに記載のサーバ。
【請求項9】
前記第2コンテンツデータは、Flashコンテンツであり、前記判定コードは、ActionScriptで記述されたコードである
請求項8に記載のサーバ。
【請求項10】
前記アクセスイベントは、前記ブラウザで表示された前記コンテンツを出力する指示によって前記ブラウザに生じるイベントである
請求項1から9のいずれかに記載のサーバ。
【請求項11】
前記指示は、前記端末における複数のソフトウェアコンポーネント間でデータ共有される記憶領域に、前記ブラウザにより表示されたデータを記憶するユーザ指示を含む
請求項10に記載のサーバ。
【請求項12】
前記指示は、前記ブラウザによる表示内容をプリントするユーザ指示を含む
請求項10または11に記載のサーバ。
【請求項13】
前記イベント処理コードは、前記ブラウザにおいて前記アクセスイベントを生じさせるユーザ操作をフックして、前記ブラウザによる規定の処理に替えて実行される
請求項1から12のいずれかに記載のサーバ。
【請求項14】
端末上で動作するブラウザによりユーザに提供されるべきコンテンツと、ユーザによる前記ブラウザに対する前記コンテンツへのアクセスイベントに応じて実行されユーザによる前記コンテンツへのアクセスを防止するイベント処理コードとを含む第1コンテンツデータを前記端末に送信するサーバを制御する制御方法であって、サーバに、
前記ブラウザへのアドオンとして実行され、前記アクセスイベントに応じて前記イベント処理コードが実行されるか否かを判定する判定コードと、前記アクセスイベントに応じて前記イベント処理コードが実行されない旨が前記判定コードにより判定された場合に、前記ブラウザによるユーザへの前記コンテンツの提供を停止させる制御コードとを含む第2コンテンツデータを、前記端末に送信するデータ送信段階と、
前記第2コンテンツデータに従って処理を実行している前記端末から、前記コンテンツの要求を取得する要求取得段階と、
前記要求取得段階において前記コンテンツの要求が取得された場合に、要求されたコンテンツと、当該コンテンツを読み込んだ前記ブラウザへの前記アクセスイベントに応じて実行されるべき前記イベント処理コードとを含む前記第1コンテンツデータを生成するデータ生成段階と
を実行させる制御方法。
【請求項15】
端末上で動作するブラウザによりユーザに提供されるべきコンテンツと、ユーザによる前記ブラウザに対する前記コンテンツへのアクセスイベントに応じて実行されユーザによる前記コンテンツへのアクセスを防止するイベント処理コードとを含む第1コンテンツデータを端末に送信するサーバ用のプログラムであって、コンピュータを、
前記端末上で動作するブラウザへのアドオンとして実行され、前記アクセスイベントに応じて前記イベント処理コードが実行されるか否かを判定する判定コードと、前記アクセスイベントに応じて前記イベント処理コードが実行されない旨が前記判定コードにより判定された場合に、前記ブラウザによるユーザへの前記コンテンツの提供を停止させる制御コードとを含む第2コンテンツデータを、前記端末に送信するデータ送信部、
前記第2コンテンツデータに従って処理を実行している前記端末から、前記コンテンツの要求を取得する要求取得部、
前記要求取得部が前記コンテンツの要求を取得した場合に、要求されたコンテンツと、当該コンテンツを読み込んだ前記ブラウザへの前記アクセスイベントに応じて実行されるべき前記イベント処理コードとを含む前記第1コンテンツデータを生成するデータ生成部
として機能させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2011−145772(P2011−145772A)
【公開日】平成23年7月28日(2011.7.28)
【国際特許分類】
【出願番号】特願2010−4348(P2010−4348)
【出願日】平成22年1月12日(2010.1.12)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FLASH
【出願人】(506382150)株式会社コネクトワン (2)
【Fターム(参考)】