- ホーム >
- 基礎知識 >
- インターネットの仕組み >
インターネットのセキュリティ(1) ~ クッキーとは ~
ユーザー登録しているウェブサイトにログインしたり、ショッピングサイトなどを利用している時、「ようこそ○○さん」とか「前回のログインは、○月○日○時です」といった表示を目にしたことはないでしょうか?
例えば、amazon(アマゾン)にユーザー登録してショッピングをすると、次回ログイン時には、これまで購入した商品やチェックした商品の傾向から、「自分用」のオススメ商品が表示され、個人ごとにカスタマイズされたウェブページが表示されます。
どうしてこのようなことが可能になるのかというと、ユーザーが意識しないところで、WWWサーバとパソコン(ブラウザ)がユーザー情報をやり取りしているからです。
また、同じパソコンを利用していると、IDやパスワードを毎回入力しなくてもそのウェブサイトを訪れるだけでログインが完了してるといった経験があると思います。
これは、WWWサーバが一度訪れたことのあるユーザーのパソコンを識別して、自動的にIDとパスワードを入力済みにしているということであり、やはり、WWWサーバとパソコンがユーザ情報をやり取りしている結果なのです。
したがって、そのウェブサイトを閲覧したことのない別のパソコン(会社や友人のパソコン等)で同じウェブサイトを閲覧しても、IDとパスワードの入力を省略してくれるわけではありません。
本来、HTTPによるウェブページの閲覧では、HTTPはハイパーテキストを転送するだけのプロトコルであるため、例えば同じウェブサイト内の異なるページに移動しても、WWWサーバ側ではそれが同じユーザーなのかどうかの判断はできません。
したがって、HTTPのみではユーザーによって異なる内容のページを提供することはもちろん、ページを移動されるとログイン状態を保つこともできないのです。そこで、こうしたニーズを満たすために、HTTPを補完する技術が開発され、それによってWWWサーバがユーザーを識別できるようになったというわけです。
WWWサーバと情報をやり取りする技術には、これまで学習した、CGIやActiveXなどがあります。それらと同様に高度な技術が使われていそうな感じですが、仕組み自体はいたって単純です。
情報のやり取りには、CGIやJavaScriptも用いられてはいますが、
ユーザー情報そのものは単なるテキストファイル
でやり取りされており、この情報のことを、
クッキー(Cookie)
と言います。(食べ物のクッキーと同じ名前とスペルです)クッキーは、ユーザ―情報が記されたテキストファイルになります。また、クッキーがHTTPを補完してユーザーを識別するための資源となることから、HTTPクッキー とも呼ばれます。
クッキーの仕組みは、WWWサーバがウェブページを訪れたユーザーのパソコンに、そのユーザー情報であるクッキーを保存しておくというシンプルな仕組みです。つまり、
WWWサーバがユーザーのパソコンにクッキーを送信して自動的に保存させておく
ということです。具体的には、WWWサーバが訪問者のブラウザにクッキーを送信して、訪問者のパソコンにファイルを保存させます。
そして、WWWサーバは次回から訪れたユーザーのパソコンに保存してあるクッキーを送信してもらい、それを確認することで、そのユーザー情報を認識します。
ウェブサイトの運営者がクッキーを利用するには、主にJavaScriptやCGIが使われています。JavaとJavascript で解説のとおり、JavaScriptはセキュリティ上、データを書き込むことができない仕様になってはいますが、唯一例外としてクッキーを書き込むことだけは許されています。
下図は、ユーザーのパソコンに保存されるクッキーのイメージです。ウェブサイトによって個別のクッキーが作成されて保存されています。Internet Explorer7および8では、「ツール」→「インターネットオプション」→「全般」タブ →「 閲覧の履歴」の「設定」→「ファイルの表示」で確認することができます。
クッキーの内容は、クッキーの名前、有効期限、WWWサーバのドメイン名、またショッピングサイトであれば、カートに入れている商品名や購入した商品名などが記述されています。
ただ、クッキーに何を記述するかは、ウェブサイトの運営者次第です。例えば、そのサイトに入力フォームを設置してクレジットカードの暗証番号などの個人情報をユーザーに入力させれば、クッキーにそれらの情報を保存させておくことが可能ではあります。(悪意のあるサイトでは個人情報を入力した時点で情報が盗まれるので、クッキーに保存する必要もありませんが)
クッキーのテキストファイルをダブルクリックすると中身を見ることができるので、何がかかれているのか確認してみてください。ただし、内容を変更してしまうと動作に影響することがありますので、十分注意してください。
また、保存されているクッキーは有効期限が切れたものから自動的に削除されます。クッキーが長年蓄積され続けて、容量を圧迫するようなことはありません。
手動で削除することも可能で、その場合はブラウザから削除します。Internet Explorer7および8では、「ツール」→「インターネットオプション」→「全般」タブ →「閲覧の履歴」の「削除」で削除することができます。
このように、クッキーを利用することでユーザーにとってもサイトの運営者によっても便利で効率的なサービスが提供されるようになりました。
Yahoo! JAPANのウェブサイトでは、クッキーを利用して行っていることを公開しています。他にも多くの企業のウェブサイトでクッキーの利用について言及していますので、興味のある方は参照してみてください。
ただ、便利であるということは必ず不都合な側面があるものです。おわかりのとおり、クッキーにはユーザーの個人情報が記述されているという点です。
個人情報が記述されたクッキーがテキストファイルでやり取りされているので、盗聴の危険性があり、そのうえ、クッキーのやり取りは自動で行われているので、特別設定しない限りユーザーが意識することもありません。
そのため、こうしたクッキーの仕組みを悪用して、クッキーに記述された個人情報が盗まれるといったセキュリティ上の問題を抱えていることは事実です。(クロスサイトスクリプティングというスクリプトの自動実行を利用してクッキーを横取りする手法が主に使われます)したがって、
1.信頼できないサイトやメールのリンクを安易にクリックしない
2.重大な個人情報を扱うサイトにログインしている間は、他のサイトを見に行かない
というのが原則です。また、そういったサイトを利用した後は必ずログアウトするようにしましょう。共用のパソコンであれば、Bさんが使っているのに、「ようこそ、Aさん。最近あなたが購入した商品は、○○です」といった表示がされてプライバシーを覗かれてしまうこともあります。
もっとも、一般的にクッキーにはパスワードや暗証番号といった秘匿性の高い情報は保存させないというのが基本的なルールで、通常はそこまでの情報は保存されません。(ただし、明確な規定があるわけではなくサイト運営者のモラルに任せられているのが現状です)
この場合、クッキーには、パスワードの代わりにランダムな文字列を保存しておき、ログイン履歴等と照らし合わせて本人であることを確認して、ログイン状態(自動ログイン)を保っています。
したがって、次回(一定の時間を空けて)そのページを訪れた時には、IDとパスワードの入力を求められます。現在では、銀行やクレジットカードのウェブサイトなどでは再ログインを促すことが多くなってきています。
また、クッキー情報はすべてのWWWサーバに対して送信しているというわけでもありません。クッキーを送信するのは、そのクッキーと対になるWWWサーバから依頼があった場合のみです。したがって、他のWWWサーバに情報を送信することはありません。(ただし、クロスサイトスクリプティングのように悪意のあるプログラムによって送信させられる場合があります)
ユーザー側も、ブラウザを設定することによって、クッキーの利用をブロックしたり、その都度ダイアログを表示させて保存の可否を選択することが可能です。
Internet Explorer7および8では、「ツール」→「インターネットオプション」→「プライバシー」タブ →「詳細設定」で設定することができます。
ただし、多くのサイト(企業のサイトならほとんど)がクッキーを利用していますので、クッキーをブロックしてしまうと、例えばショッピングサイトではショッピングカート機能が使えなくなるなど、かなり制限を受けることになります。
同様に、ダイアログを表示する設定では、ページを開く度に下図のようなダイアログが出現することになり、かなり煩わしいことになります。
また、ウィルス対策ソフト(スパイウェア対策ソフト)を利用していると、クッキーがスパイウェアとして検出されることがあります。これは、ウェブ広告業者が利用するユーザーのブラウジング傾向などを収集するマーケティング目的のクッキーで、
トラッキング クッキー(Tracking Cookie)
と呼ばれています。トラッキング クッキー自体はウィルスでもスパイウェアでもないので、これによって重大な個人情報が第三者に取得されるということは基本的にはありません。(悪用された場合はその危険性があります)
スパイウェアとは、情報を外部に発信する悪意のあるプログラムのことで、トラッキング クッキーも似たような働きをすることから、ウィルス対策ソフトが検知しているにすぎません。
このように、クッキーにはいくつかの種類があり、大きく分けて「ファースト パーティ」と「サード パーティ」の区別があります。
ファースト パーティ クッキーは現在見ているページのクッキーで、サード パーティ クッキーは、そのページからリンクしている広告会社等の関係のないページ(バナー広告等)のクッキーです。トラッキング クッキーはサード パーティ クッキーの区分になります。
他にも、有効期限を指定されていないクッキーがあり、このクッキーは、ブラウザを終了すると共に消えるその場限りのクッキーで、「セッション クッキー」と呼ばれています。セッション クッキーは、ショッピングサイトなどの重大や個人情報を扱うサイトでよく利用されます。
セキュリティが気になる方は、第三者への情報漏えいを考慮してサード パーティ クッキーはブロックしておくのが良いかもしれません。また、クッキーの種類に関わらず、あまり長期間クッキーを保存しておくのはセキュリティ上問題があるので、定期的に削除するようにしましょう。
ただ、いずれにせよクッキーそのものはウィルスでもスパイウェアでもなく、それ自体は危険なものではないわけで、こうした情報がユーザーの見えないところでやり取りされていることを認識し、その情報を盗み取ろうとしたり、悪用しようとする危険性があるということを心得ておくことが大切なのであって、あまり過敏になる必要はないと思います。
更新履歴
- 2009年8月13日
- ページを公開。
- 2009年8月13日
- ページをXHTML1.0とCSS2.1で、Web標準化。レイアウト変更。
- 2014年5月22日
- 内容修正。
- 2018年2月1日
- ページをSSL化によりHTTPSに対応。
参考文献・ウェブサイト
当ページの作成にあたり、以下の文献およびウェブサイトを参考にさせていただきました。
- 文献
- 図解入門 インターネットのしくみ
- 文献
- 初めて学ぶJavaScript入門早わかり―魅力的なホームページを作ろう
- クッキー(Cookie)の諸問題
- http://blog.lucanian.net/archives/50823597.html
- 管理人のつぶやき
- Twitterのフォローお願いします!