JP2014534498A - JavaScriptを保護する装置、方法及びコンピューター可読性記憶媒体 - Google Patents

JavaScriptを保護する装置、方法及びコンピューター可読性記憶媒体 Download PDF

Info

Publication number
JP2014534498A
JP2014534498A JP2014533483A JP2014533483A JP2014534498A JP 2014534498 A JP2014534498 A JP 2014534498A JP 2014533483 A JP2014533483 A JP 2014533483A JP 2014533483 A JP2014533483 A JP 2014533483A JP 2014534498 A JP2014534498 A JP 2014534498A
Authority
JP
Japan
Prior art keywords
javascript
client device
request
referrer
access
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
JP2014533483A
Other languages
English (en)
Inventor
マシュー アラン ニューマン,
マシュー アラン ニューマン,
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.)
Newman Infinite Inc
Original Assignee
Newman Infinite 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 Newman Infinite Inc filed Critical Newman Infinite Inc
Publication of JP2014534498A publication Critical patent/JP2014534498A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules

Abstract

JavaScriptソースコードの保護を提供するためのシステム、関連方法及び他の手段を本願明細書において提供する。回路は、デバッグコンソールがクライアント装置で有効か否かを判断し、前記デバッグコンソールが有効であるとJavaScriptに対するアクセスを拒否するように構成することができる。加えて又は代わりに、回路は、クライアント装置からJavaScriptソースコードにアクセスするリクエストを受信することができ、リクエストが信頼されたリファラからであるか否かを判断することができる。リクエストが信頼できないリファラからである場合、回路は、JavaScriptに対するアクセスを拒否することができる。リクエストが信頼されたリファラからである場合、回路は、JavaScriptに対するアクセスを許可することができる。【選択図】図3B

Description

