このページのもくじ

  1. クッキーを復習する
  2. クッキーに関する設定、操作など
  3. クッキーがどのように使われるか
  4. クッキースパム?
  5. 取りあえず、結論

クッキー(Cookie)についてちょいと勉強する。

クッキーを復習する

以前にクッキーのセキュリティが気になりだしたときに、自分のブラウザを調べてみて、胡散臭いサイトが発行した膨大な量のクッキーデータが保存されているのに驚いた。おのおのの中身を見てみると、有効期限が数年から数十年先となっているものが多い。また、IDやパスワードなど、大切な情報が臆面もなくむき出しになっているものがあってたまげた。以来、私はクッキーを無条件に受け入れることを止め、クッキー受け入れダイアログを表示させ、いちいち確認するようにしている。確認し始めて、様々なサイトから膨大なクッキー保存を求められていることを実感する。例えば、日本経済新聞社のNIKKEI NETにアクセスすると、16回クッキー保存を求めるダイアログが表示され、その度に「拒否」をクリックし続けることになる。私が「拒否」する根拠は実に希薄で、はたして、「拒否」してしまって良いものかどうか、確信は持てない。

クッキーについてちょっとお勉強。参考資料は以下。技術的なことに興味はない。ユーザーの立場から、知っておくべきことについてまとめる。

クッキーについて復習

クッキーはウエブサーバーとユーザーエージェント(ブラウザ)がやりとりする小さなテキストファイルである。ウエブサーバーが発行し、ユーザーのブラウザがそれを保存する。そのウエブページにアクセスする度にサーバーの求めに応じ、手元に保存してあるクッキーデータを見せる。HTTPは、一ページずつをアクセスを単位とするので、認証が必要なサイトでは、ページを移るごとに認証を受けなくてはならない。一度認証された証拠をクッキーとして手元に残し、サーバーの求めに応じてそれを見せることで、手続きを簡略化する。面倒が無く便利。そういう仕組みらしい。

クッキーファイルの中身

