このページの本文へ

WWW完全制覇 第6回

HTTPとCookie、SSLを理解しよう

ブラウザとサーバは何をやりとりしているの?

2009年06月09日 09時00分更新

文● 遠藤哲、中塚寛幸、編集部

  • この記事をはてなブックマークに追加
  • 本文印刷

Webアプリケーションから端末を特定するCookie

 ここまでで見た通り、HTTPはデータを送受信するというシンプルな仕組みを提供している。だが、複数のHTTPセッションを1つのものとしてまとめて扱う機能がない。

 これではなにが困るのか? たとえば、ショッピングサイトを見てみよう。あるユーザーはまずほしいモノを選び、ショッピングカートに入れ、それから会計処理を行なう。この処理をHTTPで行なう場合、それぞれの作業でHTTPのセッションが構築されても、すべての作業を同一の人が手順通り行なったとは証明できないのである。

 もちろん、パケットの送信元を見ればIPアドレスは取得できるが、ご存じの通りIPアドレスは端末に固定されたものではないため、接続ごとに変化する可能性がある。また、複数の端末が同じルータを用いてインターネット接続する場合は、NAPT(Network Address Port Translation)の機能で同一のIPアドレスを共用することになる。こうなると、Webサーバ側は複数の端末とは判別できない。

 では、どうするか? 現実の店舗の買い物では、ポイントカードなどを発行する。店側は顔や写真に見覚えがなくても、ポイントカードの番号を見れば、顧客を特定できる。これと同じことをWeb上で行なえば、ユーザーが特定できるわけだ。これをWebで実現するのがCookie(クッキー)である。

メッセージヘッダにCookieを埋め込む

 Cookieはサーバの要求でクライアントに作られる簡単なテキスト情報だ。Webサーバ側は、このCookieを見ることで、端末を特定できる。

 Cookieの仕組みは簡単だ(図6)。Webブラウザからリクエストを受けたWebサーバはあらかじめ用意しておいたCookieの内容をレスポンスヘッダに書き込んで、送信元に返信する。

図6 Webサーバからユーザーを識別するCookieの仕組み

 書き込まれるのはSet-Cookieフィールドで、メインの名前と有効期限、対象となるドメインなどが送られてくるだけだ。Webサーバは、Webブラウザに対してこのCookieの発行を要求し、クライアントPCはローカルのHDDにこれを保存する。Windows XPの場合、CookieはDocuments and Settings\ユーザー名\Cookiesに保存される。

 この結果、ショッピングサイトなどは、毎回ユーザー認証などを経なくとも、個人を特定できる。Amazon.co.jpなどで、違う時間にアクセスしても、「大谷さん、こんにちは」などと表示されるのも、いったん行なったユーザー認証の結果とCookieをうまくひも付けているからだ。

 こうしたCookieは古くから個人情報の漏えいを心配する声も多い。CookieはWebサーバ側でなにを書き込むのか制御できるので、信頼できないWebサーバからのCookieを受け入れるとユーザーの情報が漏れる可能性もある。そのため、WebブラウザではサーバからのCookieをどのように受け入れるか設定することが可能だ。

 Internet Explorerでは「インターネットオプション」の「プライバシー」タブから「設定」を開く。ここではCookieの種類や受け入れ方などで、6段階のポリシーが設定できる(画面1)。

画面1 Cookieの受け入れは、Webブラウザで設定できる

(次ページ、「通信のセキュリティを確保するSSL」に続く)


 

カテゴリートップへ

この連載の記事