関連出願についてのクロスリファレンス
本願は、2011年9月30日付け出願の米国仮特許出願第61/541,481号の利益及び優先権を主張する。
分野
本発明の実施形態は、一般に、ウェブサイトのJavaScript(例えば、ソースコード)を保護することに関する。
背景
クライアント側で主にパースされ、ほとんどのウェブブラウザ内にインプリメントされている、スクリプト言語であるJavaScriptは、ウェブサイト又はウェブサービスのクライアント用動的スクリプト言語である。様々なフォーマッティングオプションを有する安定的で、アクセス性を有し、高い汎用性を有するスクリプト言語として広く認められているJavaScriptは、ゲーム及びソーシャルネットワーキングからエンタープライズソリューションにわたるインタラクティブなウェブアプリケーションにおいて利用されている。JavaScriptを保護するための領域が特定されてきている。努力、独創及び革新を通じて、かかるシステムを向上させるソリューションは、本発明の実施形態を通じて実現及び説明される。
概要
大まかに言えば、JavaScript、ソースコード及び/又は他の情報であってネットワークを経て遠隔でアクセスできるものの安全性を向上させる、システム、方法、非一時的記憶媒体に保存されるコンピューター可読性プログラムコード及び他の手段を提供する。より詳しくは、本願明細書により提供される実施形態は、JavaScript(例えば、JavaScriptソースコード、ソースコードの一部及び/又はJavaScriptによって提供されるサービス)を保護することであってもよい。上記方法は、(例えば、1又は複数のネットワークプロセッサーによって)デバッグコンソールがクライアント装置で有効か否かを判断するステップと、デバッグコンソールがクライアント装置で有効である場合、JavaScriptに対するアクセスを拒否するステップと、クライアント装置からJavaScriptにアクセスするためのリクエストを受信するステップと、リクエストが信頼されたリファラを経て受信するか否かを判断するステップと、リクエストが信頼されたリファラから受信されたものではない場合、JavaScriptに対するアクセスを拒否するステップと、を含むことができる。
ある実施形態において、デバッグコンソールがクライアント装置で有効か否かを判断するステップは、クライアント装置をポーリングするステップを含むことができる。クライアント装置をポーリングするステップは、断続的に及び/又は規定のポーリング間隔で実行することができる。
ある実施形態において、JavaScriptにアクセスするためのリクエストは、ネットワークプロトコル(例えば、ハイパーテキストトランスファープロトコル(HTTP)、ハイパーテキストトランスファープロトコルセキュア(HTTPS)、SPDY、トランスミッションコントロールプロトコル及び/又はインターネットプロトコル(TCP/IP)等)を経て受信することができる。上記リクエストは、リファラフィールド(例えば、HTTPの「リファラ」フィールド)を含むことができる。リクエストが信頼されたリファラからのものであるか否かを判断するステップは、1又は複数の信頼されたリファラのリストを用いてリファラフィールドのデータを比較するステップを含むことができる。このように、上記方法は、1又は複数のデータベースにおける1又は複数の信頼されたリファラのリストにアクセスするステップを更に含むことができる。
ある実施形態において、JavaScriptに対するアクセスを拒否するステップは、クライアント装置にエラーメッセージを送るステップを含むことができる。或いは及び/又は加えて、JavaScriptに対するアクセスを拒否するステップは、JavaScript及び/又はJavaScriptのソースコードによって提供されるサービスに対するアクセスを拒否するステップを含むことができる。
ある実施形態において、上記方法は、デバッグ装置が検出されると、JavaScriptによって提供されるサービスに対するアクセスを拒否するデバッグコンソールステータスを保存するステップを更に含むことができる。
ある実施形態において、JavaScriptは、JavaScriptを安全にするネットワークプロセッサーから分離したサーバーによって提供することができる。
ある実施形態は、本願明細書に記載の方法及び/又は他の機能をインプリメントするように構成された装置及び/又はシステムを含むことができる。言い換えると、上記装置は、メモリー及び/又は他の非一時的コンピューター可読性媒体に保存された命令及び/又は他のデータに基づいて、本願明細書に記載の機能をインプリメントするように構成された1又は複数のプロセッサー及び/又は他のマシン部品を含むことができる。
以下で、これらの特性と本発明の更なる特徴、機能及び詳細について説明する。同様に、対応する及び更なる実施形態も後述する。
従って、本発明の実施形態を大まかに説明するために、添付の図面を以下で参照するが、必ずしも一定の比率で描画されているわけではない。
図1は、ある実施形態に従って構成されたシステムの模式的なブロック図である。
図2は、ある実施形態に従って構成された装置の模式的なブロック図である。
図3Aは、ある実施形態に従って実行される例示的方法のフローチャートを示す。 図3Bは、ある実施形態に従って実行される例示的方法のフローチャートを示す。
図4は、ある実施形態による、例示的なソースを表示する画面を示す。
図5は、ある実施形態による、例示的なエラーページを示す。
本発明の実施形態は、添付の図面を参照しつつ以下でより充分に説明するが、本発明の全ての実施形態を示しているわけではなく、いくつかの実施形態を示している。実際、本発明の実施形態は、多種多様な形態で具体化することができ、本願明細書に記載の実施形態に限定するように解釈すべきではなく、むしろ、これらの実施形態は、この開示が適用される法的要求を満たすように提供している。同じ番号は、全体にわたって同じ要素を表す。
本願明細書で使用している、用語「データ」、「コンテンツ」及び「情報」並びに同様の用語は、様々な例示的実施形態に従ってキャプチャー、送信、受信、表示及び/又は保存することができるデータを指すものとして置換可能に用いることができる。従って、かかる任意の用語の使用は、開示の精神と範囲を制限すべきではない。更に、本願明細書において、コンピューティング装置が他のコンピューティング装置からデータを受信すると記載されている場合、上記データは、他のコンピューティング装置から直接受信したり、1又は複数の仲介コンピューティング装置(例えば1又は複数のサーバー、リレー、ルーター、ネットワークアクセスポイント、基地局及び/又は同様のもの)を経て間接的に受信したりしてもよいことはいうまでもない。同様に、本願明細書において、コンピューティング装置が上記データを他のコンピューティング装置に送信すると記載されている場合、上記データは、他のコンピューターに直接送信したり、1又は複数の仲介コンピューティング装置(例えば1又は複数のサーバー、リレー、ルーター、ネットワークアクセスポイント、基地局及び/又は同様のもの)を経て間接的に送信したりしてもよいことはいうまでもない。
本願明細書に記載の実施形態は、ウェブサイトプロバイダー(例えば、商人又は他のオンラインサービスプロバイダー)が、他のタイプのコード及び/又は現在公開されている利用可能な情報の中で、第三者(競争者、ハッカー、リバースエンジニアリングする者、及び/又は任意の他の認可されていない者及び/又はマシンを含む)による閲覧から、そのJavaScriptを保護することを可能にするように構成することができる。
ビジュアルインターネットの導入直後、SGML(汎用マークアップ言語規約)の制限を拡張する簡単なクライアント側スクリプト言語の必要性を認識したブラウザ開発グループは、HTML(ハイパーテキストマークアップ言語)を作り上げた。これによって、プログラム可能なオブジェクトとしてウェブページ内の要素を規定する一組の規格であるドキュメントオブジェクトモデル(DOM)に直接アクセスすることができるスクリプト言語(JavaScriptを含む)が発展した。
ウェブ技術の成長を促進するために、インターネットの最も初期の設計者らは、ダウンロードされ且つ依存する全てのスクリプトであってクライアントマシンのユーザーが閲覧できるスクリプトについて、ソースコードの表示及び共有をクライアント側に許可していた。その結果、JavaScriptに挿入可能な所有権がある任意のアルゴリズムの使用は、初期設定でパブリックドメインに置かれていた。この点に関して、ある実施形態では、例えば、所有権があるJavaScriptをJavaラッパー内に隠す知的財産保護技術を提供する。
JavaScriptがプログラマーにDOMを操作及び拡張する能力を与え、これがインターネット標準として規定されているため、プロトタイプオブジェクト指向スクリプト言語としてのJavaScriptの機能は、HTML文書の横断化、イベント処理、動画化及び非同期インタラクションを簡単にするプログラムフレームワーク(例えばPrototype及びjQuery)の開発業者にチャンスを与えてきた。しかしながら、JavaScriptに関する全ての迅速な開発優位性と同調して、クライアントのウェブブラウザにデータをダウンロードしキャッシュするプロトコールに対する知的財産権保護の課題が生じている。
現在、JavaScriptに対する知的財産権保護手段(例えば、JavaScriptに対する公衆のアクセスを防止するもの)は、ハッカーを妨害又は阻止することだけを目的とする難読化手段と、主にコード最適化ツールとして設計された縮小プログラムに限られ、結果として生じる第2次効果が知的財産権保護の対象となっている。これらのマシンインプリメント方法は、カジュアルハッカー又は他の許可されていないユーザーを思いとどまらせることには充分な一方で、デバッグプロセスに問題があることを証明し得るものであり、有益なコードをリバースエンジニアリングする時間的投資に対して潜在的に大きな金銭的利益があることによって動機づけらる、最低限の技術と覚悟のあるハッカーに対しては効果的な防御手段とはなりえない。
JavaScriptに関する強い知的財産権保護方法が存在しない状況下にあるプログラマーは、基本的且つ限定的なライセンスを持つ状態にするために、ソースであるJavaScriptコードを開示せざるお得ない。オープンソースライブラリーがインターネット全体の発達のために重要であった一方で、プログラミングコミュニティー内で進化してきたオープン文化は、会社での知的財産権の保護及び活用に主に基づく価値構築プロセスに反するものである。1982年から2002年までに、無形資産(商標、商品名及び他のタイプの知的財産権を含む)は、会社の価値の40%から総評価額の最大75%を占めるまでに成長したと報告されている。このように効率がよいにもかかわらず、JavaScriptは、法律によって保護される専有財産権である知的財産権のコンセプトを取り除いているため、創造的な価値の金銭化に関連する潜在的な利益をJavaScript開発者に事実上与えないようにしている。
JavaScript及び他の無形知的財産権の保護を進展させる努力を妨げている障壁には、帯域幅及びコンピューターオーバーヘッド制限、並びに、クライアントにデータ送信を安全に行える機能的コンテンツ送信ネットワークアーキテクチャーを効率的に配置する能力の欠如が含まれる。
本願明細書において述べられる(例えば、「Hide JS」と時には称する)ある実施形態は、とりわけ、Javaラッパー内にある所有権を有するJavaScriptを隠すマシンインプリメント法を使用して簡単且つ安定して知的財産権を保護することができる。ある実施形態は、比較的小さなネットワークアーキテクチャーを変化させて、目標サーバー上にHide JSのインスタンスを生成することによって殆どのネットワーク技術者がインプリメントすることができる。
図1は、本発明の例示的な実施形態から利益を得ることができるシステム100を図示する(本願明細書において使用する「例」、「例示」等の用語は、「例、実例又は説明としての役割を果たすもの」を指す)。システム100には、1又は複数のクライアント102、1又は複数のサーバー104及び1又は複数のデータベース108を含ませてもよい。ある実施形態において、クライアント102及び/又はサーバー106は、1又は複数の携帯式又は据置式電子デバイス(例えば、1又は複数の携帯式メディアプレーヤー、スマートフォン、携帯情報端末(PDA)、タブレットコンピューター、ラップトップコンピューター、デスクトップコンピューター又はサーバーコンピューター等)を備えていたり、それらを含んでいたり、それらに具体化されていてもよい。クライアント102は、とりわけ、人がウェブサイトにアクセス及び/又はそれを構築するのに使用する消費者向け装置として主に機能するように構成することができる。サーバー106は、クライアント装置(例えばクライアント102)にウェブサイト及び/又は他の情報を提供するマシンとして主に機能するように構成することができる。
クライアント102及びサーバー106は、多種多様な様式の1つ(例えば、多くの有線又は無線通信又はネットワーク技術の1つ)において間接的及び/又は直接に互いと通信するように構成することができる。かかる技術の例には、特に限定するものではないが、ユニバーサルシリアルバス(USB)、無線周波(RF)、ブルートゥース(BT)、赤外線(IrDA)、多種多様なセルラー(無線)式通信技術の1つ(例えば、多くの2G、2.5G、3G又は4G通信技術のうちの1つ)、ローカルエリアネットワーク(LAN)、ワイヤレスLAN(WLAN)技術等が含まれる。ある実施形態において、クライアント102及びサーバー106は、1又は複数のネットワーク104を通じて通信するように接続及び構成することができる。ネットワーク104は、データ及び/又は音声ネットワークを含む1又は複数の種々のタイプのネットワークに関する多種多様な組合せの1つを含むことができる。例えば、ネットワーク104は、1又は複数のデータネットワーク(例えばLAN、メトロポリタンエリアネットワーク(MAN)及び/又は広域ネットワーク(WAN)(例:インターネット))を含むことができ、1又は複数の音声ネットワーク(例えば一般加入電話網(PSTN))を含むことができる。図1を不必要に複雑にすることを避けるために示していないが、ネットワーク104は、クライアントとサーバー間のデータ又は情報等を伝達するための1又は複数の装置(例えば1又は複数のルーター又はスイッチ等)を含むことができる。
1又は複数のデータベース108は、1又は複数のサーバー106と通信するように構成することができる。その意味において、1又は複数のサーバー106は、データベース108の作成、維持管理及び使用を制御するデータベース管理システムを含むことができる。後で更に詳細に説明する通り、ウェブページコンテンツ及び/又はデータであってJavaScriptを保護することに関するものは、データベース108に保存し、本願明細書に記載の技術に従ってアクセスすることができる。
以下で図2を参照する。図2は、クライアント102及び/又はサーバー106の1又は複数の機能を作動又は実行するように構成可能な、一例である装置200のブロック図を図示する。別々の装置として図1には示されているが、ある実施形態において、装置200は論理的に隔てられているが装置200内に共に配置されているクライアント及びサーバーをサポートすることができる。装置200は、様々な手段を提供するように構成することができ、例えば、本願明細書に記載の1又は複数の機能(例えば、図3A及び3Bに示される方法300及び330)を実行するように構成することができる。しかしながら、装置200は単なる例であり、その他の構造物を使用して1又は複数の類似の機能を実行することもできることは言うまでもない。
図2に示すように、装置200は、メモリー204に接続しているプロセッサー202を含むことができる。メモリー204は、揮発性及び/又は不揮発性メモリーを含むことができ、一般的にはコンテンツ又はデータ等が保存される。この点に関しては、メモリーは、本願明細書に記載の1又は複数の機能をプロセッサー202によって実行することができる、1又は複数のアプリケーション206、モジュール、命令又はコンピューター可読性プログラムコード部等を保存することができる。かかるアプリケーションの1つの例は、JavaScriptアプリケーションを保護するものであり、限定するものではないが、本明細書においては「Hide JS」と称する。他のアプリケーションの例には、1又は複数のウェブブラウザ、生産性アプリケーション、ゲームアプリケーション又はユーティリティー等が含まれる。
メモリー204は、装置200から送信される、及び/又は、装置200によって受信されるコンテンツを保存するように構成することもできる。本願明細書に記載の通り、複数のアプリケーションは、それぞれ、複数の装置200によって作動する複数のモジュールを含むことができる。本願明細書で示すように、「モジュール」は、ソフトウェア、ファームウェア、ハードウェア又は任意のそれらの組み合わせによってインプリメントすることができる。
ある実施形態において、プロセッサー202は、データ又はコンテンツ等を表示、送信及び/又は受信するための少なくとも一つのインターフェース又は他の手段に(例えばUSB、RF、BT、IrDA、WLAN、LAN、MAN、WAN(例:インターネット)又はPSTN技術等に従って)接続することもできる。この点に関して、インターフェースは、データ又はコンテンツ等を送信及び/又は受信するための少なくとも一つの通信インターフェース208又は他の手段を含むことができる。通信インターフェース208に加えて、インターフェースは、少なくとも一つのユーザーインターフェース(1又は複数のイヤホン及び/又はスピーカーを含むことが可能)、画面210(ユーザーに視覚情報を示すように構成された任意の適切な表示画面を含むことが可能)及び/又はユーザー入力インターフェース212を含むこともできる。ユーザー入力インターフェース212は、ユーザーからのデータを装置200が受信できるようにする多くの装置(例えばマイクロホン、キーパッド、タッチセンサー式表面(ディスプレイ組込式又は独立式)、ジョイスティック、マウス又は他の入力装置)の1又は複数を含むことができる。
上記のように、装置200は、ある実施形態による装置の操作と関連するステップを実行するプロセッサー202による実行のためのアプリケーション(例えば、アプリケーション206)を含むことができる。かかるアプリケーションの1つの例、すなわち、Hide JSは、JavaScriptを保護するものである。
ある実施形態によれば、クライアント102及び/又はサーバー106の全て又は一部は、コンピュータープログラムの制御下で一般的には作動する。例示的な実施形態の方法を実行するためのコンピュータープログラムは、コンピューター可読性記憶媒体(例えば、不揮発性記憶媒体)に具体化されるか、そうでなければ保存される1又は複数のコンピューター可読性プログラムコード部(例えば一連のコンピュータ命令)を含むことができる。
例えば、図3A及び3Bは、それぞれ、ある実施形態に従って実行される、Javascriptを保護するための方法300及び330のフローチャートを示す。図3A及び3Bによって示されるフローチャートの各ブロック又はステップ、及び/又は、フローチャートのブロックの組合せは、様々な手段(例えば、ハードウェア、ファームウェア及び/又はソフトウェアであって1又は複数のコンピュータープログラム命令を含むもの)によってインプリメントすることができる機能を表している。当然のことながら、任意のかかるコンピュータープログラム命令は、コンピューター又は他のプログラム可能な装置にロードすることができ、その結果、コンピューター又は他のプログラム可能な装置(例えば、ハードウェア)で実行された命令が、フローチャートのブロック又はステップで特定される機能をインプリメントするための手段を作成し、それによってマシンがもたらされる。これらのコンピュータープログラム命令は、コンピューター可読性メモリー(例えば、メモリー204)に保存することもでき、これによってコンピューター又は他のプログラム可能な装置に特定の様式で機能するように指示することができる。その結果、かかるそのコンピューター可読性メモリーに保存された命令によって、フローチャートのブロック又はステップにおいて特定される機能をインプリメントする命令手段を含む製品がもたらされる。コンピュータープログラム命令は、コンピューター又は他のプログラム可能な装置にロードされ、コンピューター又は他のプログラム可能な装置で実行される一連の操作ステップを引き起し、コンピューターインプリメントプロセスをもたらすこともできる。コンピューター又は他のプログラム可能な装置で実行される命令は、フローチャートのブロック又はステップにおいて特定される機能をインプリメントするためのステップを提供する。
従って、フローチャートのブロック又はステップは、特定の機能を実行するための手段の組合せ、特定の機能を実行するためのステップの組合せ及び特定の機能を実行するためのプログラム命令手段をサポートする。当然のことながら、フローチャートの1又は複数のブロック又はステップ及びフローチャートにおけるブロック又はステップの組合せは、特定の機能若しくはステップ又は特殊用途のハードウェア及びコンピューター命令の組合せを実行する特殊用途のハードウェアに基づくコンピュータシステムによってインプリメントすることもできる。
図3Aの方法300は、1又は複数のクライアント装置(例えば、クライアント102)によって実行されるクライアント末端操作であってもよい。302において、クライアント装置は、情報プロトコールを経て実質的にウェブサイト及び/又は他のネットワーク目的地に到着することができる。例えば、クライアント102は、クライアント装置がウェブサイトに保存されている情報にアクセスすることができるウェブブラウザを実行することができる。本願明細書で称する、ウェブサイトに到着することには、クライアント装置に提供されるウェブサイトをクライアント装置がリクエストすることが含まれる。
304において、クライアント装置は、デバッグコンソールについてポーリングされる。デバッグコンソール及び/又は他のタイプのデバッグモジュールによって、クライアントは、関連するヘッダー評価を回避して(後でより詳細に説明する)、全てのドキュメント(例えば、JavaScriptファイル、HTMLファイル、メディアファイル)を受信することができるだろう。例えば、クライアントが、情報転送プロトコールを経て、Hide JSを使用するサーバーによってホストされるオンラインサービスに到達する場合、サーバーは、デバッグコンソールについてクライアントマシンをポーリングし、サービスアーキテクチャー内で揮発的又は持続的に存在するセッションデータのステータスをキャシュすることができる。
デバッグコンソールの有効状態が発見されたという判断に応じて、クライアントを306にリダイレクトして、サービスを308において不許可としてもよい。例えば、サービスが承認されないと、クライアントは、Hide JSプライバシー保護方法の態様を回避することができないとしてもよいし、例えば、図5に関連して更に述べている表示をクライアント装置のユーザーに示すことができる。
デバッグコンソールが検出されなかったという判断に応じて、方法300は、310へと進むことができ、クライアント装置はサービスへ進むことが可能になるだろう。例えば、クライアントは、クライアント装置上で実行中のウェブブラウザによって示されるウェブページ上で「右クリック」する(例えば、マウスの右ボタンを選択する)ことによって提供されるブラウザオプションのメニューからソースオプションの表示を選択することができる。
314において、クライアント装置は、様々な値のJavaScriptの提供が可能になり、そのユーザーがそのJavaScriptを閲覧して他のJavaScriptをロードすることが可能になる。例えば、ノミナル(nominal)値のJavaScriptを、クライアント装置102に提供してもよい。
ある実施形態において、断続的及び/又は時限的ポーリングは、セッションの全体にわたって実行することができ、最初のポーリングの後のデバッグコンソールの有効化を阻止してもよい。例えば、314において、クライアント装置にJavaScriptへのアクセスを承認しそれを提供した後に、タイマーを作動させることも可能である。所定の期間が過ぎ、316においてJavaScript及び/又は他の表示にアクセスする第二リクエストを受信し(例えば、クライアントがJavaScriptの提供をまだ受けており)、そして、318においてクライアントが、保護されたJavaScriptに対するアクセスを(例えば、ウェブブラウザのロケーションバーへのコピー&ペーストによって)試みようとした後に、方法300は、評価用サーバーにスクリプトリクエストを送る320へ進むことができ、該当する場合には、サーバーは308においてサービスに対するアクセスを拒否することができる。
図4は、ウェブページ410に進んだ後にユーザーがソース表示オプションを選択したことに応答してクライアント上に示すことができるウェブページ410のソース表示画面400(例えば、HTMLドキュメントとしてエンコードされたウェブページ)の例を示す。ソース表示画面400は、ウェブページ410のハイパーテキストを含むことができる。更に、保護されたJavaScriptをクライアントのウェブブラウザに(例えば、レイジーローディング(lazy loading)について、及び/又は、「get」関数を通じて)リクエストするように指示するノミナル値のJavaScriptは、URL 402に示すように、テキスト形式で表示させることができる。
保護されたJavaScriptをリクエストするために、ユーザーは、クライアント(例えば、ウェブブラウザ)のロケーションバーにURL 402を入力することができる。しかしながら、他の技術を用いて、保護されたJavaScriptをリクエストすることもできる(例えば、コピー&ペースト、スクリプト、ブラウザ拡張等)ことは言うまでもない。加えて及び/又は代わりに、保護されたJavaScriptのリクエストは、例えば、ロケーションバー412にURL 404を入力することによってユーザーがウェブページ410にアクセスする場合に行われ得る。
ある実施形態において、種々のスクリプトは、種々のセキュリティレベルで処置することができる。例えば、低レベルセキュリティスクリプトは314において表示させることができるが、高レベルセキュリティスクリプトは320及び308で遮断させることができる。
図3Bの方法330は、1又は複数のサーバー(例えば、サーバー106)によって実行可能なバックエンド機能の例である。332において、1又は複数のサーバー(例えば、サーバー106)は、情報転送プロトコールを経て、クライアント装置が(サーバーによりインターネットに公開させることができる)サイトに到着したことを判断するように構成することができる。例えば、クライアント装置(例えば、クライアント102)は、(例えば、クライアント装置のユーザーが、URLリンクの選択、ウェブブラウザの起動又は任意の他の技術によって、適切なユニフォームリソースロケーター(URL)をウェブブラウザのアドレスバーに入力する場合に)302において、サーバーが受信するデータ用のウェブサイトにリクエストを送信することができる。ウェブサイトには、情報転送プロトコールを経てサーバーによってホストされるサービスが含まれる。
ハイパーテキストトランスファープロトコル(HTTPは、RFC 2616においてドキュメント化されている通り、インターネット技術特別調査委員会(IETF)によって設定された規格であり、クライアントとサーバーとの間の通信を可能にする情報転送プロトコールの例である。HTTPに準拠するために、(例えば、クライアントとサーバーとの間の)全ての処理は、クライアントとサーバーの双方によってパースされる見えないフィールドの形式でリクエスト/応答ヘッダー情報の所定のセットを送受信しなければならない。ヘッダー情報を用いることによって、サーバーは、サーバーからの、リクエストコンテンツの最終的なデリバリーの管理を補助し得る、特定のルールをクライアントに送信することができる。
334において、1又は複数のサーバーは、デバッグコンソールステータスについて、クライアントをポーリングするか、そうでなければクライアントからデータを受信することができる。上述した通り、デバッグコンソール又は他のデバッグモジュールによって、クライアント装置は、少なくともいくつかの関連ヘッダー評価(以下で更に詳しく述べる)を回避する、及び/又は、サーバーからの少なくともいくつかの情報(例えば、JavaScriptファイル、HTMLファイル、メディアファイル等)を受信することができるだろう。ある実施形態において、JavaScriptに埋め込まれたスクリプトは、クライアントに最初に送信することができる。上記スクリプトは、ウェブサイトの残りのコンテンツ(例えば、保護されたJavascript)をロードする前に、有効なデバッグ装置及び/又はモジュールについてブラウザをポーリングすることができる。例えば、XMLHttpRequestを用いることによって、上記スクリプトは、ステータスをサーバーに戻すことができる。
336において、1又は複数のサーバーは、1又は複数のデータベース(例えばデータベース108)にデバッグコンソールステータス(例えば、クライアントは、デバッグコンソールが有効か否か)を保存するように構成することができる。これは、ウェブサイトのコンテンツが保存されているデータベースと同じであってもよい、及び/又は、異なっていてもよい。別の例として、上記ステータスは、サービスアーキテクチャー内で揮発的及び/又は持続的に存在するサーバー側セッションデータとして、キャッシュに保存することができる。このように、上記ステータスは、デバッグ装置が検出されるとクライアントによる更なるウェブサイトアクセス(例えば、ウェブサイトと関連したJavaScript及び/又は任意の他のデータによって提供されるサービスに対するアクセス)を拒否する認証情報の役割を果たすことができる。
338において有効なデバッグコンソールが検出されたという判断の後に、サーバーは、340においてクライアント装置にアクセスすることを拒否するように構成することができる。例えば、336においてクライアントに送信されるJavaScriptは、340において、(例えば、より詳細に後述するように追加のスクリプトをレイジーローディングすることを経て)その後の全てのJavaScriptの初期化を無効にするように構成することができる。加えて及び/又は代わりに、クライアントを(例えば、種々のウェブサイトに)リダイレクトしてもよく、サービスを不承認してもよく、及び/又は、そうでなければ、クライアントがサービス、ウェブサイト及び/又は関連データにアクセスすることを阻止してもよい。
有効なデバッグコンソールが検出されない場合、方法330は342へ進むことができる。クライアントは、JavaScriptが関連するサービス及び/又は他のウェブサイトデータに進むこと及び/又はアクセスすることができるだろう。
344において、1又は複数のサーバーは、保護されたJavaScriptに関するリクエストがクライアントからのリクエストか否かを判断するように構成することができる。このように、1又は複数のサーバーは、保護されたJaveScriptに関するリクエストを受信するように構成することができる。例えば、ウェブサイトがウェブブラウザにロードされると、クライアントのユーザーは、ウェブブラウザにおける「ソース表示」オプションを選択することができる。上述した通り、図4は、ウェブページ410に進んだ後にユーザーがソース表示オプションを選択したことに応答してクライアント上に示すことができるウェブページ410のソース表示画面400(例えば、HTMLドキュメントとしてエンコードされたウェブページ)の例を示す。保護されたJavaScriptに関するリクエストが346において受信されると、方法330は348へ進むことができる。
348において、1又は複数のサーバーは、リクエストが信頼されたリファラを経ての受信か否かを判断するように構成することができる。上記のように、HTTP規格では、リクエスト(例えば、346において受信される、保護されたJavaScriptに関するリクエスト)はフィールドの形式としてヘッダー情報を含むことを指定している。その意味において、リファラフィールドは、照会ドキュメント(例えば、図4のウェブページ410)が(例えば、図4のURL 402を経て)HTML構文中の追加のドキュメント(例えば、保護されたJavaScript)に関するHTTPリクエストを作成する場合に現れる。リファラフィールドは、(ディレクトリ、トップレベルドメイン、サブドメイン等を含む)照会ドキュメントのURLを含むことができる。このように、図4に示されるURL 404は、保護されたJavaScriptに関するリクエストがウェブページ410にアクセスしているユーザーを経て作成された場合の、リファラフィールドのデータの例である。当然のことながら、本願明細書で使用する「リファラフィールド」は、HTTPヘッダー情報にある「リファラフィールド」を指してもよい。ある実施形態において、リファラフィールドは、照会ドキュメント及び/又は照会ドキュメントの欠如を識別するネットワークプロトコル内の情報を指してもよい。
直接リクエストされたファイルの場合(例えば、保護されたJavaScriptが、ウェブページ410にアクセスすることを経てクライアントによってリクエストされていない場合)には、リファラの欠如は、空のリファラフィールドとなり得る。同様の結果は、ドキュメントURL(例えば、URL 402)がウェブブラウザ内のロケーションバーに直接入力された場合に発生する可能性がある。
ある実施形態において、ラッパーをリクエストの評価のために用いることができ、保護されたJavaScriptのデリバリー前に、確立済みの開発者仕様に従って応答をデリゲートすることができる。例えば、JavaServer Page(JSP)は、上記リクエストを評価し、適切なテキストファイルで応答することができる。ファイル拡張子は、「src」又は「href」リクエスト内のlocation stringのパラメーター要件の一部でないため、テキストドキュメントであるJSPドキュメントで応答することが可能であり、これよって、それらの規格に関する要件が満たされる。このように、ソース表示画像400は、図4に示すように、URL 406及び408の参照を含むことができる。
ウェブブラウザがcss-doc.jsp及びjavascript-doc.jspに関してリクエストする場合(例えば、ウェブページ410がクライアントによってアクセスされる場合)、リファラフィールドはURL 404を含むことができる。有効なリファラのデータベース(又は、1又は複数のデータベース)に対してURL 404を評価することができ、有効であることが明らかになった場合(例えば、URL404がJavaScriptに関する有効なリファラと一致する場合)、リクエストされた保護されたJavaScriptをデリゲートして、クライアントに返すことができる。
ある実施形態において、ウェブサイト又はサービス内の照会ドキュメントのいくつか又は全ては、有効なリファラの1又は複数のデータベースにドキュメント化することができる。ドキュメント名をデータベース管理システム(例えば正規化データ構造)に、又は、カンマ、スペース、引用符等によってトークン化されたテキストドキュメント内に保存してもよく、これによって、1又は複数のサーバーが効率的にリストをパースすることができる。
上記ドキュメントが照会ドキュメントなしに直接リクエストされると、1又は複数のサーバーはリファラの欠如を評価して、開発業者が(例えば、戻されたJSPドキュメント及び/又はテキストドキュメントを経て)適切なエラーメッセージを用いて応答することができるだろう。例えば、エラーメッセージには、図5のウェブブラウザ500の502に示すような、保護されたJavaScriptにアクセスできない旨の表示が含まれる。メッセージは、知的財産権保護に関する適切な法律情報を更に含むことができる。加えて及び/又は代わりに、アクセスの試みを記録することができる。
当然のことながら、ラッパーを使用してエラーメッセージを送ることによって、クライアントによる、保護されたJavaScriptソースコード、ソースコードを引き出すために使用できるデータ及び/又は保護されたJavaScriptの機能を曝露できるデータの表示を阻止することができる。加えて及び/又は代わりに、ラッパーは、ウェブブラウザが、保護されたJavaScriptをキャッシュするのを阻止することができ、これによって、リクエスト時及び/又は将来のアクセスが拒否される。このように、方法330は、ソースコードのアクセス容易性に対する障壁を提供することによって、悪意あるハッカーに対する妨害を補助することもできる。
350において、サーバーは、信頼されたリファラのデータベースに対してリクエストヘッダーを評価するように構成することができる。信頼されたリファラは、任意の適切な情報(例えばインターネットプロトコルアドレス、ユーザー名及び/若しくはパスワード並びに/又は任意の他の適切な情報であって本明細書においてリファラテキストと称されるものとして提供することができるもの)に基づいて認識することができる。
リファラテキストが、空である、信頼されたリファラのデータベースにおける対応するURLと一致しない、及び/又は、そうでなければリクエストされたJavaScriptに関する未許可のリファラテキストであるという判断に応じて、1又は複数のサーバーは、352においてエラーメッセージを送ることによって応答するように構成することができる。加えて、及び/又は代わりに、保護されたJavaScriptのスクリプトソースは、クライアントに送信されない。1又は複数のサーバーは、340において、保護されたJavascriptによって提供されるサービスに対するアクセスを拒否するように更に構成することができる。リファラテキストが信頼されたリファラのデータベースにおける対応するURLと一致する場合、サーバーは、サービス(例えば、保護されたJavaScript)に対するアクセスをクライアント装置に許可することができる。
346に一旦戻る。保護されたJavaScriptに関するリクエストが受信されないと、方法330は、334に戻ることができる。その場合、1又は複数のサーバーは、デバッグコンソールステータスに関してクライアントをポーリングすることができる。セッション全体にわたって実行される断続的又は時限的ポーリングは、最初のポーリングの後のデバッグコンソールの有効化を防止してもよい。
クライアントがコンテンツダウンロードの完了とポーリング間隔との間の期間においてデバッグコンソールを有効化することによって、方法330の一部を回避できる可能性があるため、ポーリングスクリプトを検索して無効化させる僅かな機会をデバッグコンソールに与えてしまう。
ある実施形態において、ポーリングスクリプトの無効化を効果的に阻害するために、サーバーは、ウェブブラウザにポーリング機能(例えば、アプリケーション)をバブル(bubble)及び/又はプッシュして、クライアントが最初のチェック後にデバッグコンソールを有効にしてこのセキュリティー手段を回避するのを阻止することができる。例えば、アプリケーションは、デバッグコンソールの有効化を検出すると即座に1又は複数のサーバーにメッセージを送信するように構成することができる。
任意のセキュリティー手段を回避可能な覚悟のある一部のハッカーが常に存在するであろう。その一方で、本願明細書において述べられる実施形態は、JavaScript及びカスケーディングスタイルシート(稀ではあるが、CSS IPを保護する必要な可能性があるもの)中に含まれる所有権のあるコードに基本的な知的財産権保護を提供することができる。
JavaScriptソースコードを曖昧にさせることよりはむしろ隠すことによって、開発業者は、オリジナルコードの保全性を維持することによってデバッグ作業段階を単純化できる可能性がある。更に悪意のあるハッカーを妨害するためか、コードの最適化を向上させるために、方法300及び/又は330を難読化技術及び/又はコード縮小技術と組み合わせてもよい。
方法300及び/又は330は、知的財産権を保護して利用するための直観的な機構を提供することができるため、JavaScriptの知的財産権をオープンソースにすること、会社の価値構築プロセスの一部としてそれを利用すること、及び/又は、例えば、クライアント装置によってそれらを幾つか組み合わせたものの選択肢が開発業者に与えられる。
ある実施形態において、方法330は、保護されたJavaScriptを提供するアプリケーションサーバーから分離されたサーバーで実行することができる。更に、方法330は、HTTPプロトコールに対する信頼性及びリクエスト/応答法内で発生する情報トランザクションの性質を理由として、多数のウェブアプリケーションサーバーによって実行することができる。その結果、PHP、Ruby(又は、任意の派生語)、Visual Basic Script、.NET、アパッチトムキャットは、スクリプト/プログラミング言語とそれらのアプリケーションサーバーの任意の同程度のセットと共に、Hide JSに関係するコンテンツ保護をデリバリーできる可能性がある。
ある実施形態において、方法330によってラップされたJavaScriptは、互換性があるように構築されたコンテンツデリバリーネットワークを通じてインスタンスを生成することができる。ウェブサイト又はサービスと同じアプリケーションサーバー上で方法330を実行することが可能な一方で、相当な性能オーバーヘッド問題がHTTPプロトコールを経たリクエストの増加によって引き起こされる可能性がある。
コンテンツデリバリーネットワークを、有効なトップレベルドメインの固有のサブドメインを有するサーバーの別々のセット上に、場合によっては、その後のサブドメインに設置することは、効率を向上させることができる。この技術を使用することによって、リクエスト水準の上昇を、リクエストを処理するために具体的に設計されたネットワークにデリゲートすることができる。
本願明細書に記載の本発明の多くの修正形態及び他の実施形態は、本発明のこれらの実施形態が上記記述及び関連した図面に示される教示の利益を有することを当業者に思い出させるだろう。したがって、本発明の実施形態は開示された特定の実施形態、変形例及び他の実施形態は、ここに記載の特許請求の範囲内に含まれることを意図しており、それに限定されるものではない。特定の用語が本明細書に用いられているが、それらは、限定の用途のためではなく、一般的かつ説明的な意味で使用されるにすぎない。

Claims (21)

  1. JavaScriptを保護する方法であって、
    ネットワークプロセッサーによって、デバッグコンソールがクライアント装置で有効か否かを判断するステップと、
    前記デバッグコンソールが前記クライアント装置で無効であるという判断に応じて、前記JavaScriptに対するアクセスを許可するか否かを更に評価するステップと、
    前記クライアント装置から前記JavaScriptにアクセスするためのリクエストを受信するステップと、
    前記クライアント装置が少なくとも一つの信頼されたリファラと関連しているか否かを判断するステップと、
    前記リクエストが前記信頼されたリファラを経ての受信であるという判断に応じて、前記JavaScriptに対するアクセスを提供するステップと、を含む方法。
  2. 前記デバッグコンソールが前記クライアント装置で有効か否かを判断するステップは、前記クライアント装置をポーリングするステップを含む、請求項1に記載の方法。
  3. 前記クライアント装置をポーリングするステップは、断続的に実行される、請求項2に記載の方法。
  4. 前記デバッグコンソールが前記クライアント装置で有効であるという判断に応じて、前記JavaScriptに対するアクセスをその後拒否するステップを更に含む、請求項1に記載の方法。
  5. 前記JavaScriptに対するアクセスを拒否するステップは、前記JavaScriptのソースコードの代わりに前記クライアント装置にエラーメッセージを送信するステップを含む、請求項4に記載の方法。
  6. 前記JavaScriptにアクセスする第二リクエストを受信するステップと、
    前記第二リクエストが信頼できないリファラを経て受信されると、前記第二リクエストに応じて前記JavaScriptのソースコードに対するアクセスを拒否するステップと、を更に含む、請求項1に記載の方法。
  7. 前記クライアント装置が前記信頼されたリファラと関連しているか否かを判断するステップは、1又は複数のデータベースにおける1又は複数の信頼されたリファラのリストにアクセスするステップを更に含む、請求項1に記載の方法。
  8. リファラフィールドからの抽出データ及び前記リクエストをパースするステップと、
    前記リファラフィールドの前記データと1又は複数の信頼されたリファラのリストとを比較して、前記信頼されたリファラを経て受信された前記リクエストが含まれているか否かを判断するステップと、を含む、請求項7に記載の方法。
  9. デバッグ装置が検出されると、前記JavaScriptによって提供されるサービスに対してアクセスを拒否するデバッグコンソールステータスを保存するステップを更に含む、請求項1に記載の方法。
  10. 前記JavaScriptは、ネットワークプロセッサーから分離したサーバーによって提供される、請求項1に記載の方法。
  11. コンピュータープログラム製品であって、
    前記製品は、非一時的コンピューター可読性記憶媒体及びそれに保存されたコンピュータープログラム命令を備え、
    前記コンピュータープログラム命令は、請求項1〜10のいずれかに記載の方法を実行するように構成されたプログラム命令を含む、製品。
  12. JavaScriptを保護するためのシステムであって、
    ネットワークプロセッサーによって、デバッグコンソールがクライアント装置で有効か否かを判断し、
    前記デバッグコンソールが前記クライアント装置で無効であるという判断に応じて、前記JavaScriptに対するアクセスを許可するか否かを更に評価し、
    前記クライアント装置から前記JavaScriptにアクセスするためのリクエストを受信し、
    前記クライアント装置が少なくとも一つの信頼されたリファラと関連しているか否かを判断し、そして、
    前記リクエストが前記信頼されたリファラを経ての受信であるという判断に応じて、前記JavaScriptに対するアクセスを提供する、ように構成された回路を備えるシステム。
  13. 前記回路は、前記デバッグコンソールが前記クライアント装置で有効か否かを決定し、前記クライアント装置をポーリングするように更に構成される、請求項12に記載のシステム。
  14. 前記回路は、前記クライアント装置を断続的にポーリングするように更に構成される、請求項13に記載のシステム。
  15. 前記回路は、前記デバッグコンソールが前記クライアント装置で有効であるという判断に応じて、前記JavaScriptに対するアクセスをその後拒否するように構成される、請求項12に記載のシステム。
  16. 前記JavaScriptに対するアクセスを拒否することは、前記JavaScriptのソースコードの代わりに前記クライアント装置にエラーメッセージを送信することを含む、請求項15に記載のシステム。
  17. 前記回路は、
    前記JavaScriptにアクセスする第二リクエストを受信し、そして、
    前記第二リクエストが信頼できないリファラを経て受信されると、前記第二リクエストに応答して前記JavaScriptのソースコードに対するアクセスを拒否する、ように更に構成される、請求項12に記載のシステム。
  18. 前記クライアント装置が前記信頼されたリファラと関連しているか否かを判断することは、1又は複数のデータベースにおける1又は複数の信頼されたリファラのリストにアクセスすることを更に含む、請求項12に記載のシステム。
  19. 前記回路は、
    リファラフィールドからの抽出データ及び前記リクエストをパースし、そして、
    前記リファラフィールドにおける前記データと1又は複数の信頼されたリファラのリストとを比較して、前記信頼されたリファラを経て受信された前記リクエストが含まれるか否かを判断する、ように更に構成される、請求項12に記載のシステム。
  20. 前記回路は、デバッグ装置が検出されると、前記JavaScriptによって提供されるサービスに対するアクセスを拒否するデバッグコンソールステータスを保存するように更に構成される、請求項12に記載のシステム。
  21. 前記回路から分離している前記クライアント装置に前記JavaScriptを提供するように構成されたサーバーを更に備える、請求項12に記載のシステム。
JP2014533483A 2011-09-30 2012-10-01 JavaScriptを保護する装置、方法及びコンピューター可読性記憶媒体 Pending JP2014534498A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161541481P 2011-09-30 2011-09-30
US61/541,481 2011-09-30
PCT/US2012/058349 WO2013049841A1 (en) 2011-09-30 2012-10-01 Apparatus, method and computer-readable storage medium for securing javascript

Publications (1)

Publication Number Publication Date
JP2014534498A true JP2014534498A (ja) 2014-12-18

Family

ID=47996517

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014533483A Pending JP2014534498A (ja) 2011-09-30 2012-10-01 JavaScriptを保護する装置、方法及びコンピューター可読性記憶媒体

Country Status (5)

Country Link
US (3) US10380382B2 (ja)
EP (1) EP2761463A1 (ja)
JP (1) JP2014534498A (ja)
CN (1) CN104137079A (ja)
WO (1) WO2013049841A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019502997A (ja) * 2015-12-17 2019-01-31 イルデト・ベー・フェー ウェブページ、ウェブアプリ、およびアプリケーションをセキュリティ保護すること
US11036849B2 (en) 2016-05-10 2021-06-15 Huawei Technologies Co., Ltd. Threat detection method and apparatus, and network system

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013049841A1 (en) * 2011-09-30 2013-04-04 Newman Infinite, Inc. Apparatus, method and computer-readable storage medium for securing javascript
CN103678125B (zh) * 2013-12-03 2017-01-25 华为技术有限公司 一种代码调试方法及调试系统
JP6244941B2 (ja) * 2014-01-28 2017-12-13 株式会社リコー 起動制御装置、通信システム、プログラム、及び起動制御方法
JP6244942B2 (ja) * 2014-01-28 2017-12-13 株式会社リコー 起動制御装置、通信システム、プログラム、及び起動制御方法
CN106528601A (zh) * 2016-09-23 2017-03-22 北京五八信息技术有限公司 动态配置组件的方法和装置
EP3867777A4 (en) * 2018-10-23 2022-06-22 Citrix Systems, Inc. LOCAL SECURE PLAYBACK OF WEB CONTENT
US11075882B2 (en) * 2019-02-28 2021-07-27 Check Point Software Technologies Ltd. Method and system for reducing false positives in web application firewalls
US11748460B2 (en) * 2020-04-27 2023-09-05 Imperva, Inc. Procedural code generation for challenge code
US11677574B1 (en) * 2020-07-02 2023-06-13 Intrado Corporation Automated conference sessions generated to manage application development
US11381517B2 (en) 2020-10-28 2022-07-05 Citrix Systems, Inc. Systems and methods for performing header protection in distributed systems

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006092840A1 (ja) * 2005-02-28 2006-09-08 Mitsubishi Denki Kabushiki Kaisha コンテンツ配信システム
JP2009294929A (ja) * 2008-06-05 2009-12-17 Toshiba Corp スクリプト秘匿実行プログラム及びサーバ装置
US20110203000A1 (en) * 2010-02-16 2011-08-18 Extensis Inc. Preventing unauthorized font linking

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3633216A (en) 1970-12-11 1972-01-11 George J Schonholtz Surgical glove
US20010018095A1 (en) 1987-07-17 2001-08-30 Shlenker Robin Renee Thill Method of forming a membrant, especially a latex or polymer membrane, including multiple discrete layers
US5483697A (en) 1989-05-22 1996-01-16 Board Of Regents The University Of Texas Multilayer protective coverings with a sealing solution
US5224422A (en) 1992-03-17 1993-07-06 John Marozzi Flexographic printing system
US5704065A (en) 1996-03-22 1998-01-06 Bost Enterprises, Inc. Golf gloves with indicia
US5958049A (en) * 1997-03-17 1999-09-28 International Business Machines Corporation Operating system debugger using kernel and dynamic extension with debugger drivers to support different output devices
US6061518A (en) * 1997-11-25 2000-05-09 International Business Machines Corporation Data processing system and method for debugging a JavaScript program
US7512986B2 (en) * 2001-03-28 2009-03-31 Nds Limited Digital rights management system and method
US20050033596A1 (en) * 2003-06-26 2005-02-10 Tummolo John F. Web-accessible, single-tier host-server-side computer programming application and the backend supporting business processes that represent a turnkey solution to "enable the turnkey activation of affordable, private, secure, scalable, sophisticated and extensible hierarchical communication networks for a plurality of American communities comprised of a plurality of members who may use any internet service provider (ISP) and who may use any relevant web browsing client in any relevant PC operating system to access the capability."
US8271803B2 (en) * 2003-10-08 2012-09-18 Microsoft Corporation Anti-debugging protection of binaries with proxy code execution
JP3804670B2 (ja) * 2004-04-21 2006-08-02 セイコーエプソン株式会社 半導体装置、電子機器及び半導体装置のアクセス制御方法
US7634760B1 (en) * 2005-05-23 2009-12-15 Netapp, Inc. System and method for remote execution of a debugging utility using a remote management module
US8245200B2 (en) * 2008-07-11 2012-08-14 International Business Machines Corporation Method, system, and apparatus for dynamically injecting logging statements into web 2.0 javascript applications
US9160545B2 (en) 2009-06-22 2015-10-13 Beyondtrust Software, Inc. Systems and methods for A2A and A2DB security using program authentication factors
CN102598017B (zh) * 2009-11-13 2016-03-09 爱迪德技术有限公司 提高Java字节码的防窜改能力的系统和方法
US8972945B2 (en) * 2010-10-21 2015-03-03 International Business Machines Corporation Collaborative software debugging in a distributed system with client-specific access control
US20120100246A1 (en) 2010-10-21 2012-04-26 Cheng Uei Precision Industry Co,, LTD. Slide core-pulling delayed mechanism and mould with the same
US9716743B2 (en) * 2011-09-02 2017-07-25 Microsoft Technology Licensing, Llc Accessing hardware devices using web server abstractions
WO2013049841A1 (en) * 2011-09-30 2013-04-04 Newman Infinite, Inc. Apparatus, method and computer-readable storage medium for securing javascript
US20130213094A1 (en) 2012-02-20 2013-08-22 Ansell Limited Zonal cut resistant glove
US20150189933A1 (en) 2012-05-07 2015-07-09 Erik Einesson Glove with Free-floating Double Layer of Protective Mesh

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006092840A1 (ja) * 2005-02-28 2006-09-08 Mitsubishi Denki Kabushiki Kaisha コンテンツ配信システム
JP2009294929A (ja) * 2008-06-05 2009-12-17 Toshiba Corp スクリプト秘匿実行プログラム及びサーバ装置
US20110203000A1 (en) * 2010-02-16 2011-08-18 Extensis Inc. Preventing unauthorized font linking

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019502997A (ja) * 2015-12-17 2019-01-31 イルデト・ベー・フェー ウェブページ、ウェブアプリ、およびアプリケーションをセキュリティ保護すること
US10867016B2 (en) 2015-12-17 2020-12-15 Irdeto B.V. Securing webpages, webapps and applications
US11675880B2 (en) 2015-12-17 2023-06-13 Irdeto B.V. Securing webpages, webapps and applications
US11036849B2 (en) 2016-05-10 2021-06-15 Huawei Technologies Co., Ltd. Threat detection method and apparatus, and network system
US11604872B2 (en) 2016-05-10 2023-03-14 Huawei Technologies Co., Ltd. Threat detection method and apparatus, and network system

Also Published As

Publication number Publication date
CN104137079A (zh) 2014-11-05
WO2013049841A1 (en) 2013-04-04
US20140338000A1 (en) 2014-11-13
EP2761463A1 (en) 2014-08-06
US20190303601A1 (en) 2019-10-03
US10380382B2 (en) 2019-08-13
US11886619B2 (en) 2024-01-30
US11126749B2 (en) 2021-09-21
US20220004653A1 (en) 2022-01-06

Similar Documents

Publication Publication Date Title
US11886619B2 (en) Apparatus and method for securing web application server source code
US11206451B2 (en) Information interception processing method, terminal, and computer storage medium
US9418218B2 (en) Dynamic rendering of a document object model
EP2847686B1 (en) Enhanced document and event mirroring for accessing content
US10079854B1 (en) Client-side protective script to mitigate server loading
US8819109B1 (en) Data network communication using identifiers mappable to resource locators
US8291475B2 (en) Secure cross-domain communication for web mashups
US8910277B1 (en) Process-based domain isolation
US20090037517A1 (en) Method and system to share content between web clients
US9294479B1 (en) Client-side authentication
EP3136656B1 (en) Information sharing method and device
EP2642718B1 (en) Dynamic rendering of a document object model
WO2015014189A1 (zh) 一种访问网站的方法及装置
WO2014074964A1 (en) Providing and procuring worksheet functions through an online marketplace
CN106899549B (zh) 一种网络安全检测方法及装置
WO2014063521A1 (zh) 一种企业内网访问控制方法和系统
US9471533B1 (en) Defenses against use of tainted cache
CN103269313B (zh) 嵌入式linux家庭网关强制门户的实现方法
JP5347429B2 (ja) ユニフォームリソースロケータ書換方法及び装置
US20150150081A1 (en) Template representation of security resources
US9398066B1 (en) Server defenses against use of tainted cache
US20160366172A1 (en) Prevention of cross site request forgery attacks
US20210152599A1 (en) Cross-site request forgery protection
CN105991599B (zh) Jsonp请求方法及装置
JP2006227753A (ja) ウェブサイトアクセス制御システム、ウェブサイトアクセス制御サーバ、ウェブサイトアクセス制御方法、及びウェブサイトアクセス制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151001

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170425