ホワイトデー記念
Cookie
クッキー,食べますか?
〜すみません,ありがちなタイトルで〜
0.改定履歴
- 1997.03.14 初版
- 2000.05.14 不都合な情報を消した
1.Cookieとは?
インターネットで遊んでいると,どこかのサーバさんが,「ねぇねぇ,あなた,私のクッキーを食べない?」と言ってきます. クッキーが嫌いでないあなた(ブラウザ)は,それを受け入れ,食べて(ハードディスクに保存)しまいます.
さて,こんどまた,その「サーバさん,こんにちは!」(再びそのサーバをアクセスする)と,今度は,あなた(ブラウザ)が,「サーバーさん,前こんなクッキーもらったよ〜」と以前食べたクッキーを自動的に送り返します.
Cookieとは,初めて訪れたサーバさんから,あなた専用の情報を貰ってあなたのハードディスクに保存してしまい,そして再度そのサーバを訪れたときにその情報を見せてあげる仕組みなのです.
Cookieで受け取る情報自体は,16進数の文字列で,数バイトです. これを一杯受け入れたからと言ってハードディスクの容量が圧迫されるようなことはありません.
2.Cookieの受け渡し
具体的に,サーバとブラウザでCookieの受渡を時系列で追ってみましょう.
- あなたがブラウザ(Netscape NavigatorとかInternet Exploror)で,Cookieを使っているサーバにアクセスします.
- ブラウザからは,サーバに送るヘッダに要求するURLが入っています.
- サーバではそのURLを見ると,Cookieがありません. そこで,サーバが自動的にあなた用のIDを生成し,それをCookieとして,要求されたドキュメント(ホームページ)と一緒にブラウザに返します.
- あなたのブラウザは,返却されたドキュメントと送信ヘッダの中にCookieが含まれていたらそれをハードディスクのCookieを保存するファイルやディレクトリに保存します.
Cookieには,サーバで生成されたIDとURLが保存されます. また,保存期間が付いている場合はその日まで,期間が付いていない場合にはブラウザが終了するまで,そのCookieは保存されます.
- たとえば後日,あなたがブラウザで再度,そのサーバをアクセスします.
- ブラウザでは,そのURLが保存しているCookieの情報と一致した場合,保存しておいたCookieの内容をHTTPのヘッダ内に含めて要求を出します.
- Cookieは,サーバ側ではHTTP_COOKIEという環境変数に設定されます.
- サーバの環境変数はCGIプログラムで取得できますから,それを判断してユーザにホームページを送信します.
前述のような物がCookieの簡単な仕組みですが,送受信されるCookieの存在などは,通常ユーザは意識する必要が全くありません. 自動的に処理されるのです.
3.Cookieの制限
Cookieは,次のような制限もあります.
- ブラウザで保存できるCookieは最大300個.
- 1つのCookieは4Kまで.
- 1つのサーバは20個までしかCookieを持てない.
この制限は,現時点での話なので,将来的にはもっと拡張されるかも知れません.
また,どの様なブラウザが対応しているかというと,Netscape Navigatorではバージョン1.1Nから実装していますので,殆どのブラウザで対応しているといえるでしょう.
3.じゃぁ,どうしてCookieをくれるの?
もし,そのCookieをデータベースで管理していたら,サーバ側ではそのユーザがいつどのページを見たか...などを管理する事も可能です.
アクセスログを解析する場合は,Proxyを通しているので正確な情報は取れませんが,クライアントに保存してあるCookieを使えば,これが可能です.
たとえば,こんな利用方法があります.
Cookieを利用すれば,その人が興味のあるホームページをダイナミックに見せる様な仕組み,たとえばCookieからユーザを特定して,過去のログからそのユーザが自分のサイトのMacintoshに関する情報をアクセスしたとなれば,それに関する情報を集めたホームページを生成して見せる...なんて事が可能なわけです. 上手く行けば,その人に合った広告を含んだページを作成することも夢ではありません.(作るのは大変そうだけど)
4.毒入りCookie
以上のように,簡単にCookieの仕組みを説明しましたけど,Cookieも悪用しようとすれば出来ないことは無いってことに気付くでしょう?
やろうと思えばユーザの動きを監視しておくことも出来ます. たとえば,エロサイトでユーザの動きを収集された場合,本気で警察が動いたら...などと考えると,Cookieはいつでも食べて良いものだとは思えませんねぇ.
5.Cookieを食べる前に警告させる方法
Cookieに対応しているブラウザであれば,このクッキーを受け入れる時に警告し,ユーザに判断させる事が出来る様になっています.
ただ,Cookieを受け入れないとホームページが正しく表示されない場合もあるようです.
5.1 Netscape Navigator3.0(英語版)の場合
- [Option]メニューから[Network Preferences]を選択する.
- [Protocols]タブをクリックする.
- [Show an Alert Before]内の「Accepting a Cookie」をチェックすると,Cookieを受け入れる前に警告ダイアログが表示される..

5.2 Internet Exploror3.0(日本語版)の場合
- [表示]メニューから[オプション]を選択する.
- [詳細設定]タブを選択する.
- ["cookie"を受け入れる前に警告する(C)]を選択する.

6.Cookieを削除する方法
6.1 Netscape Navigator(3.0)の場合
Cookieは,全て次のファイルに記述されている.
6.2 Internet Explororの場合
IEの場合は,以下のフォルダ下に保存されているファイルがCookieである.
7.参考
7.1 Cookieファイルの中身サンプル
7.1.1 Netscape Navigatorの場合
# Netscape HTTP Cookie File # http://www.netscape.com/newsref/std/cookie_spec.html # This is a generated file! Do not edit..adobe.com TRUE / FALSE 946684799 INTERSE 202.248.26.13221633857114524240.msn.com TRUE / FALSE 937396800 MC1 ID=eb0998449b2b11d0899d0000f84a147d |
7.1.2 Internet Explororの場合
MC1 ID=341e68f185d811d0b8130000f84a14eb&JP_DONE=1 msn.com/ 0 3590660096 29294449 4224193440 29104735 * |
7.2 Cookieの受け入れの警告の例
7.1.1 Netscape Navigatorの場合

7.1.2 Internet Explororの場合

参考:
- ユーザ毎にホームページを変えるサーバ例
参考資料:
- インターネットマガジン1996.11月号「知られざるクッキーの謎」
- Netscape Communications "PERSISTENT CLIENT STATE HTTP COOKIES"