(57)【要約】【課題】ウェブアプリケーションのプログラムを悪意のある第三者による不正流用から守ることができるプログラムの実行制御方法、プログラム、記録媒体、ウェブページ、送信サーバ、クライアントおよびウェブシステムを提供する。【解決手段】本発明のプログラムの実行制御方法、プログラム、記録媒体、ウェブページ、送信サーバ、クライアントおよびウェブシステムにおいて、ウェブアプリケーションのプログラムは、低級言語により記述される、許可サーバの識別情報のリスト、判定プログラム、および、処理プログラムを含み、判定プログラムが、ウェブページのＵＲＩから抽出した送信サーバの識別情報とリストに含まれる許可サーバの識別情報とが一致するか否かを照合し、照合の結果に応じて、処理プログラムの実行を制限する。【選択図】図４
2019211849.tif 000002
【特許請求の範囲】
【請求項１】
送信サーバから送信され、クライアントにおいて受信されるウェブページに含まれ、前記クライアントのウェブブラウザにおいて実行されるウェブアプリケーションのプログラムの実行制御方法であって、
前記ウェブアプリケーションのプログラムは、低級言語により記述される、前記ウェブアプリケーションのプログラムの配信が許可された許可サーバの識別情報のリスト、前記送信サーバが前記許可サーバであるか否かを判定する判定プログラム、および、前記判定プログラム以外の処理を実行する１以上の処理プログラムを含み、
前記プログラムの実行制御方法は、前記判定プログラムが、
前記ウェブページのＵＲＩを取得する第１ステップと、
前記ウェブページのＵＲＩから前記送信サーバの識別情報を抽出する第２ステップと、
前記送信サーバの識別情報と前記リストに含まれる許可サーバの識別情報とが一致するか否かを照合する第３ステップと、
前記照合の結果に応じて、前記１以上の処理プログラムの実行を制限する第４ステップと、を含む、プログラムの実行制御方法。
【請求項２】
前記第３ステップは、前記送信サーバの識別情報と前記リストに含まれる許可サーバの識別情報とが一致する場合に、前記１以上の処理プログラムの一部または全部の実行を許可し、前記送信サーバの識別情報と前記リストに含まれる許可サーバの識別情報とが一致しない場合に、前記１以上の処理プログラムの実行を許可しない、請求項１に記載のプログラムの実行制御方法。
【請求項３】
前記第３ステップは、前記送信サーバの識別情報に応じて、前記１以上の処理プログラムの一部の実行を許可するか、前記１以上の処理プログラムの全部の実行を許可するかを決定する、請求項２に記載のプログラムの実行制御方法。
【請求項４】
前記判定プログラムは、さらに、前記送信サーバの識別情報と前記リストに含まれる許可サーバの識別情報とが一致しない場合に、前記判定プログラムの実行を強制終了させる第５ステップを含む、請求項２または３に記載のプログラムの実行制御方法。
【請求項５】
前記判定プログラムは、さらに、前記送信サーバの識別情報と前記リストに含まれる許可サーバの識別情報とが一致しない場合に、前記ＵＲＩを取得したウェブページから他のウェブページへリダイレクトさせる第５ステップを含む、請求項２または３に記載のプログラムの実行制御方法。
【請求項６】
前記第３ステップは、前記送信サーバの識別情報と前記リストに含まれる許可サーバの識別情報とが完全に一致するか否かを照合する、請求項１ないし５のいずれか一項に記載のプログラムの実行制御方法。
【請求項７】
前記リストに含まれる許可サーバの識別情報は、前記許可サーバの識別情報を表す文字列であり、
前記第３ステップは、前記送信サーバの識別情報の文字列と前記リストに含まれる許可サーバの識別情報の文字列とが一致するか否かを照合する、請求項１ないし６のいずれか一項に記載のプログラムの実行制御方法。
【請求項８】
前記リストに含まれる許可サーバの識別情報は、前記許可サーバの識別情報を表す文字列に対応するハッシュ値であり、
前記第３ステップは、前記送信サーバの識別情報から算出されるハッシュ値と前記リストに含まれる許可サーバの識別情報のハッシュ値とが一致するか否かを照合する、請求項１ないし６のいずれか一項に記載のプログラムの実行制御方法。
【請求項９】
前記リストに含まれる許可サーバの識別情報は、前記許可サーバの識別情報を表す文字列が暗号化されたものであり、
前記第３ステップは、前記送信サーバの識別情報の文字列と前記リストに含まれる許可サーバの識別情報の暗号化された文字列から復号化される許可サーバの識別情報の文字列とが一致するか否かを照合する、請求項１ないし６のいずれか一項に記載のプログラムの実行制御方法。
【請求項１０】
前記識別情報はドメイン名である、請求項１ないし９のいずれか一項に記載のプログラムの実行制御方法。
【請求項１１】
前記リストは、前記許可サーバのドメイン名およびディレクトリ名を含み、
前記第３ステップは、前記送信サーバのドメイン名およびディレクトリ名と前記リストに含まれる許可サーバのドメイン名およびディレクトリ名とが一致するか否かを照合する、請求項１０に記載のプログラムの実行制御方法。
【請求項１２】
前記第３ステップは、前記送信サーバのドメイン名のうちの組織名を含む一部のドメイン名と前記リストに含まれる許可サーバのドメイン名のうちの組織名を含む一部のドメイン名とが一致するか否かを照合する、請求項１０または１１に記載のプログラムの実行制御方法。
【請求項１３】
前記低級言語はアセンブリ言語である、請求項１ないし１２のいずれか一項に記載のプログラムの実行制御方法。
【請求項１４】
前記アセンブリ言語はWebAssemblyのアセンブリ言語である、請求項１３に記載のプログラムの実行制御方法。
【請求項１５】
請求項１ないし１４のいずれか一項に記載のウェブアプリケーションのプログラムであって、前記クライアントのウェブブラウザにおいて、前記判定プログラムの各々のステップをコンピュータに実行させる、ウェブアプリケーションのプログラム。
【請求項１６】
請求項１ないし１４のいずれか一項に記載のウェブアプリケーションのプログラムが記録されたコンピュータ読み取り可能な記録媒体であって、前記クライアントのウェブブラウザにおいて、前記判定プログラムの各々のステップをコンピュータに実行させるウェブアプリケーションのプログラムが記録された、記録媒体。
【請求項１７】
請求項１５に記載のウェブアプリケーションのプログラムを含み、前記送信サーバから送信され、前記クライアントにおいて受信され、前記クライアントのウェブブラウザにおいて表示される、ウェブページ。
【請求項１８】
請求項１５に記載のウェブアプリケーションのプログラムを含むウェブページの送信要求を前記クライアントから受信し、前記送信要求に対応する前記ウェブページを、前記送信要求を送信した前記クライアントに送信する、送信サーバ。
【請求項１９】
請求項１５に記載のウェブアプリケーションのプログラムを含むウェブページの送信要求を前記送信サーバに送信し、前記送信サーバから送信されてくる、前記送信要求に対応する前記ウェブページを受信して前記ウェブブラウザにおいて表示し、前記ウェブアプリケーションのプログラムを前記ウェブブラウザにおいて実行する、クライアント。
【請求項２０】
請求項１８に記載の１以上の送信サーバと、請求項１９に記載の１以上のクライアントと、を備える、ウェブシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信サーバから送信され、クライアントにおいて受信されるウェブページに含まれ、クライアントのウェブブラウザにおいて実行されるウェブアプリケーションのプログラムの実行制御方法、プログラム、記録媒体、ウェブページ、送信サーバ、クライアントおよびウェブシステムに関する。
【背景技術】
【０００２】
例えば、画像（写真）の補正処理等の画像処理を行う場合、従来は、ユーザが画像処理を行う専用プログラムをクライアントにインストールし、その専用プログラムを利用して画像処理が行われていた。あるいは、図８の概念図に示すように、ユーザが画像をクライアント３４から画像処理の専用サーバ３２へアップロードし、専用サーバ３２において画像処理プログラムにより画像処理が行われた後、画像処理後の画像が専用サーバ３２からクライアント３４にダウンロードされていた。
【０００３】
しかし、専用プログラムを使用する手法は、専用プログラムをクライアントにインストールするのが面倒であるという理由から、ユーザが専用プログラムを使用するのを躊躇する場合があった。また、専用サーバ３２を利用する手法では、画像のアップロードおよびダウンロードをする必要があるため、応答性が低く、画像のアップロードおよびダウンロードのための通信コストの他、専用サーバ３２も必要であり、コストが高いという問題があった。
【０００４】
これに対し、現在では、クライアントのウェブブラウザにおいて、画像処理のためのウェブアプリケーションのプログラムを使用してウェブブラウザにおいて画像処理を行うことができるようになってきた。
【０００５】
この手法は、図９の概念図に示すように、ユーザがクライアント３４のウェブブラウザにおいて画像処理プログラムにより画像処理を行うことができるため、画像のアップロードおよびダウンロードが不要であり、応答性が高いという利点がある。また、画像のアップロードおよびダウンロードのための通信コストの他、画像処理を行うための専用サーバ３２も不要であるため、コストが低いという利点がある。
【０００６】
しかし、ウェブアプリケーションのプログラムをウェブブラウザ上で動作させる手法の場合、図１０に示すように、ウェブページを閲覧可能なユーザであれば誰でも、ウェブアプリケーションのプログラムを含むウェブページを、ウェブページの送信サーバ４２からクライアント３４にダウンロードすることができる。そのため、悪意のある第三者によって、ウェブページからウェブアプリケーションのプログラムが抜き出されて盗難され、不正流用されるという危険性があった。例えば、悪意のある第三者の送信サーバ５２を使用して、不正流用されたウェブアプリケーションのプログラムが配信（送信）される。
【０００７】
ここで、本発明に関連性があると考えられる先行技術文献として、特許文献１〜４がある。
【０００８】
特許文献１には、送信元識別子が関連付けされたアプリケーション・プログラムを送信元コンピュータから受信し、送信元識別子に基づいて、アプリケーション・プログラムを使用するサーバがアクセスできる資源を判定してアクセス特権を許可し、サーバのメモリ内の決められた所定の位置にアプリケーション・プログラムをロードする方法等が記載されている。
【０００９】
特許文献２には、抽象化を有するサーバサイドプログラムを生成し、抽象化を含むサーバサイドプログラムをセキュリティ基準に関して安全な方法で実行するように保証される目的コードに変換することによって、サーバサイドプログラムをコンパイルするものであって、コンパイル中にセキュリティ基準を強制実行するようにセキュリティ検査を挿入する方法等が記載されている。
【００１０】
特許文献３には、起動時またはバックグラウンド処理からの復帰時に、オペレーティングシステムに対してオペレーティングシステムが組込んだデータの検査結果を要求し、その検査結果が、データが正規ではないことを示す場合に、所定の画面の表示を禁止して、正規のデータをオペレーティングシステムに組込む、アプリケーションプログラムが記載されている。
【００１１】
特許文献４には、アプリケーションの起動が検出された場合、そのアプリケーションが、利用制限の対象とされた制限対象アプリケーションか否かを判定し、制限対象アプリケーションであると判定された場合、所定のメッセージ画面を繰り返しまたは継続的に表示させて、制限対象アプリケーションを実質的に利用することができない状態にする、アプリケーションの利用制限用プログラムが記載されている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特表２００２−５０３３６４号公報
【特許文献２】特許第５４０９６２０号公報
【特許文献３】国際公開第２０１５／１９０３７１号
【特許文献４】特開２０１６−１６２２６３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
本発明の目的は、ウェブアプリケーションのプログラムを悪意のある第三者による不正流用から守ることができるプログラムの実行制御方法、プログラム、記録媒体、ウェブページ、送信サーバ、クライアントおよびウェブシステムを提供することにある。
【課題を解決するための手段】
【００１４】
上記目的を達成するために、本発明は、送信サーバから送信され、クライアントにおいて受信されるウェブページに含まれ、クライアントのウェブブラウザにおいて実行されるウェブアプリケーションのプログラムの実行制御方法であって、
ウェブアプリケーションのプログラムは、低級言語により記述される、ウェブアプリケーションのプログラムの配信が許可された許可サーバの識別情報のリスト、送信サーバが許可サーバであるか否かを判定する判定プログラム、および、判定プログラム以外の処理を実行する１以上の処理プログラムを含み、
プログラムの実行制御方法は、判定プログラムが、
ウェブページのＵＲＩを取得する第１ステップと、
ウェブページのＵＲＩから送信サーバの識別情報を抽出する第２ステップと、
送信サーバの識別情報とリストに含まれる許可サーバの識別情報とが一致するか否かを照合する第３ステップと、
照合の結果に応じて、１以上の処理プログラムの実行を制限する第４ステップと、を含む、プログラムの実行制御方法を提供する。
【００１５】
ここで、第３ステップは、送信サーバの識別情報とリストに含まれる許可サーバの識別情報とが一致する場合に、１以上の処理プログラムの一部または全部の実行を許可し、送信サーバの識別情報とリストに含まれる許可サーバの識別情報とが一致しない場合に、１以上の処理プログラムの実行を許可しないことが好ましい。
【００１６】
また、第３ステップは、送信サーバの識別情報に応じて、１以上の処理プログラムの一部の実行を許可するか、１以上の処理プログラムの全部の実行を許可するかを決定することが好ましい。
【００１７】
判定プログラムは、さらに、送信サーバの識別情報とリストに含まれる許可サーバの識別情報とが一致しない場合に、判定プログラムの実行を強制終了させる第５ステップを含むことが好ましい。
【００１８】
判定プログラムは、さらに、送信サーバの識別情報とリストに含まれる許可サーバの識別情報とが一致しない場合に、ＵＲＩを取得したウェブページから他のウェブページへリダイレクトさせる第５ステップを含むことが好ましい。
【００１９】
また、第３ステップは、送信サーバの識別情報とリストに含まれる許可サーバの識別情報とが完全に一致するか否かを照合することが好ましい。
【００２０】
また、リストに含まれる許可サーバの識別情報は、許可サーバの識別情報を表す文字列であり、
第３ステップは、送信サーバの識別情報の文字列とリストに含まれる許可サーバの識別情報の文字列とが一致するか否かを照合することが好ましい。
【００２１】
また、リストに含まれる許可サーバの識別情報は、許可サーバの識別情報を表す文字列に対応するハッシュ値であり、
第３ステップは、送信サーバの識別情報から算出されるハッシュ値とリストに含まれる許可サーバの識別情報のハッシュ値とが一致するか否かを照合することが好ましい。
【００２２】
また、リストに含まれる許可サーバの識別情報は、許可サーバの識別情報を表す文字列が暗号化されたものであり、
第３ステップは、送信サーバの識別情報の文字列とリストに含まれる許可サーバの識別情報の暗号化された文字列から復号化される許可サーバの識別情報の文字列とが一致するか否かを照合することが好ましい。
【００２３】
また、識別情報はドメイン名であることが好ましい。
【００２４】
また、リストは、許可サーバのドメイン名およびディレクトリ名を含み、
第３ステップは、送信サーバのドメイン名およびディレクトリ名とリストに含まれる許可サーバのドメイン名およびディレクトリ名とが一致するか否かを照合することが好ましい。
【００２５】
また、第３ステップは、送信サーバのドメイン名のうちの組織名を含む一部のドメイン名とリストに含まれる許可サーバのドメイン名のうちの組織名を含む一部のドメイン名とが一致するか否かを照合することが好ましい。
【００２６】
また、低級言語はアセンブリ言語であることが好ましい。
【００２７】
また、アセンブリ言語はWebAssemblyのアセンブリ言語であることが好ましい。
【００２８】
また、本発明は、上記のウェブアプリケーションのプログラムであって、クライアントのウェブブラウザにおいて、判定プログラムの各々のステップをコンピュータに実行させる、ウェブアプリケーションのプログラムを提供する。
【００２９】
また、本発明は、上記のウェブアプリケーションのプログラムが記録されたコンピュータ読み取り可能な記録媒体であって、クライアントのウェブブラウザにおいて、判定プログラムの各々のステップをコンピュータに実行させるウェブアプリケーションのプログラムが記録された、記録媒体を提供する。
【００３０】
また、本発明は、上記のウェブアプリケーションのプログラムを含み、送信サーバから送信され、クライアントにおいて受信され、クライアントのウェブブラウザにおいて表示される、ウェブページを提供する。
【００３１】
また、本発明は、上記のウェブアプリケーションのプログラムを含むウェブページの送信要求をクライアントから受信し、送信要求に対応するウェブページを、送信要求を送信したクライアントに送信する、送信サーバを提供する。
【００３２】
また、本発明は、上記のウェブアプリケーションのプログラムを含むウェブページの送信要求を送信サーバに送信し、送信サーバから送信されてくる、送信要求に対応するウェブページを受信してウェブブラウザにおいて表示し、ウェブアプリケーションのプログラムをウェブブラウザにおいて実行する、クライアントを提供する。
【００３３】
また、本発明は、上記の１以上の送信サーバと、上記の１以上のクライアントと、を備える、ウェブシステムを提供する。
【発明の効果】
【００３４】
本発明によれば、リスト、判定プログラムおよび１以上の処理プログラムが、人間が理解しにくい低級言語によって記述されている。従って、悪意のある第三者がウェブアプリケーションのプログラムを解析するのが難しく、改竄が困難であり、ウェブページからウェブアプリケーションのプログラムを抜き出して盗難するのが困難であるため、ウェブアプリケーションのプログラムを悪意のある第三者による不正流用から守ることができる。
【図面の簡単な説明】
【００３５】
【図１】本発明に係るウェブシステムの構成を表す一実施形態のブロック図である。
【図２】図１に示すウェブシステムの動作を表す一実施形態のフローチャートである。
【図３】図２に続く、ウェブシステムの動作を表す一実施形態のフローチャートである。
【図４】本発明に係るウェブアプリケーションのプログラムの構成を表す一実施形態の概念図である。
【図５】ドメイン名が一致する場合のウェブシステムの動作を表す一実施形態の概念図である。
【図６】ドメイン名が一致しない場合のウェブシステムの動作を表す一実施形態の概念図である。
【図７】ウェブアプリケーションのプログラムの別の構成を表す一例の概念図である。
【図８】従来のウェブシステムの動作を表す一例の概念図である。
【図９】従来のウェブシステムの動作を表す別の例の概念図である。
【図１０】ウェブアプリケーションが不正流用される際の動作を表す一例の概念図である。
【発明を実施するための形態】
【００３６】
以下に、添付の図面に示す好適実施形態に基づいて、本発明のプログラムの実行制御方法、プログラム、記録媒体、ウェブページ、送信サーバ、クライアントおよびウェブシステムを詳細に説明する。
【００３７】
図１は、本発明に係るウェブシステムの構成を表す一実施形態のブロック図である。図１に示すウェブシステム１０は、送信サーバ１２と、１以上のクライアント１４と、を備えている。ウェブシステム１０は、インターネット等の通信回線１６を介して、送信サーバ１２から送信され、クライアント１４において受信されるウェブページをクライアント１４のウェブブラウザにおいて表示し、さらに、ウェブページに含まれる本発明に係るウェブアプリケーションのプログラムをウェブブラウザにおいて実行する。
【００３８】
送信サーバ１２は、ウェブページの送信要求をクライアント１４から受信し、送信要求に対応するウェブページ（ウェブページのデータ）を、送信要求を送信したクライアント１４に送信する。送信サーバ１２としては、ウェブページを配信する機能を備える各種のコンピュータ、例えばワークステーション等を例示することができる。なお、１以上の送信サーバ１２を備えていてもよい。
【００３９】
一方、クライアント１４は、ウェブページの送信要求を送信サーバ１２に送信し、送信サーバ１２から送信されてくる、送信要求に対応するウェブページを受信してウェブブラウザにおいて表示し、さらにウェブページに含まれる本発明のウェブアプリケーションのプログラムをウェブブラウザにおいて実行する。クライアント１４は、ウェブページの送信要求として、ウェブページのアドレスを表すＵＲＩ（Uniform Resource Identifier）を送信サーバ１２へ送信する。クライアント１４としては、ウェブページを閲覧する機能を備える各種のコンピュータ、例えばデスクトップＰＣ（Personal Computer：パーソナルコンピュータ）、ノートＰＣ、タブレットＰＣ、スマートフォン等を例示することができる。
【００４０】
ＵＲＩは、例えば「http://www.xxx.co.jp/yyy/」のように表記される。ＵＲＩにおいて、「http」は通信プロトコルを表し、「www」はホスト名を表す。「xxx.co.jp」はドメイン名を表し、そのうちの「xxx」は組織名、「co」は、組織の種別を表すセカンドレベルドメイン名、「jp」は、国、地域、使用目的、および使用する組織等を表すトップレベルドメイン名である。「yyy」はディレクトリ名を表す。なお、ＵＲＩの中には、「http://xxx.co.jp/」のようにホスト名がないもの、および「http://www.xxx.jp/」のようにセカンドレベルドメイン名がないものなどもある。
【００４１】
ウェブページは、クライアント１４からの送信要求に応じて送信サーバ１２から送信され、クライアント１４において受信され、クライアント１４のウェブブラウザにおいて表示される。ウェブページには、図４の概念図に示すように、ハイパーテキストを記述するためのマークアップ言語であるHTML（HyperText Markup Language）によって記述されたプログラム（以下、HTMLのプログラムともいう）１８、後述するスクリプト言語であるJavaScript（登録商標、以下同様）によって記述されたプログラム（以下、JavaScriptのプログラムともいう）２０、画像等の他、本発明に係るウェブアプリケーションのプログラム、つまり、後述するWebAssemblyのアセンブリ言語によって記述されたプログラム（以下、WebAssemblyのプログラムともいう）２２等が含まれている。
【００４２】
本発明のウェブアプリケーションのプログラムは、クライアント１４のウェブブラウザにおいて実行されるものであり、図４の概念図に示すように、本発明のウェブアプリケーションのプログラムの配信（送信）が許可された許可サーバ（送信サーバ）のドメイン名のリスト２４、送信サーバ１２が許可サーバであるか否かを判定する判定プログラム２６、および、画像処理等のように、判定プログラム２６以外の処理を実行する１以上の処理プログラム２８等を含む。また、本発明のウェブアプリケーションのプログラムのうち、少なくともリスト２４、判定プログラム２６および１以上の処理プログラム２８は、低級言語（低水準言語）により記述されている。
【００４３】
なお、許可サーバのドメイン名は、許可サーバのドメイン名を表す文字列（テキストフォーマット）でもよいし、許可サーバのドメイン名を表す文字列に対応するハッシュ値でもよいし、あるいは許可サーバのドメイン名を表す文字列が暗号化されたものでもよい。
【００４４】
低級言語は、コンピュータを動作させるためのプログラムを記述するプログラミング言語のうち、人間が理解しにくい命令セットによって記述されるプログラミング言語である。低級言語には、コンピュータが命令（バイナリフォーマット）の内容を直接理解して実行できる機械語、および機械語の命令（バイナリフォーマット）に１対１に対応する名称（ニーモニック）の命令（テキストフォーマット）によって記述されるアセンブリ言語等が含まれる。
【００４５】
これに対し、高級言語（高水準言語）は、プログラミング言語のうち、低級言語よりも人間が理解しやすい構文（テキストフォーマット）等によって記述されるプログラミング言語である。高級言語には、プログラムの動作および機能等を記述できるスクリプト言語等が含まれる。
【００４６】
また、ウェブアプリケーションのプログラムを記述するための低級言語としては、各種のアセンブリ言語が使用される。現在では、アセンブリ言語として代表的なものは、WebAssemblyのアセンブリ言語である。一方、高級言語としては、各種のスクリプト言語が使用される。現在、スクリプト言語として代表的なものは、JavaScriptのスクリプト言語である。
【００４７】
WebAssemblyは、WWW（World Wide Web）技術の標準化を推進する国際的なコミュニティであるW3C（The World Wide Web Consortium）のW3C WebAssembly Community Groupによりオープン標準として策定され、ウェブブラウザにおいて、バイナリフォーマットのウェブアプリケーションのプログラムを、機械語（ネイティブアプリケーション）レベルの速度で高速動作させることができる。
【００４８】
WebAssemblyは、代表的なウェブブラウザに標準技術として搭載されており、プラグインなどの追加のプログラムのインストールが不要である、C/C++等の他のスクリプト言語からWebAssemblyのアセンブリ言語への変換が可能であり、既存のプログラム資産を流用可能である、プログラムのサイズが小さい、オペレーティングシステムが異なるプラットフォームにおいても実行可能である、等の特徴を備えている。
【００４９】
WebAssemblyを利用することにより、従来は専用サーバおよび専用プラグイン等が必要であったアプリケーションのプログラムをウェブブラウザだけで実行させることができるようになる可能性がある。WebAssemblyの利用分野としては、ゲーム等のように、高い応答性が求められるアプリケーション、および画像処理等のように、複雑で処理に時間がかかるアプリケーションなどが想定される。
【００５０】
JavaScriptは、情報通信システムの分野における国際的な標準化団体であるEcma InternationalによりECMAScript（ECMA-262）として標準化され、ウェブページ内において、動きの要素、各種の効果およびユーザとの対話機能等を実現することができる。
【００５１】
JavaScriptによって実現される処理が複雑化すると、JavaScriptの実行速度の遅さおよびデータサイズの大きさが問題になってきた。WebAssemblyは、このようなJavaScriptの問題を解決するために開発されたものであり、アセンブリ言語によって記述されるため、スクリプト言語によって記述されるJavaScriptよりも、その実行速度が早く、かつデータサイズも小さいという特徴がある。
【００５２】
次に、図２に示すフローチャートを参照し、本発明に係るプログラムの実行制御方法に従ってウェブシステム１０の動作を説明する。まず、ウェブページがクライアント１４のウェブブラウザにおいて表示されるまでの動作を説明する。
【００５３】
ユーザにより、ウェブページのＵＲＩがクライアント１４のウェブブラウザのアドレスバーに入力される（ステップS1）。なお、ウェブページのＵＲＩは、改竄不可能である、あるいは改竄することは極めて難しいと考えられる。
【００５４】
ウェブページのＵＲＩが入力されると、そのＵＲＩが、ウェブページの送信要求としてクライアント１４から送信サーバ１２に送信され（ステップS2）、送信サーバ１２において受信される（ステップS3）。
【００５５】
ウェブページの送信要求が送信サーバ１２において受信されると、その送信要求に対応するウェブページが送信サーバ１２から送信要求を送信したクライアント１４に送信され（ステップS4）、送信要求を送信したクライアント１４において受信される（ステップS5）。
【００５６】
ウェブページがクライアント１４において受信されると、そのウェブページが、クライアント１４のウェブブラウザにおいて表示される（ステップS6）。
【００５７】
続いて、図３のフローチャートおよび図４の概念図を参照して、ウェブページがクライアント１４のウェブブラウザにおいて表示された後のウェブシステム１０の動作、つまり、本発明に係るウェブアプリケーションのプログラムの動作を説明する。
【００５８】
図３のフローチャートにおいて、左側部分は、ウェブブラウザにおける動作、つまり、HTMLのプログラム１８の動作を表す。また、中央部分は、JavaScriptのプログラム２０の動作を表し、右側部分は、WebAssemblyのプログラム２２の動作を表す。また、図４の概念図において、左側部分は、HTMLのプログラム１８の役割を表す。また、中央部分は、JavaScriptのプログラム２０の役割を表し、右側部分は、WebAssemblyのプログラム２２の役割を表す。
【００５９】
ウェブページがクライアント１４のウェブブラウザにおいて表示された後（ステップS6）、ウェブページに含まれる本発明のウェブアプリケーションのプログラム、つまり、WebAssemblyのプログラム２２が実行される。この場合、まず、JavaScriptのプログラム２０によりWebAssemblyのプログラム２２の評価プログラムの初期化が行われる（ステップS7）。
【００６０】
初期化が終了すると、判定プログラム２６が実行され、まず、ウェブブラウザのアドレスバーに入力されたウェブページのＵＲＩが取得される（ステップS8）。WebAssemblyのプログラム２２は、図４の概念図に示すように、HTMLのプログラム１８とWebAssemblyのプログラム２２との間を仲介する役割を果たすJavaScriptのプログラム２０を経由して、HTMLのプログラム１８からウェブページのＵＲＩを取得する。
【００６１】
続いて、ステップS8において取得されたウェブページのＵＲＩから送信サーバ１２のドメイン名が抽出される（ステップS9）。
【００６２】
ドメイン名が抽出されると、図４の概念図の右側部分に示すように、ステップS9において抽出された送信サーバ１２のドメイン名（実行ドメイン名）と、前述のリスト２４に含まれる許可サーバのドメイン名（許可ドメイン名）とが一致するか否かが照合される（ステップS10）。
【００６３】
ステップS10におけるドメイン名の照合の結果に応じて、前述の１以上の処理プログラム２８の実行が制限される。
【００６４】
例えば、送信サーバ１２のドメイン名とリスト２４に含まれる許可サーバのドメイン名とが一致する場合に、クライアント１４のウェブブラウザにおいて１以上の処理プログラム２８の一部または全部の実行が許可される。一方、送信サーバ１２のドメイン名とリスト２４に含まれる許可サーバのドメイン名とが一致しない場合に、クライアント１４のウェブブラウザにおいて１以上の処理プログラム２８の実行が許可されない（禁止される）。
【００６５】
その結果、送信サーバ１２のドメイン名とリスト２４に含まれる許可サーバのドメイン名とが一致しない場合（ステップS11において「NO」）に、１以上の処理プログラム２８の実行は許可されず、判定プログラム２６の実行、つまり、ウェブアプリケーションの実行が強制終了される（ステップS12）。
【００６６】
なお、判定プログラム２６の実行を強制終了させる代わりに、ＵＲＩを取得したウェブページから他のウェブページへリダイレクトさせてもよい。リダイレクトされた他のウェブページには、どこのウェブページからリダイレクトされてきたかというリダイレクト元のウェブページの情報を持たせることができるため、この情報を利用して、ウェブアプリケーションのプログラムを不正流用している、悪意のある第三者のウェブサイトを容易に特定することができる。
【００６７】
一方、送信サーバ１２のドメイン名とリスト２４に含まれる許可サーバのドメイン名とが一致する場合（ステップS11において「YES」）に、クライアント１４のウェブブラウザにおいて、１以上の処理プログラム２８の一部または全部の実行が許可される。この場合、１以上の処理プログラム２８が初期化された後（ステップS13）、ユーザが、そのユーザのクライアント１４のウェブブラウザ上において１以上の処理プログラム２８に対して操作を行うと（ステップS14）と、ユーザの操作に従って、ウェブブラウザにおいて１以上の処理プログラム２８が実行され（ステップS15）、その実行結果が、ウェブブラウザにおいて表示される（ステップS16）。
【００６８】
図５の概念図に示すように、例えばリスト２４に含まれる許可サーバのドメイン名が「fujifilm.jp」であり、送信サーバ１２のドメイン名が許可サーバのドメイン名と同じ「fujifilm.jp」であれば、クライアント１４のウェブブラウザにおいて、１以上の処理プログラム２８は実行可能である。一方、図６の概念図に示すように、送信サーバ１２のドメイン名が許可サーバのドメイン名とは異なり、例えば「bujifilm.jp」であれば、クライアント１４のウェブブラウザにおいて、１以上の処理プログラム２８は実行できない。
【００６９】
ウェブシステム１０においては、リスト２４、判定プログラム２６および１以上の処理プログラム２８が、人間が理解しにくいWebAssemblyのアセンブリ言語等の低級言語によって記述されている。従って、悪意のある第三者がウェブアプリケーションのプログラムを解析するのが難しく、改竄が困難であり、ウェブページからウェブアプリケーションのプログラムを抜き出して盗難するのが困難であるため、ウェブアプリケーションのプログラムを悪意のある第三者による不正流用から守ることができる。
【００７０】
これに対し、図７の概念図に示すように、例えばリスト２４および判定プログラム２６をJavaScriptのスクリプト言語によって記述し、１以上の処理プログラム２８をWebAssemblyのアセンブリ言語等の低級言語によって記述することが考えられる。この場合、判定プログラム２６は、人間が理解しやすいスクリプト言語によって記述されている。従って、悪意のある第三者が判定プログラム２６を解析して改竄するのが容易であり、ウェブページからウェブアプリケーションのプログラムを抜き出して盗難するのが容易であるため、ウェブアプリケーションのプログラムを悪意のある第三者による不正流用から守ることは難しい。
【００７１】
なお、送信サーバ１２のドメイン名に応じて、１以上の処理プログラム２８の一部の実行を許可するか、１以上の処理プログラム２８の全部の実行を許可するかを決定してもよい。
例えば、ドメイン名が「xxx」である場合、１以上の処理プログラム２８の一部のみの実行を許可し、ドメイン名が「zzz」である場合、１以上の処理プログラム２８の全部の実行を許可するというように、ドメイン名に応じて１以上の処理プログラム２８の一部のみまたは全部の実行を制御することができる。
【００７２】
また、リスト２４の中に、許可サーバのドメイン名およびディレクトリ名を含めておき、送信サーバ１２のドメイン名およびディレクトリ名とリスト２４に含まれる許可サーバのドメイン名およびディレクトリ名とが一致するか否かを照合してもよい。これにより、ドメイン名だけでなくディレクトリ名まで一致していなければ、ウェブアプリケーションのプログラムを配信することができないようにすることができ、悪意のある第三者がウェブアプリケーションのプログラムを解析するのを難しくすることができる。
【００７３】
例えば、ＵＲＩが「http://www.xxx.co.jp/yyy/」である場合、ドメイン名およびディレクトリ名を含めて「www.xxx.co.jp/yyy/」が一致するか否かを照合してもよい。
【００７４】
また、ドメイン名を照合する場合、送信サーバ１２のドメイン名とリスト２４に含まれる許可サーバのドメイン名とが完全に一致するか否かを照合してもよいし、あるいは送信サーバ１２のドメイン名のうちの組織名を含む一部のドメイン名とリスト２４に含まれる許可サーバのドメイン名のうちの組織名を含む一部のドメイン名とが一致するか否かを照合してもよい。
【００７５】
上記のＵＲＩの場合、例えばドメイン名である「xxx.co.jp」が完全に一致するか否かを照合してもよい。あるいは、組織名である「xxx」が一致するか否か、「xxx.co」が一致するか否か、または「xxx」および「jp」が一致するか否か等を照合してもよい。
【００７６】
また、ドメイン名を照合する場合、送信サーバ１２のドメイン名の文字列とリスト２４に含まれる許可サーバのドメイン名の文字列とが一致するか否かを照合してもよいし、送信サーバ１２のドメイン名から算出されるハッシュ値とリスト２４に含まれる許可サーバのドメイン名のハッシュ値とが一致するか否かを照合してもよいし、あるいは送信サーバ１２のドメイン名の文字列とリスト２４に含まれる許可サーバのドメイン名の暗号化された文字列から復号化される許可サーバのドメイン名の文字列とが一致するか否かを照合してもよい。ハッシュ値または暗号化された文字列を用いることにより、悪意のある第三者によって許可サーバのドメイン名が解析されるのをより困難にすることができる。
【００７７】
なお、本発明に関わる識別情報として、ドメイン名を使用する具体例を挙げて説明したが、識別情報はドメイン名に限らず、送信サーバ１２が許可サーバであるか否かを識別することができるものであれば、どのような識別情報を使用してもよい。
【００７８】
また、本発明に係るウェブアプリケーションのプログラムは、WebAssemblyのアセンブリ言語に限らず、例えば、PNaCl（Portable Native Client）等のように、各種の低級言語によって記述することができる。
【００７９】
また、本発明は、例えば画像の補正処理等の画像処理、および複数の画像をレイアウトしてフォトアルバムを作成する処理等において好適に利用可能であるが、これに限らず、各種のウェブアプリケーションのプログラムにおいても同様に適用可能である。
【００８０】
本発明の方法は、上記のウェブアプリケーションのプログラムであって、クライアント１４のウェブブラウザにおいて、判定プログラム２６の各々のステップをコンピュータに実行させるための本発明に係るウェブアプリケーションのプログラムにより実施することができる。また、本発明のウェブアプリケーションのプログラムが記録されたコンピュータ読み取り可能な記録媒体を提供することもできる。
【００８１】
以上、本発明について詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【符号の説明】
【００８２】
１０  ウェブシステム
１２、４２、５２  送信サーバ
１４、３４  クライアント
１６  通信回線
１８  HTMLのプログラム
２０  JavaScriptのプログラム
２２  WebAssemblyのプログラム
２４  許可サーバのドメイン名のリスト
２６  判定プログラム
２８  処理プログラム
３２  専用サーバ
【図１】
2019211849.tif 000003
【図２】
2019211849.tif 000004
【図３】
2019211849.tif 000005
【図４】
2019211849.tif 000006
【図５】
2019211849.tif 000007
【図６】
2019211849.tif 000008
【図７】
2019211849.tif 000009
【図８】
2019211849.tif 000010
【図９】
2019211849.tif 000011
【図１０】
2019211849.tif 000012