クッキー(Cookie)についてちょいと勉強する。
以前にクッキーのセキュリティが気になりだしたときに、自分のブラウザを調べてみて、胡散臭いサイトが発行した膨大な量のクッキーデータが保存されているのに驚いた。おのおのの中身を見てみると、有効期限が数年から数十年先となっているものが多い。また、IDやパスワードなど、大切な情報が臆面もなくむき出しになっているものがあってたまげた。以来、私はクッキーを無条件に受け入れることを止め、クッキー受け入れダイアログを表示させ、いちいち確認するようにしている。確認し始めて、様々なサイトから膨大なクッキー保存を求められていることを実感する。例えば、日本経済新聞社のNIKKEI NETにアクセスすると、16回クッキー保存を求めるダイアログが表示され、その度に「拒否」をクリックし続けることになる。私が「拒否」する根拠は実に希薄で、はたして、「拒否」してしまって良いものかどうか、確信は持てない。
クッキーについてちょっとお勉強。参考資料は以下。技術的なことに興味はない。ユーザーの立場から、知っておくべきことについてまとめる。
クッキーはウエブサーバーとユーザーエージェント(ブラウザ)がやりとりする小さなテキストファイルである。ウエブサーバーが発行し、ユーザーのブラウザがそれを保存する。そのウエブページにアクセスする度にサーバーの求めに応じ、手元に保存してあるクッキーデータを見せる。HTTPは、一ページずつをアクセスを単位とするので、認証が必要なサイトでは、ページを移るごとに認証を受けなくてはならない。一度認証された証拠をクッキーとして手元に残し、サーバーの求めに応じてそれを見せることで、手続きを簡略化する。面倒が無く便利。そういう仕組みらしい。
クッキーの中身は、以下の内容を含む。(参考:HTTP State Management Mechanism)
保存されているクッキーファイルの中身は、以下の方法で確認することが出来る。
何れも、マックOSXバージョンである。また、必ずしも最新バージョンではない。
UA | Firefox(1.0.7) | Opera(8.5) | Safari(1.1) | Internet Explorer(5.2.3) | |
---|---|---|---|---|---|
確認法 |
|
|
|
環境設定>受信ファイル>Cookie で、一覧表示。 適宜選んで、 をクリックする。 |
|
表示ウインドウの操作 |
|
|
|
|
|
Cookie情報 | 名称 |
|
|
|
|
内容 |
|
|
|
|
|
ドメイン |
|
|
|
|
|
パス |
|
|
|
|
|
有効期限 |
|
|
|
|
|
セキュア |
|
|
|
|
|
ほか |
|
|
|||
コメント |
|
クッキーを受信したときに、確認を促すダイアログウインドウである。
いずれのブラウザでも、受け入れダイアログのデフォルトは「受け入れる」である。
Operaの場合、プルダウンメニューが多岐にわたり、また、長すぎるため難解である。デフォルト「Operaの終了までのアップデートを含めて受け入れる」は、要するに「サーバーの思うがままに受け入れる」という意味。二番目の「変更せず受け入れる」は、「受け入れるがOperaの終了までのアップデートは拒否する」という意味だろう。分かりにくい。また、項目のいくつかは、環境設定の「Operaの終了時に新しいCookieを削除する」をチェックしている場合意味をなさない。
エクスプローラの警告文は、受け入れを催促するものと受け取れる。
調べていくうちに、クッキーの役割は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を超えるダイアログに向かってクリックし続けるには、相当な忍耐が必要である。惰性でクリックし続けると云って良い。そこにちょっとした細工、つまり、あたかもクッキー受け入れダイアログに見せかけた画像を表示させ不正なクリックを誘うことは、比較的簡単に出来そうである。セキュリティ上の問題を意識し、クッキー保存をいちいち問い合わせる設定でブラウザを使っているが、現実には、クッキーの内容をいちいち確認している余裕はない。何となく気に入らないから全部拒否、何となく大丈夫そうだから受け入れる、程度の判断である。その結果、大量のクッキー受け入れダイアログを片っ端からクリックし続ける羽目に陥り、却ってセキュリティ上の問題点に直面している。
恐らく、サードパーティからのクッキーはすべて拒否。クッキーを保存する期間はブラウザを終了するまで、として、ほとんどのサイトの閲覧に何も不都合はないと思う。
うまくいかない場合にその都度対応すると云うのが現実的なクッキー管理の方法かなぁ、と思い、今後はそうするつもりで居る。
クッキー受け入れダイアログのセキュリティ上の問題点を指摘したつもり。疲れた。