JP2017532615A - クラウドサフィックスプロキシおよびその方法 - Google Patents
クラウドサフィックスプロキシおよびその方法 Download PDFInfo
- Publication number
- JP2017532615A JP2017532615A JP2016539311A JP2016539311A JP2017532615A JP 2017532615 A JP2017532615 A JP 2017532615A JP 2016539311 A JP2016539311 A JP 2016539311A JP 2016539311 A JP2016539311 A JP 2016539311A JP 2017532615 A JP2017532615 A JP 2017532615A
- Authority
- JP
- Japan
- Prior art keywords
- script
- network address
- client device
- suffix
- web page
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/301—Name conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0281—Proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/561—Adding application-functional data or data for application control, e.g. adding metadata
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2101/00—Indexing scheme associated with group H04L61/00
- H04L2101/30—Types of network names
- H04L2101/355—Types of network names containing special suffixes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Library & Information Science (AREA)
- Information Transfer Between Computers (AREA)
Abstract
少なくとも1つのクラウドアプリケーションのネットワークアドレスを変更するための方法およびシステム。この方法は、少なくとも1つのクラウドアプリケーションからクライアントデバイスに送られるウェブページを受信するステップであって、ウェブページが、ランタイム中にクライアントデバイスにロードされる少なくとも1つのスクリプトを指定する、ステップと、ウェブページに1つのコードを注入するステップと、注入された1つのコードによって、少なくとも1つのスクリプトのそれぞれをロードする試みを受信するステップと、あらかじめ定義されたネットワークアドレスで少なくとも1つのスクリプトにおいて指定される各ネットワークアドレスにサフィックスを付加することによって少なくとも1つのスクリプトを変更するステップと、変更された少なくとも1つのスクリプトをクライアントデバイスに送るステップであって、クライアントデバイスでの変更された少なくとも1つのスクリプトのランタイム実行が、クライアントデバイスからクラウドアプリケーションへの今後の要求を、サフィックスを付加されたネットワークアドレスへリダイレクトさせる、ステップとを含む。
Description
関連出願の相互参照
[0001]本出願は、2014年9月12日に出願された米国仮特許出願第62/049,473号の利益を主張する。本出願はまた、その内容が参照により本明細書に組み込まれる、2014年11月12日に出願された米国特許出願第14/539,980号の一部継続出願である。
[0001]本出願は、2014年9月12日に出願された米国仮特許出願第62/049,473号の利益を主張する。本出願はまた、その内容が参照により本明細書に組み込まれる、2014年11月12日に出願された米国特許出願第14/539,980号の一部継続出願である。
[0002]本出願は一般に、通信を監視し安全にすることによって、特にサフィックスプロキシ(suffix proxy)を使用することによって、通信ネットワークおよびシステムを安全にすることに関する。
[0003]近年、ますます多くのプロバイダが、クラウドにコンピューティング環境を作成する能力を提供している。たとえば、Amazon Web Services(商標)(AWSとしても知られる)が2006年に、クラウドプラットフォーム上で実行されるアプリケーションに合わせて調整された環境全体を構成する能力をユーザに提供するサービスを開始した。一般に、そのようなサービスは、コンピューティング資源がアプリケーションの効率的な実行を支援するように利用される、スケーラブルなアプリケーションの開発を可能にする。
[0004]クラウドベースのアプリケーションを開発、提供、または場合によっては管理する組織および会社は、これらのサービスに依存し、複雑なウェブサイトから、サービスとしてのソフトウェア(SaaS:software-as-service)配信モデルとして提供されるアプリケーションおよびサービスまで、様々なタイプの環境を実現することに慣れている。そのようなサービスおよびアプリケーションは、まとめて「クラウドアプリケーション」と呼ばれる。
[0005]クラウドアプリケーションは、一般的に、ユーザがウェブブラウザを介してクライアントデバイスを使用することによってアクセスされる。クラウドアプリケーションは、とりわけ、eコマースアプリケーション、ソーシャルメディアアプリケーション、企業アプリケーション、ゲームアプリケーション、メディア共有アプリケーション、ストレージアプリケーション、ソフトウェア開発アプリケーションなどを含む。多くの個々のユーザ、会社、および企業が、ローカルにインストールされ、管理される「従来の」ソフトウェアアプリケーションの代わりにクラウドアプリケーションに注目している。たとえば、企業は、企業によって管理されるExchange(登録商標)サーバを所有するのではなく、電子メールアカウントにOffice(登録商標)356オンラインサービスを使用することができる。
[0006]企業は、クラウドベースのSaaS提供をますます採用するようになっている。これらのサービスは、様々なネットワークセキュリティリスクにさらされている。これらのネットワークを安全にするための知られているシステムは、SaaSを動作させているサーバと、ユーザによって動作されるエンドポイントとの間のトラフィックを調べることによって動作する。これらの知られているネットワークセキュリティシステムは、一般的に、システムの複雑性を増大させるエンドポイントの複雑な構成を必要とする。
[0007]さらに、多くの場合、エンドポイントは、企業の完全な制御下にないことがあり、全く管理されない、または場合によっては構成できないことがある。ユーザ制御のエンドポイントを構成および管理することに固有の難しさに加えて、ネットワークアドレスが動的に生成されるときセッション全体に対してトラフィックの捕捉(traffic captivation)を保証することが困難である。
[0008]その上、Google(登録商標)Appsプラットフォームなど、最近のウェブ/クラウドアプリケーションは、大量のクライアント側コード(JavaScript)を利用する。これは、基本的なプロキシ機能が不十分であり、クライアント側コードへのさらなる介入が必要とされるとき、サフィックスプロキシ実装をさらに困難にする可能性がある。
[0009]したがって、HTTPトラフィックの取込みおよび再構成のための従来技術の欠陥を克服する解決策を提供することが有利となる。
[0010]次に本開示のいくつかの例示的な実施形態の要約を示す。この要約は、そのような実施形態の基本的な理解をもたらすために読者の便宜のために提供され、本開示の広さを完全に定義するものではない。この要約は、検討されるすべての実施形態の包括的な概要ではなく、すべての実施形態の鍵となる要素または決定的要素を明らかにすることも、任意またはすべての実施形態の範囲を明確に述べることも意図されていない。その唯一の目的は、後に示すより詳細な説明への前置きとして、1つまたは複数の実施形態のいくつかの概念を簡単な形で提示することである。便宜のために、いくつかの実施形態という用語は、本明細書では、開示の単一の実施形態または複数の実施形態を指すのに使用され得る。
[0011]開示のいくつかの実施形態は、少なくとも1つのクラウドアプリケーションのネットワークアドレスを変更するための方法に関する。この方法は、少なくとも1つのクラウドアプリケーションからクライアントデバイスに送られるウェブページを受信するステップであって、ウェブページが、ランタイム中にクライアントデバイスにロードされる少なくとも1つのスクリプトを指定する、ステップと、ウェブページに1つのコードを注入するステップと、注入された1つのコードによって、少なくとも1つのスクリプトのそれぞれをロードする試みを受信するステップと、あらかじめ定義されたネットワークアドレスで少なくとも1つのスクリプトにおいて指定される各ネットワークアドレスにサフィックスを付加すること(suffixing)によって少なくとも1つのスクリプトを変更するステップと、変更された少なくとも1つのスクリプトをクライアントデバイスに送るステップであって、クライアントデバイスでの変更された少なくとも1つのスクリプトのランタイム実行が、クライアントデバイスからクラウドアプリケーションへの今後の要求を、サフィックスを付加されたネットワークアドレスへリダイレクトさせる、ステップとを含む。
[0012]開示のいくつかの実施形態は、少なくとも1つのクラウドアプリケーションのネットワークアドレスを変更するためのシステムに関する。このシステムは、プロセッサと、プロセッサによって実行されるとき、少なくとも1つのクラウドアプリケーションからクライアントデバイスに送られるウェブページを受信することであって、ウェブページが、ランタイム中にクライアントデバイスにロードされる少なくとも1つのスクリプトを指定する、受信することと、ウェブページに1つのコードを注入することと、注入された1つのコードによって、少なくとも1つのスクリプトのそれぞれをロードする試みを受信することと、あらかじめ定義されたネットワークアドレスで少なくとも1つのスクリプトにおいて指定される各ネットワークアドレスにサフィックスを付加することによって少なくとも1つのスクリプトを変更することと、変更された少なくとも1つのスクリプトをクライアントデバイスに送ることであって、クライアントデバイスでの変更された少なくとも1つのスクリプトのランタイム実行が、クライアントデバイスからクラウドアプリケーションへの今後の要求を、サフィックスを付加されたネットワークアドレスへリダイレクトさせる、送ることとを行うようにシステムを構成する命令を含んだメモリとを備える。
[0013]本明細書に開示される主題は、本明細書の終わりの特許請求の範囲に詳細に指摘され、明確に請求される。開示する実施形態の前述のまたは他の目的、特徴、および利点は、添付の図面と併せて行う次の詳細な説明から明らかになる。
[0018]本明細書に開示する実施形態は、本明細書中の革新的な教示の多くの有利な用途の例にすぎないことに留意することが重要である。一般に、本出願の明細書に記載することは、請求される様々な実施形態のいずれかを必ずしも限定するものではない。さらに、いくつかの記載は、いくつかの発明の特徴に適用するが、他には適用しないことがある。一般に、別段の指示がない限り、単数の要素が、一般性を失わず、複数であることがあり、逆もまた同様である。図面では、複数の図を通して同様の参照符号が同様の部分を指す。
[0019]例として、開示する様々な実施形態は、ネットワークベースのサービスとしてのソフトウェア(SaaS)とクライアントとの間のネットワークトラフィック上で動作するように構成され得る。下記でさらに詳細に説明するように、開示する実施形態は、SaaSプロバイダに向けられたネットワークアドレスの非侵入型のサフィックス付加およびサフィックス非付加(un-suffixing)を可能にする。
[0020]図1は、開示する様々な実施形態を説明するために利用されるネットワーク化されたシステム100の例示的および非限定的な図である。ネットワーク化されたシステム100は、その中で実行されるアプリケーションまたはサービスにコンピューティング資源を提供するプライベートクラウド、パブリッククラウド、またはハイブリッドクラウドであることがあるクラウドコンピューティングプラットフォーム110を含む。一実施形態では、クラウドコンピューティングプラットフォーム110は、SaaSプラットフォームであり得る。
[0021]クラウドベースのアプリケーションを開発、提供、または場合によっては管理する組織および会社は、これらのサービスに依存し、複雑なウェブサイトから、SaaS配信モデルとして提供されるアプリケーションおよびサービスまで、様々なタイプの環境を実現することに慣れてきた。そのようなサービスおよびアプリケーションは、まとめて「クラウドアプリケーション115」と呼ばれる。
[0022]クラウドアプリケーション115は、一般的に、ユーザがウェブブラウザを介してクライアントデバイスを使用することによってアクセスされる。クラウドアプリケーション115は、とりわけ、eコマースアプリケーション、ソーシャルメディアアプリケーション、企業アプリケーション、ゲームアプリケーション、メディア共有アプリケーション、ストレージアプリケーション、ソフトウェア開発アプリケーションなどを含む。多くの個々のユーザ、会社、および企業が、ローカルにインストールされ、管理される「従来の」ソフトウェアアプリケーションの代わりにクラウドアプリケーションに注目している。たとえば、企業は、企業によって管理されるExchange(登録商標)サーバを所有するのではなく、電子メールアカウントにOffice(登録商標)356オンラインサービスを使用することができる。
[0023]ネットワーク化されたシステム100はさらに、ネットワーク150に通信可能に接続された、管理ネットワークプロキシ120と、クライアントデバイス130−1〜130−Nと、サフィックスプロキシ140とを含む。ネットワーク150は、たとえば、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、インターネットなどであり得る。クライアントデバイス130のそれぞれは、たとえば、パーソナルコンピュータ、ラップトップ、タブレットコンピュータ、スマートフォン、ウェアラブルコンピューティングデバイス、または任意の他のコンピューティングデバイスを含み得る。
[0024]クライアントデバイス130は、クラウドコンピューティングプラットフォーム110において実行される1つまたは複数のクラウドアプリケーション115にアクセスするように構成される。クライアントデバイス130は、管理デバイスまたは非管理デバイスであり得る。管理デバイスは、一般には、組織のIT職員によってセキュリティ保護され、非管理デバイスはされない。上記の例を参照すると、仕事のコンピュータは管理されるデバイスであるが、自宅のコンピュータは管理されないデバイスである。
[0025]管理ネットワークプロキシ120は、クラウドコンピューティングプラットフォーム110におけるいずれかまたはすべてのトラフィックおよび活動を保護するように構成される。詳細には、管理ネットワークプロキシ120は、クライアントデバイス130とクラウドコンピューティングプラットフォーム110との間のネットワーク通信トラフィックをインターセプト、監視、変更、および転送するように使用され得る。
[0026]管理ネットワークプロキシ120は、クラウドアプリケーション115および/またはクラウドコンピューティングプラットフォーム110のインフラストラクチャに対するネットワーク脅威を検出し、軽減するように構成され得る。非限定的な例として、管理ネットワークプロキシ120は、疑わしいネットワークトラフィックおよび挙動を通知する、脅威をブロックする、ネットワークトラフィック上のアプリケーション制御、URLフィルタリング、およびマルウェア対策を行う、アプリケーション層パラメータへの可視性(たとえば、ユーザ、デバイス、場所などのリスト)を確立する、クラウドアプリケーション115を使用するユーザのプロファイルを生成する、特定のまたはあらかじめ定義されたイベント時に警告を提供する、監査ログを生成する、その他を行うように構成され得る。管理ネットワークプロキシ120のアーキテクチャおよび動作は、共通の譲受人に譲渡され、参照により本明細書に組み込まれている米国特許出願第14/539,980号において説明されている。
[0027]いくつかの実施形態によれば、サフィックスプロキシ140は、管理ネットワークプロキシ120のホールド内のプロキシされたウェブページのURLおよびウェブアクセスを維持するように構成される。すなわち、クラウドアプリケーション115のウェブページにアクセスする要求に対してサフィックスプロキシ140によって行われる変更は、その後のトラフィックを管理ネットワークプロキシ120に向かわせることを可能にする。
[0028]一実施形態では、サフィックスプロキシ140は、ネットワークトラフィックを調べ、クラウドベースのアプリケーション115のアドレスを検出するように構成され得る。そのようなアドレスの例は、たとえば、ユニフォームリソースロケータ(URL)、ユニフォームリソース識別子(URI)などを含む。非限定的な例として、サフィックスプロキシ140は、検査のためにネットワークトラフィックを逆コンパイル、分解、または逆アセンブルすることができる。
[0029]一実施形態では、直接クラウドアプリケーション115にアクセスするようクライアントデバイス130を導くネットワークアドレスが、クライアントデバイス130に提供されないように、サフィックスプロキシ140は、ウェブページならびにそこでおよびクラウドコンピューティングプラットフォーム110上で実行されるコード(たとえば、JavaScript)を変更するように構成され得る。そのようなネットワークアドレスが検出される場合、サフィックスプロキシ140は、たとえば、あらかじめ定義されたドメイン名を元のネットワークアドレスに付け加えて、そのアドレスを書き換えるように構成される。付加されたドメイン名はブラウザを、管理ネットワークプロキシ120に差し向け得る、またはリダイレクトし得る。たとえば、URL(ネットワークアドレス)http://www.somesite.comは、http://www.somesite.com.network−proxy−service.comを介してアクセスされることになる。ネットワークアドレスを書き換えるための様々な実施形態を、下記に開示する。
[0030]サフィックスプロキシ140は、クラウドアプリケーション115から送られた、ウェブページを含む任意のコンテンツを変更するように構成され得る。サフィックスプロキシ140は、コンテンツに存在する参照されるページおよび/またはURLを識別し、それらのURLを書き換えるために、任意のコンテンツを調べるおよび/または逆コンパイルするように構成され得る。非限定的な例として、処理されるファイルタイプは、HTMLまたはJavaScriptを含むことができ、応答は、圧縮応答またはチャンク応答を含むことができる。
[0031]一実施形態では、静的ウェブページについては、そのようなウェブページに埋め込まれているURLに対して、あらかじめ定義されたサフィックスドメイン名が付加される。このために、サフィックスプロキシ140は、HTMLウェブページをパースし、正規表現を使用して検出されたURLを置き換えるように構成される。静的ウェブページは、クライアントにより実行可能なスクリプト(たとえば、JavaScript)コードを含んでいないウェブページである。
[0032]別の実施形態によれば、動的ウェブページ中のネットワークアドレスにサフィックスを付加するために、サフィックスプロキシ140は、クライアントデバイス130のブラウザにロードされているコードまたはスクリプトを分析し、変更するように構成される。たとえば、JavaScriptは、クラウドアプリケーション115に直接アクセスするネットワークアドレスのいかなる潜在的な生成もラップするために、サフィックスプロキシ140によって変更され得る。直接アクセスアドレスが識別される場合、スクリプトおよび/またはスクリプトによって生成されるコンテンツは、管理ネットワークプロキシ120を参照するようにアドレスを書き換えるように変更され得る。
[0033]一実施形態では、サフィックスプロキシ140は、クライアントデバイス130を通じて実行されるランタイムコンポーネントであるセキュリティサンドボックスを提供するように構成される。セキュリティサンドボックスのある機能は、サフィクスプロキシにおいて行われ得る。セキュリティサンドボックスは、セキュリティサンドボックス145と表示されている。一実施形態では、セキュリティサンドボックス145は、ウェブページのドキュメントオブジェクトモデル(DOM)へのアクセスを防止するように構成される。詳細には、セキュリティサンドボックス145は、スクリプトのランタイム中にDOMへのいかなるアクセスおよび変更も防止する。DOMへのアクセスを防止するためのセキュリティサンドボックス145の動作は、クライアントデバイス130および/またはブラウザで、プラグイン、アドオンなど、いかなるソフトウェアのいかなるインストールも必要としないことに留意されたい。
[0034]一般に、クライアントデバイス130上のブラウザが、ランタイム中にウェブページのDOMを変えるスクリプト(たとえば、JavaScript)を実行し得る。その結果、クライアントデバイス130のブラウザがサフィックスを付加しないURLを用いてDOM要素を作成または変更することが可能である。そのようなアクションを防止するために、セキュリティサンドボックス145、およびしたがってサフィックスプロキシ140は、埋め込まれたまたはロードされた任意のスクリプトコードのDOMへのアクセスを制限するように構成される。
[0035]一実施形態では、制限の内容は、ウェブページで実行される元のスクリプトによるDOM中のURLへの変更が、セキュリティサンドボックス145によって監視されるようなものであり得る。サフィックスプロキシ140によるスクリプトコード監視は、DOM要素への読み書きアクセスに対して呼び出され得る。すなわち、DOMへのURLの書込みは、あらかじめ定義されたドメイン名でサフィックスを付加され、DOMからのURLの読取りは、サフィックスを付加されない。その結果、「ユーザ」コード(たとえば、ウェブアプリケーションのコード)によって見られるURLと、ブラウザ自体(DOM、およびそのJavaScript表現)によって見られるURLとの間に分離が存在し得る。その結果、元のスクリプトコードは、セキュリティサンドボックス145によって効果的に管理および制御されることが可能であり、(プロキシ周辺の)元のサーバとのいかなる通信も防止される。元のスクリプトは、ウェブページに動的にロードされない、ウェブページに埋め込まれた任意のスクリプトであることに留意されたい。
[0036]いくつかの構成では、ウェブページがブラウザにレンダリングされた後、スクリプトがウェブページにロードされ得る。そのようなスクリプトは、HTMLページ内部のインラインスクリプト、および任意のコードファイル、スクリプトファイル、またはコンテンツファイルを含め、いくつかの形式のいずれかを使用して、(もともとページを供給するように構成された)サーバからダウンロードされる。そのようなファイルの例は、たとえば、JavaScript、Cascading Style Sheets(CSS)などを含む。
[0037]一般に、クライアントデバイス130のブラウザは、まず、メインHTMLページをロードし、その後、続いてすべての参照されるスクリプトおよびインラインスクリプトをロードする。さらに、スクリプトは、たとえば、「eval」ステートメントを使用して、ウェブアプリケーションによって動的にロードされることも可能である。
[0038]動的コードローディングは最初に、静的にロードされたコード(または、以前にロードされた、他の動的コード)によって行われるので、セキュリティサンドボックス145は、ウェブページがブラウザにダウンロードされるとき、静的スクリプトコードを変更することによって実行を制御することができる。コードに対する変更は、今後の動的にロードされるコードがランタイム中に変更されるように行われることが可能であり、いくつかのURLのサフィックス付加を実施するために、DOMに対する特定の変化はインターセプトされ得る。これは、ウェブページがサフィックスプロキシ140の制御下にとどまることを可能にする。
[0039]一実施形態では、サフィックスプロキシ140およびセキュリティサンドボックス145は、ロードされた動的コードを変更するように構成される。ロードされたコードは、潜在的に(明示的にまたは暗黙的に)ネットワークアドレス(URL)を含む、指す、または場合によっては参照するすべての要素を決定するためにコードを分析し、ネットワークアドレスのサフィックス付加を実施するコード内の要素を置き換えるおよび/またはラップするように構成されたサフィックスプロキシ140で受信される。新しいスクリプトコードは、クライアントデバイス130のブラウザにロードされる。いくつかの実施形態では、性能を高めるために、スクリプトコードのキャッシングが使用され得る。ランタイム中のサンドボックス145は、ネットワークアドレスのサフィックス付加およびサフィックス非付加を実施するために、ラッパーを分解する。上記のように、サフィックスまたはネットワークアドレスを実施することは、あらかじめ定義されたドメイン名でDOMへのアドレス(たとえば、URL)の書込みにサフィックスを付加すること、およびDOMからのアドレスの任意の読取りにサフィックスを付加しないことを含む。
[0040]非限定的な例として、少なくとも次のDOM要素およびプロパティは、新しいスクリプトコードの作成中にラップされ得る:
プロパティ:「src」、「href」、および「action」とともに、「IFRAME」、「STYLE」、「LINK」、「IMG」、「AUDIO」、「A」、「FORM」、「BASE」、および「SCRIPT」など、URLを含んだHTML要素のプロパティ。これらの要素のgetAttributeおよびsetAttributeメソッドもまた、前述のプロパティを設定するために使用され得る。
プロパティ:「src」、「href」、および「action」とともに、「IFRAME」、「STYLE」、「LINK」、「IMG」、「AUDIO」、「A」、「FORM」、「BASE」、および「SCRIPT」など、URLを含んだHTML要素のプロパティ。これらの要素のgetAttributeおよびsetAttributeメソッドもまた、前述のプロパティを設定するために使用され得る。
[0041]DOMサブツリーを含むことができるHTML要素(すなわち、さらなるHTML)のプロパティ。そのような要素に対して、「appendChild」メソッドは、動的に要素(およびコード)を追加するために使用されることが可能であり、「innerHTML」プロパティは、余分なコードを追加するために使用されることが可能である。
[0042]「document」オブジェクトのプロパティは、「cookie」および「domain」(ともにウィンドウの元のドメインを含み得る)など、URLまたはホスト名を含み得る。「write」メソッドは、要素およびコードをページに追加するために使用され得る。
[0043]XMLHttpRequestオブジェクトの「open」メソッドが、リクエストURLを含む。MessageEventオブジェクトの「origin」プロパティが、オリジンホスト名を含む。「Window」オブジェクトのメソッドおよびプロパティが、「location」、「postMessage」、「eval」、および「execScript」を含む。「location」が、フレームを別のURLへリダイレクトする、またはフレームの現在の位置を決定する。「postMessage」メソッドは、オリジン引数を有する。「eval」および「execScript」プロパティは、コードを動的にロードするために使用される。他のそのような要素およびプロパティが存在し、それらのいずれかまたはすべてがラップされ得る。
[0044]一実施形態では、DOM要素のラッピング、したがって新しいコードの作成は、コードの静的フッキングを使用して行われる。非限定的な移植では、静的フッキングは、ウェブページのHTMLコード中のインラインスクリプトを処理し、抽出することを含む。次いで、任意のスクリプトコードが、抽象構文木(AST:Abstract Syntax Tree)などの構文木に変換される。例示的な実施形態では、ASTは、Mozilla(登録商標)パーサを使用して生成され得る。構文木は、再帰的にトラバースされ、ラッパーへの呼び出しが、フッキングを可能にするために木のいくつかのノードに挿入される。最終的に、新しいコードは、(挿入されたクラスで)変更されたノードから作成され、クライアントデバイス130のブラウザに送られる。一実施形態では、作成された新しいコードは、さらなる使用に備えてキャッシュされ得る。
[0045]挿入されたラッパーは、DOM変化がランタイム中にインターセプトされることを可能にし得ることに留意されたい。ラッパーは、いずれかまたはすべての潜在的なDOMアクセスをカバーするために適用され得る。非限定的な例として、ラッパーは、いくつかのまたはすべての以下の構文木(AST)ノードに適用(挿入)され得る:「MemberExpression」、「Identifier」、「AssignmentExpression」、および「CallExpression」。MemberExpressionノードについては、DOMオブジェクトのオブジェクトプロパティへの任意の潜在的アクセス、非リテラルキーを用いたサブスクリプション動作、およびプロパティ名が「interesting」プロパティのホワイトリストに一致した特定のプロパティ(たとえば、obj.src)へのアクセスがラップされる。一実施形態では、ラッパーは、任意の適切なオブジェクトをラップするために挿入される。したがって、いくつかのラッパーは必要とされないことがある。セキュリティサンドボックス145は、ラッパーが処理されるべきかどうかを決定する。ほとんどの場合、たとえば「誤検出(false positive)」の場合、ラッパーは何もしないことを決定することになる。
[0046]「Identifier」ノードについては、(ウィンドウDOMオブジェクト、たとえば「location」のプロパティである)グローバル識別子のホワイトリストへの任意の潜在的なアクセスがラップされる。Identifier ASTノードは、木中の多くの関係のない論理的位置に現れ得ることに留意すべきである。Identifierがグローバル変数へのアクセスを表すインスタンスはラップされる。これは、親ノードをチェックし、他のすべての場合を消去することによって、トラバースステップ中に決定される。
[0047]AssignmentExpressionノードについては、「=」および「+=」代入演算子は、関連するDOMプロパティが文字列(URL)であるとき、ラップされる。以前に「マークされた」MemberExpressionsおよびIdentifiersへの代入は、詳細には「設定された」アクセスを処理する別のラッパーによって処理される。
[0048]CallExpressionノードについては、以前に「マークされた」MemberExpressionまたはIdentifierが呼び出し対象(callee)であるCallExpressionは、詳細には関数呼び出しを処理する別のラッパーによって処理される。ステートメントのように振る舞うが、ASTでは関数呼び出しとして表される「eval」への呼び出しを有する特別な場合が存在する。
[0049]様々な実施形態によれば、異なるラッパー関数が、構文木のトラバースに従って定義され得る。異なるラッパー関数は、ランタイム中に異なるように振る舞う。ラッパー関数は、MemberExpressionsへのアクセスをラップするために使用されるwrapped_get、wrapped_set、およびwrapped_callを含む。関数wrapped_name_get、wrapped_name_set、およびwrapped_name_callは、グローバル識別子にアクセスするために使用される。関数wrapped_eval_paramは、詳細には、(ローカルスコープに影響を与えることができ、したがって装飾されることは可能ではない)「eval」呼び出しのパラメータとして渡されるコードを処理する。
[0050]いくつかの実施形態では、セキュリティサンドボックス145は、関連するオブジェクトまたはプロパティでラッパーが呼び出されたかどうかをまず検出するように構成される。詳細には、「MemberExpression」ラッパーについては、プロパティ名は、ホワイトリストならびに添え字付きオブジェクトと突き合わせてチェックされる。「Identifier」ラッパーについては、ホワイトリストが同様に調べられる。オブジェクトは、あるタイプ(「Document」、「Window」、HTML要素など)であると決定され、また適用できるとき、グローバルインスタンスと比較される。これらの比較および検索は、多くの場合、性能への重大な影響もなく効率的に行われ得る。
[0051]一実施形態では、ラッパー呼び出しが、様々な手順のいずれか1つを使用して処理されることが可能であり、非限定的な例として、下記に説明するように、新しいコード(JavaScriptコード)が特定のREST APIエンドポイントに送られる場合、動的にロードされたコードを処理し、キャッシュすることを含む。これは、「appendChild」、「innerHTML」、「eval」、「execScript」、および「write」のラッパーにおいて起こり得る。ラッパーは、URLまたはホスト名のサフィックス付加またはサフィックス非付加を使用して処理され得る。最終的に、誤検出ラッパー呼び出し(false positive wrapper invocation)および通常実行の再開(resume normal execution)もまた検出され得る。
[0052]別の実施形態では、URL関連プロパティまたはメソッドへのDOMアクセスを処理することを担うラッパー関数ハンドラが、論理グループに分割され得る。これらのグループは、たとえば、「getters」、「setters」、および「detectors」を含む。「getters」は、「get」ラッパーを処理する。これらは、処理されるURLにサフィックスを付加しない。メソッド(JavaScriptタイプの「関数」)がアクセスされる場合、「デコレータ(decorator)」が返される(下記参照)。「setters」は、代入されたURLにサフィックスを付加することによって「set」ラッパーを処理する。「decorators」は、ラップされたメソッドのために一致するデコレータ関数を返す「callラッパーを処理し、修飾されるメソッドが何であるかに従って、URLにサフィックスを付加するまたはサフィックスを付加しない。
[0053]このデコレータは、JavaScript「bind」メソッドを使用して正しいオブジェクトにバインドされ得る。「Identifier」ラッパーの場合、正しいオブジェクトは、グローバルオブジェクト(場合によっては、ウィンドウ)である。「MemberExpression」ラッパーの場合、これは、添え字を付けられたオブジェクトである。
[0054]以下は、ラップ前後のコードの限定的ではない例である。
[0055]新しいコードの作成およびそのようなコードの供給を最適化し、加速して、クライアントデバイス130上の遅延を最小にするために、開示する実施形態によりキャッシュ機構が提供される。キャッシュ機構は、サフィックスプロキシ140で実施され、変換フェーズのオーバヘッドを改善するように構成される。一実施形態では、変換されるコードのすべての要素(たとえば、インラインスクリプト、ファイル、または動的変換要求)が、サーバごとにキャッシュされる。エントリは、元のコードの暗号学的ハッシュによって鍵付きにされる。キャッシュは、プロキシのユーザ全体にわたって共有される。このように、サーバごとの最初のユーザのみが、一般的にロードされるスクリプトのための変換フェーズの影響を体験することになる。一実施形態では、動的スクリプト変換RESTエンドポイントは、クライアント側で計算されたハッシュを受け入れ、それを使用してキャッシュで検索を行うように構成されることも可能である。これは、プロキシのユーザに対するアップロード帯域幅の使用を削減することができる。こうして動的に生成されたスクリプトが、実際にプロキシに送られることは(最初を除いて)ほとんどない。
[0056]開示するキャッシュ機構はさらに、クライアントデバイス130のブラウザによって結果がキャッシュされるように、「Cache−Control」および「Expires」HTTPヘッダとともに返される(ハッシュごとの)動的変換要求に対する応答をキャッシュする。このように、同じクライアントデバイス130は、動的に生成される同じスクリプトをサフィックスプロキシ140に頻繁に問い合わせることはない。
[0057]いくつかの実施形態によれば、(コードレベルで)見当違いの/誤検出のラッパー起動に対する最適化された高速パスを作成することによって、ランタイム性能のさらなる最適化が達成される。これは、(たとえば、ブラウザのJITコンパイラを使用して)クライアントデバイス130ブラウザによる最適化を可能にするために、JavaScriptの限定されたサブセットとともに基本的なラッパー関数を書き込むことによって達成される。別の実施形態では、最多キャッシュヒットを有するコードパスのプロファイリングおよび検出を可能にする手動保守インターフェースが提供される。これは、サフィックスプロキシ140キャッシュ中の変換されたコードからいくつかのラッパーを取り除くことを可能にする。
[0058]様々な実施形態によれば、セキュリティサンドボックス145を使用するサフィックスプロキシ140は、クラウドアプリケーション115およびクライアントデバイス130を保護するためにさらなるセキュリティ対策を実施するように構成される。一実施形態によれば、セキュリティ対策は、DOMに追加され、それによってクライアントデバイス130にレンダリングされることから第三者コンテンツをブロックするようにセキュリティサンドボックス145を構成することを含む。第三者コンテンツは、ツールバー、広告、マルウェアなどを含み得る。この実施形態によれば、クライアントデバイス130にダウンロードされるいかなるスクリプトコードも、サフィックスプロキシ140でサンドボックス145によってインターセプトされる。次いで、コードは分析され、スクリプトコードによって呼び出された(およびその後DOMに追加された)第三者コンテンツは取り除かれる。
[0059]一実施形態では、セキュリティサンドボックス145を使用するサフィックスプロキシ140は、あらかじめ定義されたブラックリストにおいて指定されたURLへのアクセスを防止し、それによって第三者コンテンツをブロックするように構成される。第三者コンテンツにアクセスするためのコードまたは任意の試みの分析は、コードがクライアントデバイス130にロードされるとき、ランタイムに実行される。コードを分析し、それぞれ新しいコードを生成するための実施形態は、上記で詳細に説明している。
[0060]別の実施形態では、セキュリティサンドボックス145を使用するサフィックスプロキシ140は、ウェブサイトがDOMのいくつかの機能にアクセスすることを防止するDOMファイアウォールを提供する、および/またはクライアントデバイス130上でいくつかの機能を行うように構成される。制限されるアクション/機能は、たとえば、ウェブサイトがプラグインをロードすることまたはブラウザの設定を変更することを防止すること、クライアントデバイス130と他のドメインとの間のすべてのクロスドメインアクセスをブロックすること、およびウェブページとウェブサーバとの間のすべての非同期要求をブロックすることを含み得る。一実施形態では、行われるまたは行われようとしている動作のユーザに対して警告が生成される。ユーザは、動作を許可するまたは拒否することができ得る。
[0061]第三者コンテンツにアクセスするためのコードまたは任意の試みの分析は、コードがクライアントデバイス130にロードされるとき、ランタイムに行われることに留意されたい。コードを分析し、それにそれぞれ新しいコードを生成するための実施形態は、上記で詳細に説明している。
[0062]さらに別の実施形態では、セキュリティサンドボックス145は、ウェブブラウザ上にレンダリングされるウェブページに含まれるフィールドを暗号化するように構成される。これらのフィールドは、たとえば、テキストフィールド、コンボボックスなどを含み得る。この実施形態によれば、セキュリティサンドボックス145によって暗号化キーが生成される。鍵は、クライアントデバイス130、およびセキュリティサンドボックス145にのみ知られているが、クラウドアプリケーション115には知られていない。暗号化キーは、ウェブページに注入される新しいコードを介してクライアントデバイス130に提供される。上記のように、そのようなコードは、静的ウェブページの分析時におよび/またはインラインスクリプトがセキュリティサンドボックス145に送られるときに、セキュリティサンドボックス145からブラウザに送られる。
[0063]暗号化キーを使用して、ウェブページに示されるいかなるフィールドも暗号化され得る。データ(フィールドのコンテンツ)の暗号化は、クライアントデバイス130で行われ、復号は、セキュリティサンドボックス145によって行われる。その上、いかなる暗号化されたデータも、セキュリティサンドボックス145によってインターセプトされる。次いで、DOMへのすべてのテキスト挿入が検出され、暗号化されたデータのテキスト挿入は、(実際のDOMへの挿入の前に)復号されたデータで置き換えられる。この動作の結果、ブラウザによって実行される(クラウドアプリケーション115によって提供された)元のコードは、復号されたデータのみにアクセスすることができる。コードが、DOMから復号されたデータを読み出そうとする場合、セキュリティボックス145がこの試みをインターセプトし、データを元通りに暗号化する。
[0064]元のコードはサンドボックス化されるので、コードの実行は、注入されたオブジェクトおよび/またはラッパー関数にアクセスし、暗号化キーを読み出すことができないことに留意されたい。その結果、たとえクラウドコンピューティングプラットフォーム110がハッキングされても、ハッカーは、暗号化されたデータにアクセスでき、それを見ることしかできない。ハッカーが、クライアントデバイス130からデータを盗むために稼働中のサイトにコードを注入する場合、注入された1つのコードは、サンドボックス145によって処理され、したがって、クライアントデバイス130にあるいかなるデータにもアクセスすることができない。
[0065]本明細書に開示する実施形態は、図1に示す特定のアーキテクチャに限定されず、他のアーキテクチャが、開示する実施形態の範囲から逸脱することなく、等しく使用され得ることを理解されたい。詳細には、サフィックスプロキシ140は、クラウドコンピューティングプラットフォーム110、異なるクラウドコンピューティングプラットフォーム、または接続可能なデータセンタにあることがある。さらに、一実施形態では、上述のように動作し、障害の場合に制御を行うスタンバイ機器として1つを有する、またはそれらの間で負荷を共有する、またはそれらの間で機能を分配するように構成された複数のサフィックスプロキシ140が存在し得る。さらに、開示する実施形態の範囲から逸脱することなく、サフィックスプロキシ140の様々な機能が、管理ネットワークプロキシ120によって実施され得る。
[0066]図2は、一実施形態によりネットワークアドレスにサフィックスを付加するための方法を示す例示的および非限定的なフローチャート200を示す。
[0067]S210において、クラウドアプリケーションからクライアントデバイスに送られたウェブページが受信される。ウェブページは、クライアントデバイスとクラウドアプリケーションとの間のトラフィックのラインでアクセスプロキシまたは任意のデバイスから送られ得る。一実施形態では、ウェブページは、サフィックスプロキシによってインターセプトされる。
[0068]S220において、受信されたウェブページにおいて指定された静的ネットワークアドレスが、サフィックスを付加される。すなわち、あらかじめ定義されたドメイン名サフィックスが、ネットワークアドレスに追加される。サフィックスが付加される1つまたは複数のネットワークアドレスは、あらかじめ定義されたURLのリストに基づいて決定される。
[0069]S225において、1つのコード(JavaScriptコード)が、ウェブページに注入され、ウェブページに動的にロードされるスクリプトファイル、コードファイル、またはコンテンツファイルをその後処理する。そのようなファイルの例は、たとえば、JavaScript、CSSなどを含む。変更されたウェブページは、クライアントデバイスのブラウザに中継される。
[0070]クライアントのブラウザ上にウェブページをレンダリングすることにより、サーバ(たとえば、クラウドアプリケーションを実行しているサーバ)からのコンテンツをウェブページに動的ロードし得る。様々な実施形態によれば、ウェブページがブラウザにダウンロードされるとき、(たとえば、静的インラインスクリプトを介して)そのようなコードをロードしようとするいかなる試みも、たとえばセキュリティサンドボックス145が、静的スクリプトコードなど、動的コードの実行を制御することを可能にするために検出される。
[0071]S230において、ウェブページに動的にロードされるいずれかのコードが受信される。たとえば、そのようなコードは、ブラウザからサフィックスプロキシ140に送られ得る。一実施形態では、受信されたコードは、今後の使用に備えてキャッシュされる。S240において、受信されたコードは変更される。一実施形態では、S240は、サフィックスプロキシによって行われる。詳細には、コード変更は、今後動的にロードされるコードがランタイム中に変更されるように行われ、あるネットワークアドレスのサフィックス付加を実施するために、DOMへの特定の変化はインターセプトされ得る。
[0072]いくつかの実施形態では、ネットワークアドレスのサフィクス付加を実施することは、あらかじめ定義されたドメイン名でDOMへのアドレス(URL)の書込みにサフィックスを付加すること、およびDOMからのアドレス(URL)の任意の読取りにサフィックスを付加しないことを含む。
[0073]上記に詳細に述べるように、コード変更は、いくつかのDOM要素をラップすることを含む。さらなる実施形態では、コードの変更は、上記に詳細に説明する静的フッキング技法を使用して行われる。ステップS240は、新しいコードが得られることになる(そのような新しいコードの一例が上記に提供される)。一実施形態では、新しいコードは、今後の使用に備えてキャッシュされる。キャッシュ機構の様々な実施形態は、上記に説明されている。
[0074]S250において、新しいコードはクライアントデバイスに、そこで実行するために送られる。S230およびS240は、ウェブページに含まれるいかなる動的コード、スクリプト、またはファイルにも行われることに留意されたい。ステップS230およびステップS240は、完全にランタイム中に行われることは、強調されるべきである。
[0075]図3は、一実施形態によりDOMへの変化を制御するための方法を示す例示的および非限定的なフローチャート300を示す。
[0076]S310において、クラウドアプリケーションからクライアントデバイスに送られたウェブページが受信される。ウェブページは、クライアントデバイスとクラウドアプリケーションとの間のトラフィックのラインでアクセスプロキシまたは任意のデバイスから送られ得る。一実施形態では、ウェブページは、サフィックスプロキシによってインターセプトされる。
[0077]S320において、1つのコード(たとえば、JavaScriptコード)が、ウェブページに注入され、ウェブページに動的にロードされるスクリプトファイル、コードファイル、またはコンテンツファイルをその後処理する。一実施形態では、1つのコードは、ウェブページのDOMで暗号化キーを管理する。暗号化キーは、サフィックスプロキシに知られているが、クラウドアプリケーションおよび/またはクラウドプラットフォームのプロバイダには知られていない。
[0078]S330において、変更されたウェブページは、クライアントデバイスに送られる。注入された、暗号化キーを伴ったコードは、クライアントデバイスのユーザがウェブページの任意のテキストフィールドを暗号化することを可能にする。
[0079]S340において、DOMに挿入された、暗号化されたテキストフィールドがインターセプトされる。暗号化されたテキストの認識は、たとえば、知られている暗号化パターンを捜すことによって行われる。S350において、いずれかの識別された、暗号化されたテキストフィールドが復号される。次いで、S360において、識別された、暗号化されたテキストフィールドの復号されたデータは、DOMに挿入される。クラウドアプリケーションによって提供されるいかなるコード(たとえば、JavaScriptコード)も、DOMからの復号されたデータを読み取ることはできないことに留意されたい。DOMの外にそのようなデータを読み出そうとするいかなる試みも、たとえばセキュリティサンドボックス145によってインターセプトされることにさらに留意されたい。したがって、DOMへの変化を制御するための開示する方法は、クラウドアプリケーションにセキュリティの別の層を提供する。
[0080]図4は、一実施形態により構築されたサフィックスプロキシ140の例示的および非限定的なブロック図を示す。サフィックスプロキシ140は、クラウドコンピューティングプラットフォーム、データセンタに、またはスタンドアロンネットワークデバイスとして配置され得る。サフィックスプロキシ140は、上記により詳細に説明するアクセスポリシーに基づいてクラウドアプリケーションへのアクセスを少なくとも制御し、実施するように構成される。
[0081]サフィックスプロキシ140は、メモリ415に結合された処理システム410と、セキュリティサンドボックスモジュール420とを含む。処理システム410は、メモリ415に記憶された命令を使用して、サフィックスプロキシ140の動作を制御する。
[0082]処理システム410は、1つまたは複数のプロセッサで実施される処理システムを含む、またはこれの構成要素であり得る。1つまたは複数のプロセッサは、汎用マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(「DSP」)、フィールドプログラマブルゲートアレイ(「FPGA」)、プログラマブルロジックデバイス(「PLD」)、コントローラ、状態機械、ゲートロジック、ディスクリートハードウェアコンポーネント、専用ハードウェア有限状態機械、または計算もしくは情報の他の操作を行うことができるその他の好適なエンティティのいずれかの組合せで実装され得る。
[0083]処理システム410は、ソフトウェアを記憶するための機械可読媒体も含み得る。ソフトウェアは、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、または他のように呼ばれるかどうかにかかわらず、いかなるタイプの命令も意味するように広く解釈されるものとする。命令は、コードを(たとえば、ソースコード形式、バイナリコード形式、実行可能コード形式、またはコードのその他の好適な形式で)含み得る。命令は、1つまたは複数のプロセッサによって実行されるとき、本明細書に記載する様々な機能を処理システム140に行わせる。
[0084]セキュリティサンドボックスモジュール420は、DOMへのいかなる変化も監視する、DOMへのアクセスを防止する、ならびにネットワークアドレスにサフィックを付加するおよびサフィックスを付加しないように構成される。上記に詳細に説明するように、セキュリティサンドボックスモジュール420の動作は、ランタイムに、すなわちウェブページがクライアントデバイス130のウェブブラウザ上にレンダリングされるとき、行われる。
[0085]ウェブページは、クラウドアプリケーション115によって提供される。セキュリティサンドボックスモジュール420の動作は、上記に詳細に説明している。一実施形態では、セキュリティサンドボックスモジュール420は、上記に詳細に説明する様々な構造形態を有する処理装置として実現され得る。
[0086]本明細書に開示する様々な実施形態は、ハードウェア、ファームウェア、ソフトウェア、またはその任意の組合せとして実装され得る。さらに、ソフトウェアは、パーツから、またはいくつかのデバイスおよび/もしくはデバイスの組合せからなるプログラム記憶ユニットまたは非一時的コンピュータ可読媒体上で実体的に具体化されるアプリケーションプログラムとして実装されることが好ましい。アプリケーションプログラムは、任意の好適なアーキテクチャを含むマシンへアップロードされ、マシンによって実行され得る。好ましくは、マシンは、1つまたは複数の中央演算処理装置(「CPU」)、メモリ、および入力/出力インターフェースなどのハードウェアを有するコンピュータプラットフォームに実装される。またコンピュータプラットフォームは、オペレーティングシステムおよびマイクロ命令コードを含み得る。本明細書に記載した様々な処理および機能は、そのようなコンピュータまたはプロセッサが明示的に示されているかどうかにかかわらず、CPUによって実行され得るマイクロ命令コードの一部、またはアプリケーションプログラムの一部、またはその任意の組み合わせであり得る。その上、増設のデータ記憶装置および印刷装置など、他の様々な周辺装置が、コンピュータプラットフォームに接続され得る。さらに、非一時的コンピュータ可読媒体は、一時的な伝搬信号を除く任意のコンピュータ可読媒体である。
[0087]「第1の」、「第2の」などの呼称を使用する本明細書中の要素への言及はいずれも、一般的に、それらの要素の数または順序を限定しないことを理解されたい。むしろ、これらの指定は一般的に本明細書では、2つ以上の要素または要素のインスタンスの間で区別する便利な方法として使用される。したがって、第1および第2の要素への言及は、2つの要素のみがそこで使用され得ること、または第1の要素が何らかの方法で第2の要素に先行しなければならないことを意味しない。また、別段の記述がない限り、要素のセットは、1つまたは複数の要素を含む。その上、説明または請求項において使用される「A、B、またはCの少なくとも1つ」、あるいは「A、B、またはCの1つまたは複数」、あるいは「A、B、およびCからなる群の少なくとも1つ」、あるいは「A、B、およびCの少なくとも1つ」という形の用語は、「AまたはBまたはCまたはこれらの要素の任意の組合せ」を意味する。たとえば、この用語は、A、またはB、またはC、またはAおよびB、またはAおよびC、またはAおよびBおよびC、または2A、または2B、または2Cなどを含み得る。
[0088]本明細書に列挙したあらゆる例および条件付き用語は、開示する実施形態の原理および発明者によって当技術を促進することに寄与される概念を理解する際に読者の助けとなるように、教育の目的を意図されたものであり、そのような具体的に列挙した例および条件に制限することはないと解釈されたい。さらに、原理、態様、および実施形態、ならびにその特定の例を列挙する本明細書中のあらゆる記載は、その構造的均等物および機能的均等物の両方を含むものとする。さらに、そのような均等物は、現在知られている均等物ならびに将来開発される均等物、すなわち、構造にかかわらず同じ機能を行うように開発されるいかなる要素をも含むものとする。
Claims (33)
- 少なくとも1つのクラウドアプリケーションのネットワークアドレスを変更するための方法であって、
前記少なくとも1つのクラウドアプリケーションからクライアントデバイスへ送られたウェブページを受信するステップであって、ウェブページが、ランタイム中に前記クライアントデバイスにロードされる少なくとも1つのスクリプトを指定する、ステップと、
前記ウェブページに1つのコードを注入する(injecting)ステップと、
前記注入された1つのコードによって、前記少なくとも1つのスクリプトのそれぞれをロードする試みを受信するステップと、
あらかじめ定義されたネットワークアドレスで前記少なくとも1つのスクリプトにおいて指定される各ネットワークアドレスにサフィックスを付加することによって、前記少なくとも1つのスクリプトを変更するステップと、
前記変更された少なくとも1つのスクリプトを前記クライアントデバイスに送るステップであって、前記クライアントデバイス上の前記変更された少なくとも1つのスクリプトのランタイム実行が、前記クライアントデバイスから前記クラウドアプリケーションへの今後の要求を、前記サフィックスを付加されたネットワークアドレスにリダイレクションさせる、ステップと
を含む、方法。 - 前記受信されたウェブページにおいて指定された各静的ネットワークアドレスを変更するステップ
をさらに含む、請求項1に記載の方法。 - 静的ネットワークアドレスにサフィックスを付加するステップが、
前記静的ネットワークアドレスを識別するために前記ウェブページをパースするステップと、
前記あらかじめ定義されたネットワークアドレスで前記少なくとも1つのスクリプトにおいて指定される各識別された静的ネットワークアドレスにサフィックスを付加するステップと
をさらに含む、請求項2に記載の方法。 - 変更される前記ネットワークアドレスのそれぞれが、ネットワークアドレスのリストに含まれる、請求項3に記載の方法。
- 変更される前記ネットワークアドレスのそれぞれが、少なくともユニフォームリソースロケータ(URL)である、請求項4に記載の方法。
- 前記少なくとも1つのスクリプトが、
ネットワークアドレスを生成するためにおそらく構成された実行可能命令を識別するために、前記要求されるコンテンツをパースするステップと、
代替的(alternative)命令を呼び出すために前記各識別された命令をラップする(wrapping)ステップであって、前記代替的命令が、前記あらかじめ定義されたネットワークアドレスにサフィックスを付加して前記生成されたアドレスにするようにおそらく(possibly)構成された、ステップと
をさらに含む、請求項1に記載の方法。 - ランタイム中に、前記ネットワークアドレスに影響を与えない少なくとも1つのラップされた命令を検出するステップと、
前記ネットワークアドレスに影響を与えない前記少なくとも1つのラップされた命令に適用される前記それぞれのラッパーを無視するステップと
をさらに含む、請求項6に記載の方法。 - 前記少なくともスクリプトが、JavaScriptコード、およびCascading Style Sheets(CSS)ファイルのうちのいずれか1つである、請求項6に記載の方法。
- 前記各識別された命令をラップすることが、
前記少なくとも1つのスクリプトを抽象構文木(abstract syntax tree)に変換するステップと、
前記抽象構文木を再帰的にトラバースするステップと、
前記抽象構文木のノードをラップして、パッチされた抽象構文木を生成するステップと
をさらに含む、請求項6に記載の方法。 - 前記パッチされた抽象構文木から前記変更された少なくとも1つのスクリプトを再構築するステップ
をさらに含む、請求項6に記載の方法。 - 前記少なくとも1つのスクリプトおよび前記変更されたスクリプトをキャッシュするステップ
をさらに含む、請求項6に記載の方法。 - 前記少なくとも1つのスクリプトをロードする要求を識別すると、少なくとも1つの変更されたスクリプトがキャッシュされているかどうかを決定するステップと、
前記少なくとも1つのクラウドアプリケーションを実行するリモートサーバから前記要求されたコンテンツを検索することなく、前記キャッシュされた、変更されたスクリプトを前記クライアントデバイスに送るステップと
をさらに含む、請求項1に記載の方法。 - デフォルトクライアントデバイス構成のいかなる変更も必要とせずに実際される、請求項1に記載の方法。
- 前記ウェブページのDOMを変えようとするいかなる試みをも監視するために、前記少なくとも1つのスクリプトをサンドボックスで実行するステップと、
前記DOMへのネットワークアドレスのいかなる書込みにも、ランタイム中にサフィックスを付加するステップと、
前記DOMからのネットワークアドレスのいかなる読取りにも、ランタイム中にサフィックスを付加しないステップと
をさらに含む、請求項6に記載の方法。 - 前記DOMへのアクセスを監視するステップと、
前記DOMを変更する可能性がある少なくとも1つの動作を防止するステップと
をさらに含む、請求項14に記載の方法。 - 前記少なくとも1つの動作が、前記クライアントデバイスへのプラグインのロード、クロスドメインアクセス、および前記ウェブページと前記ウェブサーバとの間の非同期要求のうちのいずれか1つを含む、請求項15に記載の方法。
- サフィックスプロキシデバイスによって実施される、請求項1に記載の方法。
- 1つまたは複数の処理装置に請求項1に記載の方法を実行させるための命令を記憶した、非一時的コンピュータ可読媒体。
- 少なくとも1つのクラウドアプリケーションのネットワークアドレスを変更するためのシステムであって、
プロセッサと、
前記プロセッサによって実行されるとき、
前記少なくとも1つのクラウドアプリケーションからクライアントデバイスへ送られたウェブページを受信することであって、ウェブページが、ランタイム中に前記クライアントデバイスにロードされる少なくとも1つのスクリプトを指定する、受信することと、
前記ウェブページに1つのコードを注入することと、
前記注入された1つのコードによって、前記少なくとも1つのスクリプトのそれぞれをロードする試みを受信することと、
あらかじめ定義されたネットワークアドレスで前記少なくとも1つのスクリプトにおいて指定される各ネットワークアドレスにサフィックスを付加することによって、前記少なくとも1つのスクリプトを変更することと、
前記変更された少なくとも1つのスクリプトを前記クライアントデバイスに送ることであって、前記クライアントデバイス上の前記変更された少なくとも1つのスクリプトのランタイム実行が、前記クライアントデバイスから前記クラウドアプリケーションへの今後の要求を、前記サフィックスを付加されたネットワークアドレスにリダイレクションさせる、送ることと
を行うように前記システムを構成する命令を含んだメモリと
を含む、システム。 - 前記システムがさらに、
前記受信されたウェブページにおいて指定された各静的ネットワークアドレスを変更する
ように構成される、請求項19に記載のシステム。 - 前記システムがさらに、
前記静的ネットワークアドレスを識別するために前記ウェブページをパースし、
前記あらかじめ定義されたネットワークアドレスで前記少なくとも1つのスクリプトにおいて指定される各識別された静的ネットワークアドレスにサフィックスを付加する
ように構成される、請求項20に記載のシステム。 - 変更される前記ネットワークアドレスのそれぞれが、ネットワークアドレスのリストに含まれる、請求項21に記載のシステム。
- 変更される前記ネットワークアドレスのそれぞれが、少なくともユニフォームリソースロケータ(URL)である、請求項22に記載のシステム。
- 前記システムがさらに、
ネットワークアドレスを生成するためにおそらく構成された実行可能命令を識別するために、前記要求されるコンテンツをパースすることと、
代替的命令を呼び出すために前記各識別された命令をラップすることであって、前記代替的命令が、前記あらかじめ定義されたネットワークアドレスにサフィックスを付加して前記生成されたアドレスにする、ラップすることと
を行うようにおそらく構成される、請求項19に記載のシステム。 - 前記システムがさらに、
ランタイム中に、前記ネットワークアドレスに影響を与えない少なくとも1つのラップされた命令を検出し、
前記ネットワークアドレスに影響を与えない前記少なくとも1つのラップされた命令に適用される前記それぞれのラッパーを無視する
ように構成される、請求項24に記載のシステム。 - 前記少なくともスクリプトが、JavaScriptコード、およびCascading Style Sheets(CSS)ファイルのうちのいずれか1つである、請求項24に記載のシステム。
- 前記システムがさらに、
前記少なくとも1つのスクリプトを抽象構文木に変換し、
前記抽象構文木を再帰的にトラバースし、
前記抽象構文木のノードをラップして、パッチされた抽象構文木を生成する
ように構成される、請求項24に記載のシステム。 - 前記システムがさらに、
前記パッチされた抽象構文木から前記変更された少なくとも1つのスクリプトを再構築する
ように構成される、請求項24に記載のシステム。 - 前記システムがさらに、
前記少なくとも1つのスクリプトおよび前記変更されたスクリプトをキャッシュする
ように構成される、請求項24に記載のシステム。 - 前記システムがさらに、
前記少なくとも1つのスクリプトをロードする要求を識別すると、少なくとも1つの変更されたスクリプトがキャッシュされているかどうかを決定し、
前記少なくとも1つのクラウドアプリケーションを実行するリモートサーバから前記要求されたコンテンツを検索することなく、前記キャッシュされた、変更されたスクリプトを前記クライアントデバイスに送る
ように構成される、請求項19に記載のシステム。 - 前記システムがさらに、
前記ウェブページのDOMを変えようとするいかなる試みをも監視するために、前記少なくとも1つのスクリプトをサンドボックスで実行し、
前記DOMへのネットワークアドレスのいかなる書込みにも、ランタイム中にサフィックスを付加し、
前記DOMからのネットワークアドレスのいかなる読取りにも、ランタイム中にサフィックスを付加しない
ように構成される、請求項24に記載のシステム。 - 前記システムがさらに、
前記DOMへのアクセスを監視し、
前記DOMを変更する可能性がある少なくとも1つの動作を防止する
ように構成される、請求項31に記載のシステム。 - 前記少なくとも1つの動作が、前記クライアントデバイスへのプラグインのロード、クロスドメインアクセス、および前記ウェブページと前記ウェブサーバとの間の非同期要求のうちのいずれか1つを含む、請求項32に記載のシステム。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462049473P | 2014-09-12 | 2014-09-12 | |
US62/049,473 | 2014-09-12 | ||
US14/539,980 US9438565B2 (en) | 2013-11-11 | 2014-11-12 | Cloud service security broker and proxy |
US14/539,980 | 2014-11-12 | ||
PCT/US2015/049606 WO2016040753A1 (en) | 2014-09-12 | 2015-09-11 | A cloud suffix proxy and methods thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017532615A true JP2017532615A (ja) | 2017-11-02 |
Family
ID=55459596
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016539311A Pending JP2017532615A (ja) | 2014-09-12 | 2015-09-11 | クラウドサフィックスプロキシおよびその方法 |
Country Status (8)
Country | Link |
---|---|
EP (1) | EP3069251A1 (ja) |
JP (1) | JP2017532615A (ja) |
CN (1) | CN105793826A (ja) |
AU (1) | AU2015314899A1 (ja) |
CA (1) | CA2931517A1 (ja) |
IL (1) | IL245266A0 (ja) |
PH (1) | PH12016500944A1 (ja) |
WO (1) | WO2016040753A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3413192A1 (en) * | 2017-06-08 | 2018-12-12 | HOB GmbH & Co. KG | Internet-based communication system |
CN108804916B (zh) * | 2017-12-19 | 2022-01-28 | 安天科技集团股份有限公司 | 恶意文件的检测方法、装置、电子设备及存储介质 |
CN109325192B (zh) * | 2018-10-11 | 2021-11-23 | 网宿科技股份有限公司 | 一种广告防屏蔽的方法和装置 |
US10873644B1 (en) * | 2019-06-21 | 2020-12-22 | Microsoft Technology Licensing, Llc | Web application wrapper |
US20210160220A1 (en) * | 2019-11-25 | 2021-05-27 | Microsoft Technology Licensing, Llc | Security service |
US20230006971A1 (en) * | 2021-06-30 | 2023-01-05 | Sony Group Corporation | Anti-piracy control based on blacklisting function |
CN113572833B (zh) * | 2021-07-21 | 2024-05-14 | 北京百度网讯科技有限公司 | 一种云手机的维护方法、装置、电子设备和存储介质 |
CN114816558B (zh) * | 2022-03-07 | 2023-06-30 | 深圳市九州安域科技有限公司 | 一种脚本注入方法、设备及计算机可读存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6397246B1 (en) * | 1998-11-13 | 2002-05-28 | International Business Machines Corporation | Method and system for processing document requests in a network system |
US20060248575A1 (en) * | 2005-05-02 | 2006-11-02 | Zachary Levow | Divided encryption connections to provide network traffic security |
US8239939B2 (en) * | 2005-07-15 | 2012-08-07 | Microsoft Corporation | Browser protection module |
US8626853B2 (en) * | 2010-07-28 | 2014-01-07 | Unwired Planet, Llc | Method and system for link-triggered link-translating proxying |
US9003552B2 (en) * | 2010-12-30 | 2015-04-07 | Ensighten, Inc. | Online privacy management |
WO2013091709A1 (en) * | 2011-12-22 | 2013-06-27 | Fundació Privada Barcelona Digital Centre Tecnologic | Method and apparatus for real-time dynamic transformation of the code of a web document |
US9460222B2 (en) * | 2012-05-17 | 2016-10-04 | Oracle International Corporation | System for rewriting dynamically generated uniform resource locators in proxied hyper text markup language content in accordance with proxy server rules |
-
2015
- 2015-09-11 CA CA2931517A patent/CA2931517A1/en not_active Abandoned
- 2015-09-11 EP EP15839443.7A patent/EP3069251A1/en not_active Withdrawn
- 2015-09-11 CN CN201580002873.9A patent/CN105793826A/zh active Pending
- 2015-09-11 WO PCT/US2015/049606 patent/WO2016040753A1/en active Application Filing
- 2015-09-11 JP JP2016539311A patent/JP2017532615A/ja active Pending
- 2015-09-11 AU AU2015314899A patent/AU2015314899A1/en not_active Abandoned
-
2016
- 2016-04-21 IL IL245266A patent/IL245266A0/en unknown
- 2016-05-20 PH PH12016500944A patent/PH12016500944A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
AU2015314899A1 (en) | 2016-05-19 |
EP3069251A1 (en) | 2016-09-21 |
PH12016500944A1 (en) | 2016-07-11 |
CN105793826A (zh) | 2016-07-20 |
IL245266A0 (en) | 2016-06-30 |
CA2931517A1 (en) | 2016-03-17 |
WO2016040753A1 (en) | 2016-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10642600B2 (en) | Cloud suffix proxy and a method thereof | |
US11593484B2 (en) | Proactive browser content analysis | |
JP2017532615A (ja) | クラウドサフィックスプロキシおよびその方法 | |
US10592676B2 (en) | Application security service | |
US10984456B2 (en) | Systems and methods to bypass online advertisement blockers | |
US8768964B2 (en) | Security monitoring | |
US20170278144A1 (en) | Systems and Methods to Bypass Online Advertisement Blockers | |
US10747787B2 (en) | Web cookie virtualization | |
US10474729B2 (en) | Delayed encoding of resource identifiers | |
WO2017053561A1 (en) | Protecting content integrity | |
US11194914B2 (en) | Method and apparatus to detect security vulnerabilities in a web application | |
WO2014146198A1 (en) | Systems and methods for intercepting, processing, and protecting user data through web application pattern detection | |
US11341206B2 (en) | Intercepting not directly interceptable program object property | |
US20180205705A1 (en) | Network request proxy system and method | |
US10860351B1 (en) | Browser hooks on objects in web pages | |
US11200367B2 (en) | Secure inter-frame communication | |
US11314834B2 (en) | Delayed encoding of resource identifiers | |
US9398041B2 (en) | Identifying stored vulnerabilities in a web service | |
WO2017123859A1 (en) | Web cookie virtualization | |
Marengereke et al. | Cloud based security solution for android smartphones | |
Dar | Nginx Module Extension | |
JP2013069254A (ja) | Webブラウザからの通信に制限を設ける技術の提供 | |
CN114168147A (zh) | WebShell免杀方法及装置、存储介质、电子设备 |