クッキーの中身は、以下の内容を含む。(参考:HTTP State Management Mechanism

名称と内容
必須。
ドメイン
オプション。クッキーが有効なドメインを指定。明白に指定されたドメインはドットから始まる。
パス
オプション。クッキーを適用する範囲を指定する。
有効期限
オプション。秒単位で有効期限を指定する。
セキュア
オプション。値無し。クッキーをサーバーに返すときに安全な方法を選ぶ。
コメント
オプション。ユーザーに関する個人情報を含む。
バージョン
必須。十進法整数。

保存されているクッキーファイルの中身は、以下の方法で確認することが出来る。

クッキーに関する設定、操作など

何れも、マックOSXバージョンである。また、必ずしも最新バージョンではない。

クッキー一覧を確認する方法

クッキーデータを確認する方法(マックOSX用ブラウザ)
UA Firefox(1.0.7) Opera(8.5) Safari(1.1) Internet Explorer(5.2.3)
確認法
  • 初期設定>プライバシー>「Cockieデータの保存」
  • Cookieを表示をクリックすると、一覧が表示される。
  • ツール>詳細ツール>クッキー…
  • または、環境設定>詳細設定>CookieでCookieの編集をクリック
  • サーバーマネージャーウインドウが表示される。
  • 環境設定>セキュリティ を選び、Cookieを表示をクリック。

環境設定>受信ファイル>Cookie で、一覧表示。 適宜選んで、表示をクリックする。

表示ウインドウの操作
  • サイト名とクッキーの名称の一覧から選択する。
  • Cookieを削除
  • すべてのCookieを削除
  • 削除したサイトからのCookieは今後も受け付けない(チェックボックス)
  • ドメイン名のフォルダの一覧
  • フォルダ内にクッキー名と値の一覧
  • 適宜選択し、「編集…」ボタンをクリックする。
  • Cookieの情報が開く(*1)
  • 削除」・「新規作成…」(ボタン)
  • クッキー情報の各項目で整列させることができる
  • 選択した上で、「取り除く」(ボタン)
  • 全てを取り除く」(ボタン)
  • Cookieの設定パネルに、サーバー・名前・状態が一覧表示
  • それぞれの項目で整列可能
  • 選択し、「表示」ボタンをクリックすると、「Cookieビューワー」ウインドウが開く。
  • ビューワーは内容を見るだけで操作はできない。
Cookie情報 名称
  • 名前
  • 名前
  • 名前
  • 名前
内容
  • 内容
  • コンテンツ
ドメイン
  • ホスト
  • サーバー
  • Webサイト
  • サーバー
パス
  • パス
  • 作成者にのみ送信されるか(Y/N)
  •  
  • パス
  • パス
有効期限
  • 有効期限
  • 有効期限
  • 有効期限
  • 有効期限
セキュア
  • 送信条件
  • 安全なCookieか(Y/N)
  • 保護(Y/N)
  • セキュリティ(あり・なし)
ほか
  • 最終訪問日時
  • バージョン
  • 状態(有効・無効)(*2)
コメント
  • *1: Operaでは、上記の項目は、テキストボックスに入っており、ユーザーが任意に書き換え可能。
  • *2: 環境設定で「サイトごとに警告する」を選ぶと、ユーザーが各々の既存クッキーについて、有効・無効を指定できる。

クッキーに関する初期設定

Firefox (1.0.7)
 環境設定>プライバシー>Cookieデータの保存
  • クッキーを有効にする(チェックボックス)
    • 元のウエブサイトからのCookieのみ保存する(チェックボックス)
  • Cookieを保存する期間(プルダウンメニューから一つ選ぶ)
    • サイトの指定期限まで
    • Firefoxを終了するまで
    • 毎回確認する
  • Cookieを表示(ボタン)
  • 例外サイト(ボタン)
    • ダイアログにより、個別のサイトに対して、許可・不許可・セッション間のみのいずれかを指定できる。
  • クリア(ボタン)
Opera (8.5)
  • 環境設定>詳細設定>Cookie
  • 通常のクッキー
    1. すべてのCookieを拒否する
    2. Cookieを受信するごとに処理方法を決定する
    3. サーバーマネージャーの指示に従って処理する
    4. すべてのCookieを受け入れる
  • サードパーティのクッキー
    1. サーバーにセットされるCookieのみ受け入れる
    2. すべてのCookieを拒否する
    3. Cookieを受信するごとに処理方法を決定する
    4. すべてのCookieを受け入れる
  • Cookieの編集(ボタン:サーバーマネージャーウインドウを開く)
  • Operaの終了時に新しいCookieを削除する(チェックボックス)
  • 不正なパスのCookieを受け入れる(意味不明)
    • 不正なCookieのパスについて警告を表示
  • 認証が必要なページを把握するためにCookieを使用する。(意味不明、把握とは?)
Safari(1.1)
  • 環境設定>セキュリティ
  • Cookieの受け入れ:(以下三者択一のチェックボックス)
    • 常に受け入れる
    • 受け入れない
    • 訪問したページのサーバーからのみ受け入れる(例:ページ内の他の広告などのCookieは拒否する)
Internet Explorer (5.2.3)
  • 環境設定>受信ファイル>Cookie
  • Cookieを受信したとき(プルダウンメニューから択一)
    • 受け入れる
    • サイトごとに警告する
    • 常に警告する
    • 受け入れない

クッキー受け入れダイアログ

クッキーを受信したときに、確認を促すダイアログウインドウである。

Firefox
  • このサイトからのCookieは今後も同様に処理する(チェックボックス:チェックすると「例外サイト」の一覧に入る)
  • 詳細を表示する(クッキーの内容を見ることができる)
  • 三つのボタンから一つ選ぶ
    • セッション間のみ許可
    • 不許可
    • 許可(デフォルト)
Opera
  • アドレスの表示
  • クッキーの内容を表示するダイアログボックス
  • Cookieをどのように処理しますか?(以下のプルダウンメニューから択一)
    • Operaの終了までのアップデートを含めて受け入れる(デフォルト)
    • 変更せず受け入れる
    • 受け入れ、Operaの終了時に削除する
    • 受け入れ、Operaの終了時に保存する。
    • このサーバーからのCookieを受け入れる
    • このドメインからのCookieを受け入れる
    • このサーバーからのCookieを拒否する
    • このドメインからのCookieを拒否する
  • 次回からこのダイアログを表示しない(チェックボックス)
  • ヘルプ(ボタン)
  • 拒否する」・「承諾」(ボタン、デフォルトは「承諾」)
Safari
受け入れダイアログはない(と思う)。
Internet Explorer
  • つぎのCookieを受け入れますか?
  • ドメイン
  • 受け入れないと表示しようとしているページは正しく表示されない可能性があります。(警告文)
  • 詳細(ボタン)
    • Cookieの内容を表示
    • これを受け入れますか?「いいえ」をクリックすると表示しようとしているページは正しく表示されない可能性があります。(警告文)
    • いいえ」・「はい」(デフォルトは「はい」)
  • いいえ」・「はい」(デフォルトは、「はい」)

いずれのブラウザでも、受け入れダイアログのデフォルトは「受け入れる」である。

Operaの場合、プルダウンメニューが多岐にわたり、また、長すぎるため難解である。デフォルト「Operaの終了までのアップデートを含めて受け入れる」は、要するに「サーバーの思うがままに受け入れる」という意味。二番目の「変更せず受け入れる」は、「受け入れるがOperaの終了までのアップデートは拒否する」という意味だろう。分かりにくい。また、項目のいくつかは、環境設定の「Operaの終了時に新しいCookieを削除する」をチェックしている場合意味をなさない。

エクスプローラの警告文は、受け入れを催促するものと受け取れる。

クッキーがどのように使われるか

調べていくうちに、クッキーの役割は4つ思い浮かんだ。すなわち、

  1. ログイン情報の保持
  2. アクセス解析・閲覧履歴収集
  3. ウエブページの設定などを記録する
  4. アクセス制限

である。順に実例を挙げていく。

ログイン情報の保持

わたしにとって身近な例として、はてなのサービスとクッキーの関係を述べる。はてなダイアリやアンテナ、ブックマークなどの編集をするときに、ログインが必要である。ユーザー名とパスワードを入力し、ログインするとはてなのサーバーが、ユーザー名とパスワードに関するクッキーを発行し、ブラウザが保存する。ログイン画面はhttpsで、クッキーの内容を見るとユーザー名とログインパスワードを暗号化したと思われる数十ケタの数字とアルファベットが並んでおり、「個人情報を剥きだし」にはなっていない。ログイン時に「ログイン状態を保存する」と言うチェックボックスをチェックするとクッキーに有効期限が付く。チェックしない場合は有効期限なしの「セッションクッキー」、つまり、ブラウザを終了した時点でクッキーが自動的に削除され、次に起動したときにログインをやり直すことになる。

はてなのクッキー情報は、ドメインが「.hatena.ne.jp」でパスの指定が(/)である。従って、はてなのログインは、ドメイン.hatena.ne.jpの全てに通用する。ダイアリ(d.hatena.ne.jp)からログインすると、アンテナ(a.hatena.ne.jp)、カウンタ(counter.hatena.ne.jp)、ブックマーク(b.hatena.ne.jp)のどれでも有効である。ログインしたままで、他のユーザーのはてなを見ると、ようこそ…さん、と、ユーザー名が表示されるのはそのためだろう。

ログイン時にクッキー保存を拒否すると、ログインページの認証情報を続くページに持ち越すことが出来なくなり、ログインそのものが成立しなくなる。このように、クッキー受け入れは認証が必要なサイト(ブログや通販など)を有効に使うために必須である。

アクセス解析・履歴収集

はてなカウンタがバージョンアップされ、様々なデータの解析が可能になった。そのなかで、

全アクセス数以外にユニークアクセス数でもカウントできるようになりました。ユニークアクセス数とは短期間に何度もアクセスした訪問者からのアクセスを1回と数えたアクセス数で、アクセスしてきた実際の人数を調べることが可能になります。

とのことで、カウンタの設置してあるはてなダイアリが閲覧者にクッキー保存を求めるようになった。すなわち、訪問者にクッキーを持たせて、二度目以降のアクセスの際に初回アクセスの訪問者と区別しようとしている。クッキー受け入れの都度、ダイアログで確認する設定にしていると、大変鬱陶しい。私のダイアリは有料オプションを利用している関係で、カウンターが付いている。リンク元などが分かり、面白いと思うが、そのためだけに閲覧者にクッキー保存を求めるのは、不本意だ。最初のところで述べた、日経新聞社のウエブページの16個のクッキー保存も、ほとんどはクッキーを仕込まれた画像を読み込むための、いわゆるサードパーティクッキーで、個人の閲覧履歴を収集するのが目的なのだろう。こういったアクセス解析・履歴収集のためのクッキー保存は閲覧者のメリットを見いだすのは難しい。

ウエブページの設定などを記録する

掲示板やチャットルームなどのスクリプトで、クッキーを発行するものがある。ハンドルネームなどフォームの内容をクッキー情報として記録し、二度目以降の利用の時に自動的にフォームの一部を埋めてくれる。セキュリティ上の問題がないのであれば、便利な仕組みである。趣味のウエブデザインではスタイルシートの選択で見栄えを変えることができるが、選んだスタイルシートがクッキー情報として残され、次回の閲覧時にいちいち選び直す必要がない。手間が省ける。

フォームの内容をクッキーに残すことは、セキュリティ上、大変宜しくないと感じる。クッキーにログイン情報などがテキストファイルとして保存されるため、何らかの形でこれが外部に漏れる可能性がある。特に、クロスサイトスクリプティング(XSS)と呼ばれる脆弱性を持った欠陥サイトにアクセスした場合に、第三者にクッキー情報が漏れる危険性がある。特に、意図的に閲覧者を騙して誘導する悪意のあるケースがより深刻な問題になる。

アクセス制限

Otsuneさんのところ(void GraphicWizardsLair( void ); //)にアクセスすると、必ずクッキーの保存を求められる。ロボットを排除するためとのこと。そういう使い方もできるらしい。

クッキースパム?

クッキーのセキュリティ上の問題点として、二つ指摘されている。XSS脆弱性はより深刻であるが、サードパーティクッキーによる履歴の収集はより身近である。いちいち問い合わせる設定にしていると、特に商用サイトで大量のクッキー保存を求められていることに気付く。アクセス履歴を収拾されること自体は、それによって上がる収益で有用なサイトが運営されているのだとしたら許容するべきかもしれない。

しかし、現実にクッキー受け入れダイアログは、それとは別なセキュリティ上の問題を含んでいるように思う。ブラウザのセキュリティホールの一種と考えても良い。あるサイトにアクセスし、多数のクッキー保存を求められたとき、FirefoxもOperaも共にダイアログはウエブページの中央上部を覆い隠すようにぶら下がってくる。

クッキー受け入れダイアログ

画像は、Opera8.5 for MacOSXで、某掲示板にアクセスした場合を例にしている。このダイアログが出ている間、Operaは他の一切の操作を受け付けない。また、ウエブページの肝心な部分がダイアログ(青枠で強調してある)によって覆い隠される。従って、閲覧者ができることは「承認」または「拒否する」ボタン(赤枠内)をクリックすることに限られる。クリックして一つめのダイアログを解決すると、次のクッキー保存ダイアログが現れる。結局、ページが求めるすべてのクッキーに対する受け入れダイアログを解決するまで、ボタンをクリックし続けることになる。アクセスしてきたユーザーが、ウインドウ上の決まった場所をクリックすることが明白である。10を超えるダイアログに向かってクリックし続けるには、相当な忍耐が必要である。惰性でクリックし続けると云って良い。そこにちょっとした細工、つまり、あたかもクッキー受け入れダイアログに見せかけた画像を表示させ不正なクリックを誘うことは、比較的簡単に出来そうである。

取りあえず、結論

セキュリティ上の問題を意識し、クッキー保存をいちいち問い合わせる設定でブラウザを使っているが、現実には、クッキーの内容をいちいち確認している余裕はない。何となく気に入らないから全部拒否、何となく大丈夫そうだから受け入れる、程度の判断である。その結果、大量のクッキー受け入れダイアログを片っ端からクリックし続ける羽目に陥り、却ってセキュリティ上の問題点に直面している。

恐らく、サードパーティからのクッキーはすべて拒否。クッキーを保存する期間はブラウザを終了するまで、として、ほとんどのサイトの閲覧に何も不都合はないと思う。

うまくいかない場合にその都度対応すると云うのが現実的なクッキー管理の方法かなぁ、と思い、今後はそうするつもりで居る。

クッキー受け入れダイアログのセキュリティ上の問題点を指摘したつもり。疲れた。