Cookieについて

Webサーバにとって訪問者が誰なのかという情報は大変ありがたく、重要なものである。IPアドレスはインターネットに接続している機器に固有の情報だがISPによってはローカルIPが使用されることもあり、IPアドレスによって個人を特定することは出来ない。また1台のPCを複数の人で共有して使用するなら、個人を特定しようとすれば現在使用している人を区別する必要がある。そこでサイトの訪問者(利用者)を特定する仕組みとしてCookieが利用される。

(注意) 個人を特定するといっても名前や住所等の個人情報を特定するためではないことに注意する。

CookieはWebサーバがサイトを訪問した人のPCのDiskに保存するテキスト形式の情報である。ローカルのDiskに保存させることで、次回同じサイトに接続したときにWebサーバが前回保存させたCookieを読み込むことで個人を特定できるのだ。もしCookieが読み込めなかったら初めてサイトに訪問してきた人と判断する。

またWeb(HTTP)では1ページ表示するごとにWebサーバとの通信は終了する。つまりWebサーバは先ほどページを受け取った人がまだそのページを見ているのか、同じサイト内の他のページに移ったのか、他のサイトへ移動したのか、回線を切断したのか知ることは出来ない。そこで認証が必要なサイトではCookieを使って認証済みといったことを判断するためにも使用される。つまり最初のページでIDとPassを入力させて、認証が完了したなら認証済みコードが入ったCookieを保存させる。同じサイトの認証が必要なページに移動したときに、そのCookieを参照すれば、認証が済んでいるので内容を表示してもOK、認証済みCookieが無ければ内容を表示せずに認証ページに移動させる・・・といったことが可能となる。またショッピングサイトで買い物したアイテムの情報をCookieに保存しておけば決算のときに購入するアイテムを一覧表示することもできる。つまり複数のページに渡って同じ人が見ていることをWebサーバで認識できるのだ。

もう少し簡単に言うと、サイトの入り口(Topページ)で入場券(Cookie)を渡される。これを他のページに移動したときに見せればページの内容が表示されるが、入場券がなければURLを直接指定して、そのページを見ようとしても表示されない。また訪れたページでは入場券の番号によって表示が変わったりする。入場券はサイトを出ると無効になるか、一定期間有効になるものと2種類ある。というような性格のものである。

Cookieに対する誤解

Cookieに対する誤解で多いのはYahoo.co.jpを例にすると

Yahoo.co.jpのWebサーバはWebメールや掲示板を利用するときには事前のユーザ登録と利用時の認証が必要となる。そしてYahoo.co.jp内で認証を済ませるとLogoffするまではCookieにより認証済みを識別している。また次回アクセス時にはIDをCookieから利用できる。

この保存してるたCookieを、誰かがサイトに設置したスクリプトで読み出して、その内容からあなたの名前を騙ってYahoo.co.jpの掲示板に書き込むことが簡単にできるといったことだろう。またある通販サイトで入力したカード番号を同様に盗み出して、他の通販サイトでそのカード番号を使い商品を詐取するといったことなどだ。しかし誤解してはいけないのは「Webサーバは自分が保存させたCookieしか読み出せない」。つまり自分が保存した情報を次回読み出せるだけで、他のサイトが保存した情報を自由に読み出せるわけではない。WindowsのCookieフォルダを見てもらうと沢山のファイルが保存されているが、Webサーバからその全てを参照することは出来ないのである。あくまでも自分が保存したCookieだけである。

Cookieの危険性

ではなぜCookieが危ないと言われつづけるのか。それはセキュリティホール(ブラウザのバグ)によって悪意のあるサイトからDiskの中が丸見えになり、ファイルの中身を自由に参照されるからである。あなたが見ず知らずの人が使用するPCのDiskを自由に参照できるとしたら、どこを見るだろうか?インターネットを利用した悪用を考えるのならPassword.txtというファイルを探してみるだろうか?そんなもの保存していない人が圧倒的に多いだろう。そうなるとサイトでの個人情報と直結したものが多いCookieが標的とされる。しかもCookieの内容を見ればサイト名は一目瞭然だし、ユーザIDやパスワードなどの内容も平文(暗号化なし)で保存されていることもある。単純な掲示板で投稿時にハンドルやメールアドレスなど保存しておくCookieなどは平文がほとんどだ。

CookieのOFFは安全か?

このように危険な情報としてなかば定着しているCookieだが、これがOFFになっていると認証が必要なサイトを利用できなかったり、毎回同じ情報を登録しなければいけなかったりと不便極まりない。またCookieを無効とすればCookieを利用した悪用を危惧しなくていいのか?という疑問にあたる。よく初心者向けの「危ないサイトから身を守る系サイト」ではCookieは無効が常識となっているが、無効にしているから安全とは言えない。先程セキュリティホールでDiskが丸見えと書いたとおり、ブラウザのバグを修正しなければCookie以外のファイルを覗かれるといった危険から身を守ることは出来ない。安心しているとさらに危険な状態に陥ることになる。

では全部無効にすると安全なのか?

Cookieを無効にして、JAVAやActiveXなどのアクティブコンテンツを使わない設定にすると安全だろうか?結論から言うと、通常のWeb参照をしているかぎり多分安全だろう。それでも絶対ではない。またアクティブコンテンツとCookieを全て無効にすると、まともに参照できるサイトは個人が作っているしょぼいサイトだけになってしまう可能性もある。サイトにより制限することも考えられるが、クロスサイト-スクリプトという信頼するサイトの中で悪意のあるサイトのスクリプトが実行されることもあるので、対応が難しい。またサイト証明を偽装することもできるようなのでますますサイトの区別が難しいのが現状だ。

対応策

MSのサイトからセキュリティアップデートのモジュールを落としてIEやOSをアップデートするのがまず肝心である。ここではあまりにセキュリティアップデート情報が多すぎてポインタを指示できない。MSのセキュリティサイトで「VM」や「Cookie」、「JAVA」といったキーワードで検索してもらいたい。とくにVMはJAVAやActiveXを動かす環境を提供するもので、このセキュリティホールをついた攻撃は重大な影響が考えられる。速やかにアップデートしなければならないと考える。また最近ではMIME(電子メールの形式)で送られたコンテンツに含まれる実行モジュールが知らない間に実行されるということもでているのでアップデートで対応するしか方法は無い。

またPersonal FirewallのNortonやFreedomではキーワード警告を出すことができる。これは自PCからWebサーバに送信されるデータの中に特定の文字列を見つけたときに警告を出して、送信を許可、遮断するための仕組みだ。これを利用してよく使うユーザー名、パスワード、カード番号、電話番号からメールアドレスなどの個人情報から"C:\WINDOWS"といった本来自PCから送られるはずの無いキーワードを登録して監視対象とすることで、知らない間にサーバに送られることを防ぐことができる。


SecurityのTOPに戻る