コンテンツ配信装置、コンテンツ配信制御方法、および、コンテンツ配信制御プログラム
【課題】コンテンツ配信ネットワークにより配信される広告等のコンテンツの掲載場所を保証する。
【解決手段】クライアント端末からの他のサーバ装置から取得したページコンテンツに含まれる配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともにページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供手段と、クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証手段と、アクセス時に付加されるページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証手段と、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供手段とを備える。
【解決手段】クライアント端末からの他のサーバ装置から取得したページコンテンツに含まれる配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともにページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供手段と、クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証手段と、アクセス時に付加されるページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証手段と、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供手段とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、インターネット等のネットワーク上で広告等のコンテンツを配信するためのコンテンツ配信装置、コンテンツ配信制御方法、および、コンテンツ配信制御プログラムに関する。
【背景技術】
【0002】
インターネットのWebページの中には広告等のコンテンツが含まれており、WebページのHTML(Hyper Text Markup Language)を解釈する過程でサーバ側からコンテンツデータの取得(サーバから見ればコンテンツ配信)が行われる。
【0003】
図1は従来のWebサーバによるコンテンツ配信の例を示す図であり、Webサーバ3のWebページを閲覧するクライアント端末1のブラウザ11が、同一のWebサーバ3上にあるコンテンツを参照する。すなわち、Webサーバ3から出力されたWebページのHTMLと、Webサーバ3から配信されるコンテンツは同一のブラウザ11によって閲覧されることになる。従って、テキスト、画像等のコンテンツはWebページによって表示制御が可能であり、コンテンツだけを切り離して他のブラウザで表示させることを抑制することができる。
【0004】
一方、インターネットにおけるWebシステムを運用する際、サーバへの負荷分散、キャッシュを利用した効率的な配信およびWebページに含まれるコンテンツの動的な差し替えを実現するため、Webサーバとは別のコンテンツ配信サーバを用いることがある。コンテンツ配信サーバは、テキスト、画像(静止画、動画)等のコンテンツを、ユーザのブラウザが参照するWebサーバとは別のコンテンツ配信サーバから送信し、ブラウザで表示を行うものである。この仕組みはコンテンツ配信ネットワーク(CDN:Contents Delivery Network)と呼ばれている。
【0005】
コンテンツ配信ネットワークにおけるコンテンツ配信手法としては、
(1)HTMLによるページコンテンツ(コンテンツ配信サーバから配信を受けるコンテンツを含まないページデータ)に記述された「<img>」タグ等の配信タグによってコンテンツ配信サーバよりコンテンツを配信
(2)ページコンテンツに記述された「<embed>」タグ等によってコンテンツ配信サーバより配信
(3)ページコンテンツに記述されたJavaScriptによって、上記(1)(2)のコンテンツ引き当てのためのコンテンツ配信サーバに対するリクエストを生成
等がある。
【0006】
図2は従来のコンテンツ配信サーバによるコンテンツ配信の例を示す図であり、図3はその処理例を示すシーケンス図である。
【0007】
図2および図3において、コンテンツ配信は次のように行なわれる。
【0008】
先ず、事前準備として、Webサーバ3上のWebページにコンテンツの場所を示す配信タグを埋め込む。図4(a)は配信タグの例を示しており、画像の場合は「 <img src="http://配信サーバ名/?contentid=00001>」といった記述となり、Flash(音声やベクターグラフィックスのアニメーションを組み合わせて作成されたWebコンテンツ)の場合は「<embed src="http://配信サーバ名/?contentid=0001">」といった記述となり、テキストの場合は「<script type="javascript" src="http://配信サーバ名/?contentid=0001">」といった記述となる。
【0009】
次いで、図3に戻り、ブラウザ11からWebサーバ3にWebページの取得リクエストを送信すると(ステップS1)、Webサーバ3は、ブラウザ11からの要求に従い、Webサーバ3上にある配信タグを含むWebページ(HTML)をブラウザ11に返却する(ステップS2)。
【0010】
次いで、ブラウザ11はWebサーバ3から返却されたWebページをレンダリングする過程において、配信タグ内に記述されているコンテンツ配信サーバ4にコンテンツ取得リクエストを送信する(ステップS3)。
【0011】
コンテンツ配信サーバ4は、ブラウザ11から到達したコンテンツ取得リクエストに従って、コンテンツデータをコンテンツ配信サーバ4内もしくはネットワーク上のコンテンツストレージから取得し(ステップS4、S5)、コンテンツデータをブラウザ11に送信する(ステップS6)。図4(b)は送信されるコンテンツデータの例を示しており、画像の場合は画像データ、Flashの場合はFlashデータ、テキストの場合はテキストを書き出すJavaScriptのコードとなる。
【0012】
なお、出願人は出願時点までに本発明に関連する公開された先行技術文献を発見することができなかった。よって、先行技術文献情報を開示していない。
【発明の開示】
【発明が解決しようとする課題】
【0013】
上述したように、インターネットにおけるWebシステムを運用する上では、ブラウザが参照するWebサーバとは別のコンテンツ配信サーバからコンテンツを送信するコンテンツ配信ネットワークが望ましいものであるが、このようなコンテンツ配信ネットワークにあっては次のような問題があった。
【0014】
すなわち、HTMLと画像等のコンテンツの配信経路が分離されているコンテンツ配信ネットワークの場合においては、コンテンツ配信サーバが配信するコンテンツが所定のWebサーバ(A)から出力されたHTMLによる呼び出しなのか、他のWebサーバ(B)から出力されたHTMLによる呼び出しなのかの判別をつけることが困難である。そのため、HTMLに記述されたコンテンツ配信サーバへのコンテンツリクエストとなるコンテンツ配信用の記述(配信タグ)を他のWebページにコピーすることによって、コンテンツ配信サーバが保持するコンテンツを自由に外部から参照できてしまうことになる。
【0015】
特に広告に関するコンテンツの場合、広告掲載場所となるドメイン、サイト、URLを指定したコンテンツ配信を行う契約であることが多く、バナー広告やテキスト広告といったコンテンツが外部WebサイトおよびWebページにコピーされ、配信されてしまうことは好ましくない。
【0016】
より具体的には次の点が問題となる。
(1)配信タグの間違いもしくは改竄
配信タグの記述を間違えてしまう、あるいは配信タグを意図的に書き換える行為に対して、配信を抑制または配信異常を検知する手段がない。そのため、しかるべき場所に配信されるべきコンテンツが配信されないという事態が発生する可能性がある。
(2)配信タグの移動
(ア)配信タグは、どのWebページに埋め込まれていても動作するため、コンテンツ配信をすべきWebページではないWebページまたは他のWebサーバ上のWebページに対してもコンテンツ配信を行うことができてしまう。
【0017】
(イ)配信タグが埋め込まれているWebページを確認する手段としては、ブラウザがコンテンツ配信サーバに対して送信してくるHTTP_REFFERERがあるが、REFFERERは改竄可能であり、また、ウィルス対策ソフト等によってREFFERER送信が制限されている場合が存在するため、確実な手段ではない。
【0018】
本発明は上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、コンテンツ配信ネットワークにより配信される広告等のコンテンツの掲載場所を保証することのできるコンテンツ配信装置、コンテンツ配信制御方法、および、コンテンツ配信制御プログラムを提供することにある。
【課題を解決するための手段】
【0019】
上記の課題を解決するため、本発明にあっては、請求項1に記載されるように、他のサーバ装置から取得したページコンテンツに含まれる配信タグを介してクライアント端末からアクセスを受け付け、当該クライアント端末にコンテンツの配信を行なう装置であって、上記クライアント端末からの上記配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともに上記ページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供手段と、上記クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、当該アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証手段と、コード検証が正常に行なわれた場合に、アクセス時に付加される上記ページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証手段と、サーバ検証が正常に行なわれた場合に、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供手段とを備えるコンテンツ配信装置を要旨としている。
【0020】
また、請求項2に記載されるように、請求項1に記載のコンテンツ配信装置において、上記コード検証手段は、上記コードの提供時に付加したタイムスタンプにより、現在時刻から所定時間以内に取得したコードによるアクセスであるか否かの時刻認証を更に行うようにすることができる。
【0021】
また、請求項3に記載されるように、請求項1または2のいずれか一項に記載のコンテンツ配信装置において、上記コード提供手段の付加する署名は、コンテンツを一意に識別するコンテンツIDと、ページコンテンツを提供するサーバ装置のドメインと、処理時点の時刻を示すタイムスタンプと、アクセスしてきたクライアント端末のユーザエージェントおよびIPアドレスと、内部の秘密鍵とを合体したものにハッシュアルゴリズムを適用して生成するようにすることができる。
【0022】
また、請求項4に記載されるように、請求項1乃至3のいずれか一項に記載のコンテンツ配信装置において、上記クライアント端末からの上記配信タグを介したアクセスに際し、当該アクセス時に付加される、上記配信タグに含まれる他の署名に基づいて配信タグの正当性を検証する配信タグ検証手段を備えるようにすることができる。
【0023】
また、請求項5に記載されるように、請求項4に記載のコンテンツ配信装置において、上記他の署名は、コンテンツを一意に識別するコンテンツIDと、ページコンテンツを提供するサーバ装置のドメインと、内部の他の秘密鍵とを合体したものにハッシュアルゴリズムを適用して生成するようにすることができる。
【0024】
また、請求項6に記載されるように、他のサーバ装置から取得したページコンテンツに含まれる配信タグを介してクライアント端末からアクセスを受け付け、当該クライアント端末にコンテンツの配信を行なう方法であって、上記クライアント端末からの上記配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともに上記ページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供工程と、上記クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、当該アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証工程と、コード検証が正常に行なわれた場合に、アクセス時に付加される上記ページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証工程と、サーバ検証が正常に行なわれた場合に、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供工程とを備えるコンテンツ配信制御方法として構成することができる。
【0025】
また、請求項7に記載されるように、他のサーバ装置から取得したページコンテンツに含まれる配信タグを介してクライアント端末からアクセスを受け付け、当該クライアント端末にコンテンツの配信を行なう装置の制御プログラムであって、コンピュータを、上記クライアント端末からの上記配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともに上記ページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供手段、上記クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、当該アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証手段、コード検証が正常に行なわれた場合に、アクセス時に付加される上記ページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証手段、サーバ検証が正常に行なわれた場合に、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供手段、として機能させるコンテンツ配信制御プログラムとして構成することができる。
【発明の効果】
【0026】
本発明のコンテンツ配信装置、コンテンツ配信制御方法、および、コンテンツ配信制御プログラムにあっては、ページコンテンツに含まれる配信タグを介したアクセスに応じてJavaScript等のコードを返送し、そのコードによるコンテンツの引き当てのアクセスに応じてコンテンツを提供するようにし、コードに付加した署名によってコードが正当なものであるか否かを検証するとともに、コードによって取得したページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するようにしているため、コンテンツ配信ネットワークにより配信される広告等のコンテンツの掲載場所を保証することができる。
【発明を実施するための最良の形態】
【0027】
以下、本発明の好適な実施形態につき説明する。
【0028】
<システム構成>
図5は本発明の一実施形態にかかるシステムの構成例を示す図である。
【0029】
図5において、インターネット等のネットワーク2にはWebサーバ3およびコンテンツ配信サーバ4が接続されており、ユーザの使用するPC(Personal Computer)、PDA(Personal Digital Assistants)、携帯電話等のクライアント端末1に搭載されたブラウザ11からWebサーバ3およびコンテンツ配信サーバ4にアクセスが可能となっている。
【0030】
Webサーバ3は、HTTP(Hyper Text Transfer Protocol)に基づくページデータ取得のリクエストに応じ、ストレージ31に格納されたHTMLで記述されたページコンテンツPをレスポンスとして要求元に返す機能を有している。なお、ページコンテンツPにはコンテンツ取得のための任意数の配信タグTが含まれている。配信タグTの具体例については後述するが、クライアント端末1での解釈・実行時にページコンテンツPの取得元のWebサーバ3の情報を取得するとともにコンテンツの引き当てを行なう機能を有するJavaScriptのソースをコンテンツ配信サーバ4から取得するために用いられる。
【0031】
コンテンツ配信サーバ4は、クライアント端末1からのHTTPリクエストを受信するHTTPリクエスト受信部41と、リクエストがJavaScriptソース取得リクエストである場合に、リクエストに付加されるパラメータによって配信タグTが正当なものであるか否かを検証する配信タグ検証部42と、配信タグTが正当なものである場合にクライアント端末1に送信するJavaScriptソースを生成するJavaScript生成部43とを備えている。
【0032】
また、コンテンツ配信サーバ4は、クライアント端末1からのリクエストがコンテンツ引き当てリクエストである場合に、リクエストに付加されるパラメータによってJavaScriptが正当なものであるか否かを検証するJavaScript検証部44と、JavaScriptが正当なものである場合に、リクエストに付加されるパラメータによって、クライアント端末1でのページコンテンツPの取得元のWebサーバ3の情報(ドメイン、URL)からコンテンツ提供が許可されるか否かを検証するURL検証部45と、コンテンツ提供が許可される場合にコンテンツ配信サーバ4内部もしくはネットワーク上にあるコンテンツストレージ40からコンテンツを取得するコンテンツ取得部46とを備えている。
【0033】
また、コンテンツ配信サーバ4は、JavaScript生成部43で生成されたJavaScriptソースもしくはコンテンツ取得部46で取得されたコンテンツを要求元であるクライアント端末1に送信するHTTPレスポンス送信部47を備えている。
【0034】
更に、配信タグ検証部42での配信タグ検証に用いられる秘密鍵#1 K1と、JavaScript生成部43でのJavaScript生成およびJavaScript検証部44でのJavaScript検証に用いられる秘密鍵#2 K2と、URL検証部45でのURL検証に用いられるURLテーブルUTとが保持されている。
【0035】
<動作>
図6は上記の実施形態の処理例を示すシーケンス図である。
【0036】
先ず、事前の作業として、配信タグTをWebサーバ3のページコンテンツPに埋め込んでおく。図7は配信タグTの例を示す図であり、(a)に示すように、ソース取得先URL(コンテンツ配信サーバ4のURL)のパラメータとして、コンテンツを一意に識別するコンテンツIDと、ページコンテンツを提供するWebサーバ3のドメインと、情報の改竄を検証するための署名#1とを含んでいる。署名#1は、コンテンツIDとドメインと秘密鍵#1とを合体したものにHMAC−SHA1等のハッシュアルゴリズムを適用して生成する。
【0037】
(b)はページコンテンツPに埋め込まれた配信タグTの具体例を示しており、HTML上のコンテンツを表示すべき位置に配信タグTが埋め込まれている。「<script〜></script>」はJavaScript等のスクリプトが記述される部分であることを示し、「type="text/javascript"」はタイプ(種別)がテキストもしくはJavaScriptであることを示し、「src="http://コンテンツ配信サーバ名/」はコンテンツ配信サーバ4のURLを示している。また、「ContentID=0001」はコンテンツIDを示し、「domain=example.co.jp」はドメインを示し、「sig=Xp34iSXA"」は署名#1を示している。
【0038】
図6に戻り、クライアント端末1のブラウザ11からWebサーバ3にWebページ取得リクエストを行なうと(ステップS101)、Webサーバ3は配信タグTを含むページコンテンツPのWebページHTMLをブラウザ11に返却する(ステップS102)。
【0039】
ブラウザ11は、受信したページコンテンツPのHTMLを解釈してレンダリング(描画)を行う過程で、配信タグTを解釈し、配信タグTのソース取得先であるコンテンツ配信サーバ4にJavaScriptソース取得リクエストを送信する(ステップS103)。なお、このJavaScriptソース取得リクエストには配信タグTに設定されているコンテンツID、ドメイン、署名#1がURLパラメータとして付加される。
【0040】
コンテンツ配信サーバ4ではHTTPリクエスト受信部41によりJavaScriptソース取得リクエストを受信すると、配信タグ検証部42により、URLパラメータに含まれる署名#1を用いて他のパラメータ(コンテンツID、ドメイン)が改竄されていないかどうか検証を行う(ステップS104)。図8は配信タグ検証の例を示す図であり、JavaScriptソース取得リクエストに付加されたURLパラメータのコンテンツIDおよびドメインと内部の秘密鍵#1(図5の秘密鍵#1 K1)とを合体したものにHMAC−SHA1等のハッシュアルゴリズムを適用して検証用の署名を生成し、JavaScriptソース取得リクエストに付加されたURLパラメータの署名#1と一致するか否か検証する。両者が一致する場合には改竄がないものと判断する。一致しない場合は、改竄の可能性があるとしてログ等にその旨を記録し、管理者の参考に供する。
【0041】
次いで、配信タグの検証が正常に行なわれた場合、コンテンツ配信サーバ4ではJavaScript生成部43により、JavaScriptソース返却時パラメータとJavaScriptソースとを生成する(ステップS105)。
図9(a)はJavaScriptソース返却時パラメータの例を示しており、JavaScriptソース取得リクエストに付加されたURLパラメータのコンテンツIDおよびドメインと、処理時点の時刻を示すタイムスタンプと、署名#2とを含んでいる。署名#2は、コンテンツIDとドメインとタイムスタンプと、JavaScriptソース取得リクエストの受信時にHTTPリクエストのヘッダから取得したユーザエージェント(User-Agent:端末の情報を示す文字列)およびIP(Internet Protocol)アドレスと、内部の秘密鍵#2(図5の秘密鍵#2 K2)とを合体したものにHMAC−MD5等のハッシュアルゴリズムを適用して生成する。
【0042】
図9(b)はJavaScriptソースの例を示しており、変数を設定する記述D1と、テキストコンテンツの場合のコンテンツ引き当てのための記述D2と、画像コンテンツの場合のコンテンツ引き当てのための記述D3とを含んでいる。なお、テキストコンテンツだけの場合は記述D3を含まず、画像コンテンツだけの場合は記述D2を含まない。
【0043】
記述D1の各行の意味は次のとおりである。
・「var gdomain = document.domain;」
変数gdomainにdocumentオブジェクトのdomain値を代入する。すなわち、JavaScript実行時にクライアント端末1で参照しているWebページのdomain値を変数gdomainに設定する。
・「var url = document.URL;」
変数urlにdocumentオブジェクトのurl値を代入する。すなわち、JavaScript実行時にクライアント端末1で参照しているWebページのurl値を変数urlに設定する。
・「var ref = document.referrer;」
変数refにdocumentオブジェクトのreferrer値を代入する。すなわち、JavaScript実行時にクライアント端末1で参照しているWebページのreferrer値を変数refに設定する。
・「var id = <コンテンツID>;」
変数idにコンテンツIDを設定する。コンテンツIDはJavaScriptソース返却時パラメータのコンテンツIDである。
・「var dm = <ドメイン>; 」
変数dmにドメインを設定する。ドメインはJavaScriptソース返却時パラメータのドメインである。
・「var ts = <タイムスタンプ>;」
変数tsにタイムスタンプを設定する。タイムスタンプはJavaScriptソース返却時パラメータのタイムスタンプである。
・「var ua = <ユーザエージェント>」
変数uaにユーザエージェントを設定する。ユーザエージェントはJavaScriptソース返却時パラメータを生成した際に用いたユーザエージェントである。
・「var sig = <署名#2>;」
変数sigに署名#2を設定する。署名#2はJavaScriptソース返却時パラメータの署名#2である。
・「domain = URL_ENCODE(gdomain);」
変数gdomainを正規のURL表現にエンコードする。
・「url = URL_ENCODE(url);」
変数urlを正規のURL表現にエンコードする。
・「ref = URL_ENCODE(ref);」
変数refを正規のURL表現にエンコードする。
【0044】
記述D2はテキストコンテンツを取得するためのタグを書き出す部分であり、ソース取得先URL(コンテンツ配信サーバ4のURL)のパラメータとして、コンテンツID、ドメイン、タイムスタンプ、署名#2、取得ドメイン、取得URL、取得リファラーを含んでいる。
【0045】
記述D3は画像コンテンツを取得するためのタグを書き出す部分であり、ソース取得先URL(コンテンツ配信サーバ4のURL)のパラメータとして、コンテンツID、ドメイン、タイムスタンプ、署名#2、取得ドメイン、取得URL、取得リファラーを含んでいる。
【0046】
図6に戻り、コンテンツ配信サーバ4は生成したJavaScriptソースをHTTPレスポンス送信部47によりブラウザ11にレスポンスとして送信する(ステップS106)。
【0047】
次いで、ブラウザ11は取得したJavaScriptソースを実行する(ステップS107)。図9(b)の記述D1の部分の実行によりブラウザ11で閲覧しているページコンテンツPのドメインとURLとリファラーが取得され、記述D2もしくは記述D3の実行によりコンテンツ取得のためのタグが書き出される。図10はブラウザ11でのJavaScript実行により取得されるデータの例を示す図であり、図9(b)の記述D1の部分の実行によりドメインとURLとリファラーが取得されることを示している。
【0048】
次いで、図6に戻り、ブラウザ11はJavaScriptソースの実行により書き出されたコンテンツ取得のためのタグを解釈する過程で、ソース取得先であるコンテンツ配信サーバ4にコンテンツ引き当てリクエストを送信する(ステップS108)。このコンテンツ引き当てリクエストには、コンテンツID、ドメイン、タイムスタンプ、署名#2、取得ドメイン、取得URL、取得リファラーがURLパラメータとして付加されている。
【0049】
コンテンツ配信サーバ4ではHTTPリクエスト受信部41によりコンテンツ引き当てリクエストを受信すると、JavaScript検証部44により、URLパラメータに含まれる署名#2を用いてJavaScriptソースが改竄されていないかどうか検証を行う(ステップS109)。このJavaScript検証では、次の2点につき検証を行なう。
(ア)コンテンツID、ドメイン、タイムスタンプが改竄されていないかどうかの検証。
(イ)配信タグ検証(ステップS104)〜JavaScriptソース返却(ステップS106)までの一次処理と同一ブラウザによるアクセスかどうかの検証。
(イ−1)一次処理と同一のIPアドレス、ユーザエージェントによるアクセスかどうかの検証(端末の同一性の保証)。
(イ−2)JavaScriptソース返却(ステップS106)〜JavaScript検証(ステップS109)に至る経過時間が所定時間(1500ms等)以内に収まっているかどうかの検証(手作業による改竄を防止)。
【0050】
この2点の項目でJavaScriptソース返却(ステップS106)〜コンテンツ引き当てリクエスト(ステップS108)の経路においてJavaScriptの整合性をチェックする。
【0051】
図11はJavaScript検証の例を示す図であり、コンテンツ引き当てリクエストに付加されたURLパラメータのコンテンツIDとドメインとタイムスタンプと、コンテンツ引き当てリクエストの受信時にHTTPリクエストのヘッダから取得したユーザエージェントおよびIPアドレスと、内部の秘密鍵#2(図5の秘密鍵#2 K2)とを合体したものにHMAC−MD5等のハッシュアルゴリズムを適用して検証用の署名を生成し、コンテンツ引き当てリクエストに付加されたURLパラメータの署名#2と一致するか否か検証する。また、コンテンツ引き当てリクエストに付加されたパラメータのタイムスタンプが現在時刻から所定時間(図では1500ms)を引いたものよりも大きいか否かによる時刻検証を行なう。両検証が正常である場合にはJavaScriptソースが改竄されていないものと判断する。いずれかの検証が否定的である場合は、その旨をログに記録し、管理者の参考に供する。
【0052】
次いで、図6に戻り、コンテンツ配信サーバ4ではJavaScriptソースが改竄されていないと判断された場合、URL検証部45により、コンテンツ引き当てリクエストに付加されたURLパラメータの取得ドメインと取得URLとドメインとに基づき、URLテーブルUTを用いてコンテンツ提供が許可されるか否か(許可配信先ウェブサイトに貼られている配信タグかどうか)のURL検証を行なう(ステップS110)。図12はURL検証の例を示す図であり、(a)に示すように取得ドメインとドメインが一致し、かつ、ドメイン(取得ドメイン)と取得URLがURLテーブルUTに対応付けて登録されているか否かを検証する。(b)はURLテーブルUTの例を示したものであり、ドメインと許可/不許可URLとが予め対応付けられて登録されている。
【0053】
次いで、図6に戻り、コンテンツ配信サーバ4ではURL検証の結果、コンテンツ提供が許可されると判断された場合、コンテンツ取得部46により、コンテンツ配信サーバ4内部もしくはネットワーク上にあるコンテンツストレージ40からコンテンツIDに対応するコンテンツデータを取得する(ステップS111、S112)。
【0054】
そして、コンテンツ配信サーバ4ではHTTPレスポンス送信部47により、コンテンツデータをブラウザ11に送信する(ステップS113)。図13は配信されるコンテンツの例を示す図であり、テキストコンテンツの場合は記述D11のようにコンテンツ内容を書き出すJavaScriptソースが含まれ、画像コンテンツの場合は記述D12のように画像データが含まれる。
【0055】
なお、1次処理(ステップS104〜S106)と2次処理(ステップS109〜S113)は、ブラウザ11とコンテンツ配信サーバ4の間でパラメータを引き回し、バリデーションを行なうため、コンテンツ配信サーバ4のホストに依存しない。そのため、コンテンツ配信サーバ4の名称がDNSラウンドロビンされている場合やロードバランサー配下に複数のサーバが存在するような場合においても有効に機能する。
【0056】
<総括>
以上説明したように、本発明の実施形態にあっては次のような利点がある。
(1)コンテンツ配信ネットワークにより配信される広告等のコンテンツの掲載場所を保証することができ、コンテンツを保護することができる。
(2)配信タグを他の許可ドメイン以外へコピーすることによってコンテンツ配信サーバのリソースを浪費させる行為を防止することができる。
(3)配信タグの間違いや改竄を有効に防止することができる。
(4)通信経路の暗号化やプラグイン(plugin)導入等の方法に依存せず、ブラウザだけで配信先を制御することができる。
(5)複数のコンテンツ配信サーバの名称がDNSラウンドロビンされている場合やロードバランサー配下にあったとしても正常に機能するため、プロダクトとして展開することが容易である。
(6)完全な配信先制御方法ではないが、現在の配信方法では不可能な配信先制御が可能である。
【0057】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【図面の簡単な説明】
【0058】
【図1】従来のWebサーバによるコンテンツ配信の例を示す図である。
【図2】従来のコンテンツ配信サーバによるコンテンツ配信の例を示す図である。
【図3】従来のコンテンツ配信サーバによるコンテンツ配信の処理例を示すシーケンス図である。
【図4】データ例を示す図である。
【図5】本発明の一実施形態にかかるシステムの構成例を示す図である。
【図6】実施形態の処理例を示すシーケンス図である。
【図7】配信タグの例を示す図である。
【図8】配信タグ検証の例を示す図である。
【図9】JavaScriptソース返却時パラメータおよびJavaScriptソースの例を示す図である。
【図10】ブラウザでのJavaScript実行により取得されるデータの例を示す図である。
【図11】JavaScript検証の例を示す図である。
【図12】URL検証の例を示す図である。
【図13】配信されるコンテンツの例を示す図である。
【符号の説明】
【0059】
1 クライアント端末
11 ブラウザ
2 ネットワーク
3 Webサーバ
31 ストレージ
4 コンテンツ配信サーバ
41 HTTPリクエスト受信部
42 配信タグ検証部
43 JavaScript生成部
44 JavaScript検証部
45 URL検証部
46 コンテンツ取得部
47 HTTPレスポンス送信部
40 コンテンツストレージ
P ページコンテンツ
T 配信タグ
K1 秘密鍵#1
K2 秘密鍵#2
UT URLテーブル
【技術分野】
【0001】
本発明は、インターネット等のネットワーク上で広告等のコンテンツを配信するためのコンテンツ配信装置、コンテンツ配信制御方法、および、コンテンツ配信制御プログラムに関する。
【背景技術】
【0002】
インターネットのWebページの中には広告等のコンテンツが含まれており、WebページのHTML(Hyper Text Markup Language)を解釈する過程でサーバ側からコンテンツデータの取得(サーバから見ればコンテンツ配信)が行われる。
【0003】
図1は従来のWebサーバによるコンテンツ配信の例を示す図であり、Webサーバ3のWebページを閲覧するクライアント端末1のブラウザ11が、同一のWebサーバ3上にあるコンテンツを参照する。すなわち、Webサーバ3から出力されたWebページのHTMLと、Webサーバ3から配信されるコンテンツは同一のブラウザ11によって閲覧されることになる。従って、テキスト、画像等のコンテンツはWebページによって表示制御が可能であり、コンテンツだけを切り離して他のブラウザで表示させることを抑制することができる。
【0004】
一方、インターネットにおけるWebシステムを運用する際、サーバへの負荷分散、キャッシュを利用した効率的な配信およびWebページに含まれるコンテンツの動的な差し替えを実現するため、Webサーバとは別のコンテンツ配信サーバを用いることがある。コンテンツ配信サーバは、テキスト、画像(静止画、動画)等のコンテンツを、ユーザのブラウザが参照するWebサーバとは別のコンテンツ配信サーバから送信し、ブラウザで表示を行うものである。この仕組みはコンテンツ配信ネットワーク(CDN:Contents Delivery Network)と呼ばれている。
【0005】
コンテンツ配信ネットワークにおけるコンテンツ配信手法としては、
(1)HTMLによるページコンテンツ(コンテンツ配信サーバから配信を受けるコンテンツを含まないページデータ)に記述された「<img>」タグ等の配信タグによってコンテンツ配信サーバよりコンテンツを配信
(2)ページコンテンツに記述された「<embed>」タグ等によってコンテンツ配信サーバより配信
(3)ページコンテンツに記述されたJavaScriptによって、上記(1)(2)のコンテンツ引き当てのためのコンテンツ配信サーバに対するリクエストを生成
等がある。
【0006】
図2は従来のコンテンツ配信サーバによるコンテンツ配信の例を示す図であり、図3はその処理例を示すシーケンス図である。
【0007】
図2および図3において、コンテンツ配信は次のように行なわれる。
【0008】
先ず、事前準備として、Webサーバ3上のWebページにコンテンツの場所を示す配信タグを埋め込む。図4(a)は配信タグの例を示しており、画像の場合は「 <img src="http://配信サーバ名/?contentid=00001>」といった記述となり、Flash(音声やベクターグラフィックスのアニメーションを組み合わせて作成されたWebコンテンツ)の場合は「<embed src="http://配信サーバ名/?contentid=0001">」といった記述となり、テキストの場合は「<script type="javascript" src="http://配信サーバ名/?contentid=0001">」といった記述となる。
【0009】
次いで、図3に戻り、ブラウザ11からWebサーバ3にWebページの取得リクエストを送信すると(ステップS1)、Webサーバ3は、ブラウザ11からの要求に従い、Webサーバ3上にある配信タグを含むWebページ(HTML)をブラウザ11に返却する(ステップS2)。
【0010】
次いで、ブラウザ11はWebサーバ3から返却されたWebページをレンダリングする過程において、配信タグ内に記述されているコンテンツ配信サーバ4にコンテンツ取得リクエストを送信する(ステップS3)。
【0011】
コンテンツ配信サーバ4は、ブラウザ11から到達したコンテンツ取得リクエストに従って、コンテンツデータをコンテンツ配信サーバ4内もしくはネットワーク上のコンテンツストレージから取得し(ステップS4、S5)、コンテンツデータをブラウザ11に送信する(ステップS6)。図4(b)は送信されるコンテンツデータの例を示しており、画像の場合は画像データ、Flashの場合はFlashデータ、テキストの場合はテキストを書き出すJavaScriptのコードとなる。
【0012】
なお、出願人は出願時点までに本発明に関連する公開された先行技術文献を発見することができなかった。よって、先行技術文献情報を開示していない。
【発明の開示】
【発明が解決しようとする課題】
【0013】
上述したように、インターネットにおけるWebシステムを運用する上では、ブラウザが参照するWebサーバとは別のコンテンツ配信サーバからコンテンツを送信するコンテンツ配信ネットワークが望ましいものであるが、このようなコンテンツ配信ネットワークにあっては次のような問題があった。
【0014】
すなわち、HTMLと画像等のコンテンツの配信経路が分離されているコンテンツ配信ネットワークの場合においては、コンテンツ配信サーバが配信するコンテンツが所定のWebサーバ(A)から出力されたHTMLによる呼び出しなのか、他のWebサーバ(B)から出力されたHTMLによる呼び出しなのかの判別をつけることが困難である。そのため、HTMLに記述されたコンテンツ配信サーバへのコンテンツリクエストとなるコンテンツ配信用の記述(配信タグ)を他のWebページにコピーすることによって、コンテンツ配信サーバが保持するコンテンツを自由に外部から参照できてしまうことになる。
【0015】
特に広告に関するコンテンツの場合、広告掲載場所となるドメイン、サイト、URLを指定したコンテンツ配信を行う契約であることが多く、バナー広告やテキスト広告といったコンテンツが外部WebサイトおよびWebページにコピーされ、配信されてしまうことは好ましくない。
【0016】
より具体的には次の点が問題となる。
(1)配信タグの間違いもしくは改竄
配信タグの記述を間違えてしまう、あるいは配信タグを意図的に書き換える行為に対して、配信を抑制または配信異常を検知する手段がない。そのため、しかるべき場所に配信されるべきコンテンツが配信されないという事態が発生する可能性がある。
(2)配信タグの移動
(ア)配信タグは、どのWebページに埋め込まれていても動作するため、コンテンツ配信をすべきWebページではないWebページまたは他のWebサーバ上のWebページに対してもコンテンツ配信を行うことができてしまう。
【0017】
(イ)配信タグが埋め込まれているWebページを確認する手段としては、ブラウザがコンテンツ配信サーバに対して送信してくるHTTP_REFFERERがあるが、REFFERERは改竄可能であり、また、ウィルス対策ソフト等によってREFFERER送信が制限されている場合が存在するため、確実な手段ではない。
【0018】
本発明は上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、コンテンツ配信ネットワークにより配信される広告等のコンテンツの掲載場所を保証することのできるコンテンツ配信装置、コンテンツ配信制御方法、および、コンテンツ配信制御プログラムを提供することにある。
【課題を解決するための手段】
【0019】
上記の課題を解決するため、本発明にあっては、請求項1に記載されるように、他のサーバ装置から取得したページコンテンツに含まれる配信タグを介してクライアント端末からアクセスを受け付け、当該クライアント端末にコンテンツの配信を行なう装置であって、上記クライアント端末からの上記配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともに上記ページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供手段と、上記クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、当該アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証手段と、コード検証が正常に行なわれた場合に、アクセス時に付加される上記ページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証手段と、サーバ検証が正常に行なわれた場合に、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供手段とを備えるコンテンツ配信装置を要旨としている。
【0020】
また、請求項2に記載されるように、請求項1に記載のコンテンツ配信装置において、上記コード検証手段は、上記コードの提供時に付加したタイムスタンプにより、現在時刻から所定時間以内に取得したコードによるアクセスであるか否かの時刻認証を更に行うようにすることができる。
【0021】
また、請求項3に記載されるように、請求項1または2のいずれか一項に記載のコンテンツ配信装置において、上記コード提供手段の付加する署名は、コンテンツを一意に識別するコンテンツIDと、ページコンテンツを提供するサーバ装置のドメインと、処理時点の時刻を示すタイムスタンプと、アクセスしてきたクライアント端末のユーザエージェントおよびIPアドレスと、内部の秘密鍵とを合体したものにハッシュアルゴリズムを適用して生成するようにすることができる。
【0022】
また、請求項4に記載されるように、請求項1乃至3のいずれか一項に記載のコンテンツ配信装置において、上記クライアント端末からの上記配信タグを介したアクセスに際し、当該アクセス時に付加される、上記配信タグに含まれる他の署名に基づいて配信タグの正当性を検証する配信タグ検証手段を備えるようにすることができる。
【0023】
また、請求項5に記載されるように、請求項4に記載のコンテンツ配信装置において、上記他の署名は、コンテンツを一意に識別するコンテンツIDと、ページコンテンツを提供するサーバ装置のドメインと、内部の他の秘密鍵とを合体したものにハッシュアルゴリズムを適用して生成するようにすることができる。
【0024】
また、請求項6に記載されるように、他のサーバ装置から取得したページコンテンツに含まれる配信タグを介してクライアント端末からアクセスを受け付け、当該クライアント端末にコンテンツの配信を行なう方法であって、上記クライアント端末からの上記配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともに上記ページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供工程と、上記クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、当該アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証工程と、コード検証が正常に行なわれた場合に、アクセス時に付加される上記ページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証工程と、サーバ検証が正常に行なわれた場合に、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供工程とを備えるコンテンツ配信制御方法として構成することができる。
【0025】
また、請求項7に記載されるように、他のサーバ装置から取得したページコンテンツに含まれる配信タグを介してクライアント端末からアクセスを受け付け、当該クライアント端末にコンテンツの配信を行なう装置の制御プログラムであって、コンピュータを、上記クライアント端末からの上記配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともに上記ページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供手段、上記クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、当該アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証手段、コード検証が正常に行なわれた場合に、アクセス時に付加される上記ページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証手段、サーバ検証が正常に行なわれた場合に、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供手段、として機能させるコンテンツ配信制御プログラムとして構成することができる。
【発明の効果】
【0026】
本発明のコンテンツ配信装置、コンテンツ配信制御方法、および、コンテンツ配信制御プログラムにあっては、ページコンテンツに含まれる配信タグを介したアクセスに応じてJavaScript等のコードを返送し、そのコードによるコンテンツの引き当てのアクセスに応じてコンテンツを提供するようにし、コードに付加した署名によってコードが正当なものであるか否かを検証するとともに、コードによって取得したページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するようにしているため、コンテンツ配信ネットワークにより配信される広告等のコンテンツの掲載場所を保証することができる。
【発明を実施するための最良の形態】
【0027】
以下、本発明の好適な実施形態につき説明する。
【0028】
<システム構成>
図5は本発明の一実施形態にかかるシステムの構成例を示す図である。
【0029】
図5において、インターネット等のネットワーク2にはWebサーバ3およびコンテンツ配信サーバ4が接続されており、ユーザの使用するPC(Personal Computer)、PDA(Personal Digital Assistants)、携帯電話等のクライアント端末1に搭載されたブラウザ11からWebサーバ3およびコンテンツ配信サーバ4にアクセスが可能となっている。
【0030】
Webサーバ3は、HTTP(Hyper Text Transfer Protocol)に基づくページデータ取得のリクエストに応じ、ストレージ31に格納されたHTMLで記述されたページコンテンツPをレスポンスとして要求元に返す機能を有している。なお、ページコンテンツPにはコンテンツ取得のための任意数の配信タグTが含まれている。配信タグTの具体例については後述するが、クライアント端末1での解釈・実行時にページコンテンツPの取得元のWebサーバ3の情報を取得するとともにコンテンツの引き当てを行なう機能を有するJavaScriptのソースをコンテンツ配信サーバ4から取得するために用いられる。
【0031】
コンテンツ配信サーバ4は、クライアント端末1からのHTTPリクエストを受信するHTTPリクエスト受信部41と、リクエストがJavaScriptソース取得リクエストである場合に、リクエストに付加されるパラメータによって配信タグTが正当なものであるか否かを検証する配信タグ検証部42と、配信タグTが正当なものである場合にクライアント端末1に送信するJavaScriptソースを生成するJavaScript生成部43とを備えている。
【0032】
また、コンテンツ配信サーバ4は、クライアント端末1からのリクエストがコンテンツ引き当てリクエストである場合に、リクエストに付加されるパラメータによってJavaScriptが正当なものであるか否かを検証するJavaScript検証部44と、JavaScriptが正当なものである場合に、リクエストに付加されるパラメータによって、クライアント端末1でのページコンテンツPの取得元のWebサーバ3の情報(ドメイン、URL)からコンテンツ提供が許可されるか否かを検証するURL検証部45と、コンテンツ提供が許可される場合にコンテンツ配信サーバ4内部もしくはネットワーク上にあるコンテンツストレージ40からコンテンツを取得するコンテンツ取得部46とを備えている。
【0033】
また、コンテンツ配信サーバ4は、JavaScript生成部43で生成されたJavaScriptソースもしくはコンテンツ取得部46で取得されたコンテンツを要求元であるクライアント端末1に送信するHTTPレスポンス送信部47を備えている。
【0034】
更に、配信タグ検証部42での配信タグ検証に用いられる秘密鍵#1 K1と、JavaScript生成部43でのJavaScript生成およびJavaScript検証部44でのJavaScript検証に用いられる秘密鍵#2 K2と、URL検証部45でのURL検証に用いられるURLテーブルUTとが保持されている。
【0035】
<動作>
図6は上記の実施形態の処理例を示すシーケンス図である。
【0036】
先ず、事前の作業として、配信タグTをWebサーバ3のページコンテンツPに埋め込んでおく。図7は配信タグTの例を示す図であり、(a)に示すように、ソース取得先URL(コンテンツ配信サーバ4のURL)のパラメータとして、コンテンツを一意に識別するコンテンツIDと、ページコンテンツを提供するWebサーバ3のドメインと、情報の改竄を検証するための署名#1とを含んでいる。署名#1は、コンテンツIDとドメインと秘密鍵#1とを合体したものにHMAC−SHA1等のハッシュアルゴリズムを適用して生成する。
【0037】
(b)はページコンテンツPに埋め込まれた配信タグTの具体例を示しており、HTML上のコンテンツを表示すべき位置に配信タグTが埋め込まれている。「<script〜></script>」はJavaScript等のスクリプトが記述される部分であることを示し、「type="text/javascript"」はタイプ(種別)がテキストもしくはJavaScriptであることを示し、「src="http://コンテンツ配信サーバ名/」はコンテンツ配信サーバ4のURLを示している。また、「ContentID=0001」はコンテンツIDを示し、「domain=example.co.jp」はドメインを示し、「sig=Xp34iSXA"」は署名#1を示している。
【0038】
図6に戻り、クライアント端末1のブラウザ11からWebサーバ3にWebページ取得リクエストを行なうと(ステップS101)、Webサーバ3は配信タグTを含むページコンテンツPのWebページHTMLをブラウザ11に返却する(ステップS102)。
【0039】
ブラウザ11は、受信したページコンテンツPのHTMLを解釈してレンダリング(描画)を行う過程で、配信タグTを解釈し、配信タグTのソース取得先であるコンテンツ配信サーバ4にJavaScriptソース取得リクエストを送信する(ステップS103)。なお、このJavaScriptソース取得リクエストには配信タグTに設定されているコンテンツID、ドメイン、署名#1がURLパラメータとして付加される。
【0040】
コンテンツ配信サーバ4ではHTTPリクエスト受信部41によりJavaScriptソース取得リクエストを受信すると、配信タグ検証部42により、URLパラメータに含まれる署名#1を用いて他のパラメータ(コンテンツID、ドメイン)が改竄されていないかどうか検証を行う(ステップS104)。図8は配信タグ検証の例を示す図であり、JavaScriptソース取得リクエストに付加されたURLパラメータのコンテンツIDおよびドメインと内部の秘密鍵#1(図5の秘密鍵#1 K1)とを合体したものにHMAC−SHA1等のハッシュアルゴリズムを適用して検証用の署名を生成し、JavaScriptソース取得リクエストに付加されたURLパラメータの署名#1と一致するか否か検証する。両者が一致する場合には改竄がないものと判断する。一致しない場合は、改竄の可能性があるとしてログ等にその旨を記録し、管理者の参考に供する。
【0041】
次いで、配信タグの検証が正常に行なわれた場合、コンテンツ配信サーバ4ではJavaScript生成部43により、JavaScriptソース返却時パラメータとJavaScriptソースとを生成する(ステップS105)。
図9(a)はJavaScriptソース返却時パラメータの例を示しており、JavaScriptソース取得リクエストに付加されたURLパラメータのコンテンツIDおよびドメインと、処理時点の時刻を示すタイムスタンプと、署名#2とを含んでいる。署名#2は、コンテンツIDとドメインとタイムスタンプと、JavaScriptソース取得リクエストの受信時にHTTPリクエストのヘッダから取得したユーザエージェント(User-Agent:端末の情報を示す文字列)およびIP(Internet Protocol)アドレスと、内部の秘密鍵#2(図5の秘密鍵#2 K2)とを合体したものにHMAC−MD5等のハッシュアルゴリズムを適用して生成する。
【0042】
図9(b)はJavaScriptソースの例を示しており、変数を設定する記述D1と、テキストコンテンツの場合のコンテンツ引き当てのための記述D2と、画像コンテンツの場合のコンテンツ引き当てのための記述D3とを含んでいる。なお、テキストコンテンツだけの場合は記述D3を含まず、画像コンテンツだけの場合は記述D2を含まない。
【0043】
記述D1の各行の意味は次のとおりである。
・「var gdomain = document.domain;」
変数gdomainにdocumentオブジェクトのdomain値を代入する。すなわち、JavaScript実行時にクライアント端末1で参照しているWebページのdomain値を変数gdomainに設定する。
・「var url = document.URL;」
変数urlにdocumentオブジェクトのurl値を代入する。すなわち、JavaScript実行時にクライアント端末1で参照しているWebページのurl値を変数urlに設定する。
・「var ref = document.referrer;」
変数refにdocumentオブジェクトのreferrer値を代入する。すなわち、JavaScript実行時にクライアント端末1で参照しているWebページのreferrer値を変数refに設定する。
・「var id = <コンテンツID>;」
変数idにコンテンツIDを設定する。コンテンツIDはJavaScriptソース返却時パラメータのコンテンツIDである。
・「var dm = <ドメイン>; 」
変数dmにドメインを設定する。ドメインはJavaScriptソース返却時パラメータのドメインである。
・「var ts = <タイムスタンプ>;」
変数tsにタイムスタンプを設定する。タイムスタンプはJavaScriptソース返却時パラメータのタイムスタンプである。
・「var ua = <ユーザエージェント>」
変数uaにユーザエージェントを設定する。ユーザエージェントはJavaScriptソース返却時パラメータを生成した際に用いたユーザエージェントである。
・「var sig = <署名#2>;」
変数sigに署名#2を設定する。署名#2はJavaScriptソース返却時パラメータの署名#2である。
・「domain = URL_ENCODE(gdomain);」
変数gdomainを正規のURL表現にエンコードする。
・「url = URL_ENCODE(url);」
変数urlを正規のURL表現にエンコードする。
・「ref = URL_ENCODE(ref);」
変数refを正規のURL表現にエンコードする。
【0044】
記述D2はテキストコンテンツを取得するためのタグを書き出す部分であり、ソース取得先URL(コンテンツ配信サーバ4のURL)のパラメータとして、コンテンツID、ドメイン、タイムスタンプ、署名#2、取得ドメイン、取得URL、取得リファラーを含んでいる。
【0045】
記述D3は画像コンテンツを取得するためのタグを書き出す部分であり、ソース取得先URL(コンテンツ配信サーバ4のURL)のパラメータとして、コンテンツID、ドメイン、タイムスタンプ、署名#2、取得ドメイン、取得URL、取得リファラーを含んでいる。
【0046】
図6に戻り、コンテンツ配信サーバ4は生成したJavaScriptソースをHTTPレスポンス送信部47によりブラウザ11にレスポンスとして送信する(ステップS106)。
【0047】
次いで、ブラウザ11は取得したJavaScriptソースを実行する(ステップS107)。図9(b)の記述D1の部分の実行によりブラウザ11で閲覧しているページコンテンツPのドメインとURLとリファラーが取得され、記述D2もしくは記述D3の実行によりコンテンツ取得のためのタグが書き出される。図10はブラウザ11でのJavaScript実行により取得されるデータの例を示す図であり、図9(b)の記述D1の部分の実行によりドメインとURLとリファラーが取得されることを示している。
【0048】
次いで、図6に戻り、ブラウザ11はJavaScriptソースの実行により書き出されたコンテンツ取得のためのタグを解釈する過程で、ソース取得先であるコンテンツ配信サーバ4にコンテンツ引き当てリクエストを送信する(ステップS108)。このコンテンツ引き当てリクエストには、コンテンツID、ドメイン、タイムスタンプ、署名#2、取得ドメイン、取得URL、取得リファラーがURLパラメータとして付加されている。
【0049】
コンテンツ配信サーバ4ではHTTPリクエスト受信部41によりコンテンツ引き当てリクエストを受信すると、JavaScript検証部44により、URLパラメータに含まれる署名#2を用いてJavaScriptソースが改竄されていないかどうか検証を行う(ステップS109)。このJavaScript検証では、次の2点につき検証を行なう。
(ア)コンテンツID、ドメイン、タイムスタンプが改竄されていないかどうかの検証。
(イ)配信タグ検証(ステップS104)〜JavaScriptソース返却(ステップS106)までの一次処理と同一ブラウザによるアクセスかどうかの検証。
(イ−1)一次処理と同一のIPアドレス、ユーザエージェントによるアクセスかどうかの検証(端末の同一性の保証)。
(イ−2)JavaScriptソース返却(ステップS106)〜JavaScript検証(ステップS109)に至る経過時間が所定時間(1500ms等)以内に収まっているかどうかの検証(手作業による改竄を防止)。
【0050】
この2点の項目でJavaScriptソース返却(ステップS106)〜コンテンツ引き当てリクエスト(ステップS108)の経路においてJavaScriptの整合性をチェックする。
【0051】
図11はJavaScript検証の例を示す図であり、コンテンツ引き当てリクエストに付加されたURLパラメータのコンテンツIDとドメインとタイムスタンプと、コンテンツ引き当てリクエストの受信時にHTTPリクエストのヘッダから取得したユーザエージェントおよびIPアドレスと、内部の秘密鍵#2(図5の秘密鍵#2 K2)とを合体したものにHMAC−MD5等のハッシュアルゴリズムを適用して検証用の署名を生成し、コンテンツ引き当てリクエストに付加されたURLパラメータの署名#2と一致するか否か検証する。また、コンテンツ引き当てリクエストに付加されたパラメータのタイムスタンプが現在時刻から所定時間(図では1500ms)を引いたものよりも大きいか否かによる時刻検証を行なう。両検証が正常である場合にはJavaScriptソースが改竄されていないものと判断する。いずれかの検証が否定的である場合は、その旨をログに記録し、管理者の参考に供する。
【0052】
次いで、図6に戻り、コンテンツ配信サーバ4ではJavaScriptソースが改竄されていないと判断された場合、URL検証部45により、コンテンツ引き当てリクエストに付加されたURLパラメータの取得ドメインと取得URLとドメインとに基づき、URLテーブルUTを用いてコンテンツ提供が許可されるか否か(許可配信先ウェブサイトに貼られている配信タグかどうか)のURL検証を行なう(ステップS110)。図12はURL検証の例を示す図であり、(a)に示すように取得ドメインとドメインが一致し、かつ、ドメイン(取得ドメイン)と取得URLがURLテーブルUTに対応付けて登録されているか否かを検証する。(b)はURLテーブルUTの例を示したものであり、ドメインと許可/不許可URLとが予め対応付けられて登録されている。
【0053】
次いで、図6に戻り、コンテンツ配信サーバ4ではURL検証の結果、コンテンツ提供が許可されると判断された場合、コンテンツ取得部46により、コンテンツ配信サーバ4内部もしくはネットワーク上にあるコンテンツストレージ40からコンテンツIDに対応するコンテンツデータを取得する(ステップS111、S112)。
【0054】
そして、コンテンツ配信サーバ4ではHTTPレスポンス送信部47により、コンテンツデータをブラウザ11に送信する(ステップS113)。図13は配信されるコンテンツの例を示す図であり、テキストコンテンツの場合は記述D11のようにコンテンツ内容を書き出すJavaScriptソースが含まれ、画像コンテンツの場合は記述D12のように画像データが含まれる。
【0055】
なお、1次処理(ステップS104〜S106)と2次処理(ステップS109〜S113)は、ブラウザ11とコンテンツ配信サーバ4の間でパラメータを引き回し、バリデーションを行なうため、コンテンツ配信サーバ4のホストに依存しない。そのため、コンテンツ配信サーバ4の名称がDNSラウンドロビンされている場合やロードバランサー配下に複数のサーバが存在するような場合においても有効に機能する。
【0056】
<総括>
以上説明したように、本発明の実施形態にあっては次のような利点がある。
(1)コンテンツ配信ネットワークにより配信される広告等のコンテンツの掲載場所を保証することができ、コンテンツを保護することができる。
(2)配信タグを他の許可ドメイン以外へコピーすることによってコンテンツ配信サーバのリソースを浪費させる行為を防止することができる。
(3)配信タグの間違いや改竄を有効に防止することができる。
(4)通信経路の暗号化やプラグイン(plugin)導入等の方法に依存せず、ブラウザだけで配信先を制御することができる。
(5)複数のコンテンツ配信サーバの名称がDNSラウンドロビンされている場合やロードバランサー配下にあったとしても正常に機能するため、プロダクトとして展開することが容易である。
(6)完全な配信先制御方法ではないが、現在の配信方法では不可能な配信先制御が可能である。
【0057】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【図面の簡単な説明】
【0058】
【図1】従来のWebサーバによるコンテンツ配信の例を示す図である。
【図2】従来のコンテンツ配信サーバによるコンテンツ配信の例を示す図である。
【図3】従来のコンテンツ配信サーバによるコンテンツ配信の処理例を示すシーケンス図である。
【図4】データ例を示す図である。
【図5】本発明の一実施形態にかかるシステムの構成例を示す図である。
【図6】実施形態の処理例を示すシーケンス図である。
【図7】配信タグの例を示す図である。
【図8】配信タグ検証の例を示す図である。
【図9】JavaScriptソース返却時パラメータおよびJavaScriptソースの例を示す図である。
【図10】ブラウザでのJavaScript実行により取得されるデータの例を示す図である。
【図11】JavaScript検証の例を示す図である。
【図12】URL検証の例を示す図である。
【図13】配信されるコンテンツの例を示す図である。
【符号の説明】
【0059】
1 クライアント端末
11 ブラウザ
2 ネットワーク
3 Webサーバ
31 ストレージ
4 コンテンツ配信サーバ
41 HTTPリクエスト受信部
42 配信タグ検証部
43 JavaScript生成部
44 JavaScript検証部
45 URL検証部
46 コンテンツ取得部
47 HTTPレスポンス送信部
40 コンテンツストレージ
P ページコンテンツ
T 配信タグ
K1 秘密鍵#1
K2 秘密鍵#2
UT URLテーブル
【特許請求の範囲】
【請求項1】
他のサーバ装置から取得したページコンテンツに含まれる配信タグを介してクライアント端末からアクセスを受け付け、当該クライアント端末にコンテンツの配信を行なう装置であって、
上記クライアント端末からの上記配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともに上記ページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供手段と、
上記クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、当該アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証手段と、
コード検証が正常に行なわれた場合に、アクセス時に付加される上記ページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証手段と、
サーバ検証が正常に行なわれた場合に、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供手段とを備えたことを特徴とするコンテンツ配信装置。
【請求項2】
請求項1に記載のコンテンツ配信装置において、
上記コード検証手段は、上記コードの提供時に付加したタイムスタンプにより、現在時刻から所定時間以内に取得したコードによるアクセスであるか否かの時刻認証を更に行うことを特徴とするコンテンツ配信装置。
【請求項3】
請求項1または2のいずれか一項に記載のコンテンツ配信装置において、
上記コード提供手段の付加する署名は、コンテンツを一意に識別するコンテンツIDと、ページコンテンツを提供するサーバ装置のドメインと、処理時点の時刻を示すタイムスタンプと、アクセスしてきたクライアント端末のユーザエージェントおよびIPアドレスと、内部の秘密鍵とを合体したものにハッシュアルゴリズムを適用して生成することを特徴とするコンテンツ配信装置。
【請求項4】
請求項1乃至3のいずれか一項に記載のコンテンツ配信装置において、
上記クライアント端末からの上記配信タグを介したアクセスに際し、当該アクセス時に付加される、上記配信タグに含まれる他の署名に基づいて配信タグの正当性を検証する配信タグ検証手段を備えたことを特徴とするコンテンツ配信装置。
【請求項5】
請求項4に記載のコンテンツ配信装置において、
上記他の署名は、コンテンツを一意に識別するコンテンツIDと、ページコンテンツを提供するサーバ装置のドメインと、内部の他の秘密鍵とを合体したものにハッシュアルゴリズムを適用して生成することを特徴とするコンテンツ配信装置。
【請求項6】
他のサーバ装置から取得したページコンテンツに含まれる配信タグを介してクライアント端末からアクセスを受け付け、当該クライアント端末にコンテンツの配信を行なう方法であって、
上記クライアント端末からの上記配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともに上記ページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供工程と、
上記クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、当該アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証工程と、
コード検証が正常に行なわれた場合に、アクセス時に付加される上記ページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証工程と、
サーバ検証が正常に行なわれた場合に、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供工程とを備えたことを特徴とするコンテンツ配信制御方法。
【請求項7】
他のサーバ装置から取得したページコンテンツに含まれる配信タグを介してクライアント端末からアクセスを受け付け、当該クライアント端末にコンテンツの配信を行なう装置の制御プログラムであって、
コンピュータを、
上記クライアント端末からの上記配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともに上記ページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供手段、
上記クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、当該アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証手段、
コード検証が正常に行なわれた場合に、アクセス時に付加される上記ページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証手段、
サーバ検証が正常に行なわれた場合に、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供手段、
として機能させることを特徴とするコンテンツ配信制御プログラム。
【請求項1】
他のサーバ装置から取得したページコンテンツに含まれる配信タグを介してクライアント端末からアクセスを受け付け、当該クライアント端末にコンテンツの配信を行なう装置であって、
上記クライアント端末からの上記配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともに上記ページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供手段と、
上記クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、当該アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証手段と、
コード検証が正常に行なわれた場合に、アクセス時に付加される上記ページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証手段と、
サーバ検証が正常に行なわれた場合に、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供手段とを備えたことを特徴とするコンテンツ配信装置。
【請求項2】
請求項1に記載のコンテンツ配信装置において、
上記コード検証手段は、上記コードの提供時に付加したタイムスタンプにより、現在時刻から所定時間以内に取得したコードによるアクセスであるか否かの時刻認証を更に行うことを特徴とするコンテンツ配信装置。
【請求項3】
請求項1または2のいずれか一項に記載のコンテンツ配信装置において、
上記コード提供手段の付加する署名は、コンテンツを一意に識別するコンテンツIDと、ページコンテンツを提供するサーバ装置のドメインと、処理時点の時刻を示すタイムスタンプと、アクセスしてきたクライアント端末のユーザエージェントおよびIPアドレスと、内部の秘密鍵とを合体したものにハッシュアルゴリズムを適用して生成することを特徴とするコンテンツ配信装置。
【請求項4】
請求項1乃至3のいずれか一項に記載のコンテンツ配信装置において、
上記クライアント端末からの上記配信タグを介したアクセスに際し、当該アクセス時に付加される、上記配信タグに含まれる他の署名に基づいて配信タグの正当性を検証する配信タグ検証手段を備えたことを特徴とするコンテンツ配信装置。
【請求項5】
請求項4に記載のコンテンツ配信装置において、
上記他の署名は、コンテンツを一意に識別するコンテンツIDと、ページコンテンツを提供するサーバ装置のドメインと、内部の他の秘密鍵とを合体したものにハッシュアルゴリズムを適用して生成することを特徴とするコンテンツ配信装置。
【請求項6】
他のサーバ装置から取得したページコンテンツに含まれる配信タグを介してクライアント端末からアクセスを受け付け、当該クライアント端末にコンテンツの配信を行なう方法であって、
上記クライアント端末からの上記配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともに上記ページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供工程と、
上記クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、当該アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証工程と、
コード検証が正常に行なわれた場合に、アクセス時に付加される上記ページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証工程と、
サーバ検証が正常に行なわれた場合に、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供工程とを備えたことを特徴とするコンテンツ配信制御方法。
【請求項7】
他のサーバ装置から取得したページコンテンツに含まれる配信タグを介してクライアント端末からアクセスを受け付け、当該クライアント端末にコンテンツの配信を行なう装置の制御プログラムであって、
コンピュータを、
上記クライアント端末からの上記配信タグを介したアクセスに応じ、上記ページコンテンツの取得元のサーバ装置の情報を取得するとともに上記ページコンテンツに含まれるコンテンツの引き当てを行なう機能を有するコードを、検証用の署名を付加して提供するコード提供手段、
上記クライアント端末からの上記コードによるコンテンツの引き当てのアクセスに応じ、当該アクセス時に付加される署名によりアクセスを発動したコードが正当なものであるか否かを検証するコード検証手段、
コード検証が正常に行なわれた場合に、アクセス時に付加される上記ページコンテンツの取得元のサーバ装置の情報によりコンテンツ提供が許可されるか否かを検証するサーバ検証手段、
サーバ検証が正常に行なわれた場合に、引き当て対象のコンテンツを当該クライアント端末に提供するコンテンツ提供手段、
として機能させることを特徴とするコンテンツ配信制御プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2009−26010(P2009−26010A)
【公開日】平成21年2月5日(2009.2.5)
【国際特許分類】
【出願番号】特願2007−187566(P2007−187566)
【出願日】平成19年7月18日(2007.7.18)
【出願人】(500257300)ヤフー株式会社 (1,128)
【Fターム(参考)】
【公開日】平成21年2月5日(2009.2.5)
【国際特許分類】
【出願日】平成19年7月18日(2007.7.18)
【出願人】(500257300)ヤフー株式会社 (1,128)
【Fターム(参考)】
[ Back to top ]