「クッキー」や「セッション」という言葉を聞いたことはありますか?
インターネットの世界ではよく耳にする言葉ですが、どういう意味かはイマイチよく分からないという人がほとんどではないかと思います。今日はこの「クッキー」と「セッション」について簡単に説明したいと思います。
クッキーって何?
クッキー(Cookie)とは、Webサイト側がブラウザを通して訪問者のパソコンにデータを保存させる仕組み(およびそのデータ)のことです。
例えば、認証式のWebサイトのログイン画面などで、一回目にログインするときはIDとパスワードを両方入力したけど、二回目はIDが自動的に入力されていた、というような経験はありませんか?
このような仕掛けはクッキーによって実現されています。
一回目にフォームに情報を入力したときに、その入力した内容をブラウザがクッキーとして保存していて、二回目に同じサイトを訪問したときに、今度はブラウザがクッキーをサイト側に送信します。
これにより、クッキーに保存していた内容をWebページに反映することが出来るわけです。
クッキーの注意点
同じサイトを何度も利用するような場合、クッキーが色々な情報を保存しておいてくれるとサイト閲覧がとても快適・便利になります。
しかし、インターネットの世界には色々なセキュリティリスクがあり、
- クッキーの情報をサイト側に送信する経路上で第三者に傍受されてしまう
- パソコンに保存されているクッキーのデータそのものを盗まれてしまう
などの可能性がゼロではありません。
先ほどのログイン画面の例でも、パスワードのような機密性の高い情報をクッキーに保存するのはリスクが大きいので、一般的にはIDだけしか記憶しないようになっています。
このような観点から、クッキーには出来る限り必要最低限の情報しか保存されていない状態を保つことが大切です。そのためにも、不要になったクッキーは定期的に削除するようにしましょう。主要なブラウザでは、以下のような方法でクッキーを削除することが出来ます。
Internet Explorer (9) の場合
ツール→インターネットオプション→「全般」タブ→「閲覧の履歴」の「削除」ボタンFirefox (12) の場合
ツール→オプション→プライバシー→「Cookieを表示」ボタン→「すべてのCookieを削除」ボタンGoogle Chrome (18) の場合
設定→高度な設定→「閲覧履歴データの消去」ボタン→「Cookieと他のサイトやプラグインのデータを削除する」にチェックし、「閲覧履歴データを消去する」ボタン
セッションって何?
セッションとは、サイトへのアクセス数を測る単位の一つで、「サイトの訪問者がサイト内で行う一連の行動」を意味する言葉です。もっと簡単に言ってしまうと、「サイトへの一回の訪問」が「一つのセッション」です。
例えば、一般的な会員制のサイトなどでは、ログインしてからログアウトするまでが一つのセッションということになります。
技術的な用語としては、「あるユーザが今このサイトに居る」という状態のことを、「そのユーザとサイトの間に『セッションが張られている』」という言葉で表現します。
サイト側は、セッションを張っているユーザがサイト内でどういう行動をとったかをサーバ内に一時データとして保存しておくことで、そのユーザのサイト内での行動を一連のものとして関連付けることが出来るようになります。
例:ショッピングサイトの利用
ちょっと難しい話になってしまったので例を挙げましょう。例えば、Amazonのようなショッピングサイトを想像してみてください。
ある商品のページでその商品をカートに追加して、しばらく他の商品ページを閲覧したあと、カートの中身を表示したとします。このとき、当然ながらカートの中には最初に追加した商品が入っているように表示されますよね。
これは、「『今、カート内容表示ページにアクセスしているユーザ』は、『さっき△△という商品をカートに追加したユーザ』と同一人物だ」とサイト側が識別できているからこそなせる業です。これを実現しているのがセッションという技術です。
セッションの注意点
セッションが張られている状態というのは、裏を返せば「サイト内で何をしてもそのユーザがやったこととみなされる」状態なので、もし第三者にセッションを乗っ取られてしまったら、本人になりすまして高額商品をカード決済されてしまうなどの被害に遭うかも知れません。
そのようなリスクを最小限にするためにも、ログイン制のサイトでは、サイトを離れる際にはしっかりログアウトするように気をつけましょう。(一般的に、ログアウトすればセッションは破棄されます)
まとめ
少し難しい話でしたが、クッキーもセッションも現在のインターネットには欠かせない技術であり、なおかつセキュリティ的なリスクにも繋がりやすいものなので、技術の概要くらいは理解しておくと良いかもしれません。