Cookieってなんだろう?

Cookieのブログのサムネイル
◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

【5/27開催】事業変革を最新ソフトウェア技術で加速する「OSS利活用事例セミナー」
OSSのビジネス活用事例などを紹介します!登壇者はスカパー様やIPAなど🎤
OSSを活用した新たなビジネス創出やDX推進のヒントを得られる機会です。
https://ossforum.connpass.com/event/318583/
【6/19開催】Kong Community Japan Meetup #4
本イベントでは、Kong Inc. のVP of ProductであるReza Shafii氏もプレゼンターとして参加。当社からはアーキテクト マネージャーの槌野の登壇が決定!参加無料です!!
https://column.api-ecosystem.sios.jp/connect/kong/1081/

はじめに

はじめまして、こんにちは、サイオステクノロジー新卒エンジニアのあさりです。ここ数年、Webページを閲覧しているとCookieの取得と同意を求めるポップアップを見かけることが多くなった気がします。学生時代は、Cookieについて何も知らず、無視しても普通に閲覧できていたので大抵無視していました。入社してからCookieについて学ぶ機会があったのでまとめたいと思います。

Cookieとは?

Cookie(クッキー)は、HTTPにおいてWebアプリケーションとWebブラウザの間でユーザーが入力したデータや履歴などの情報を記録するための仕組みです。記録することによって、ユーザーが再度同じ情報を入力する手間を省くことができます。たとえば、IDとパスワードを入力してログインしたWebサイトに、しばらくしてからもう一度アクセスすると、IDとパスワードの入力を求められないことありますよね?これは、CookieでIDとパスワードを保持することによって実現しています。

Cookie誕生の経緯

Cookieは、HTTPが状態をもたないプロトロル(ステートレス・プロトコル)であるために誕生した技術です。状態を保持するステートフルが通信のたびにこれまでのやりとりを覚えているのに対して、ステートレスはリクエストのたびに状態がリセットされ、これまでのやりとりは考慮しません。そのため、ステートレスでは、認証(ログイン)が必要なページに関してはページ遷移のたびに認証が必要となり、非常に不便な気がします。ステートフルのほうが便利じゃないか、と思う方もいると思います。しかし、ステートフルではこれまでのやりとりを覚えているため、本来の処理を行うために余計な処理が発生してしまい、サーバの負担が大きくなってしまうという欠点があります。そのため、Webサーバはステートレスであるほうが適しているのです。ステートフル・レスの話については、こちらの記事でもわかりやすく解説されているので参考にしてみてください。

このような背景があり、ステートレスでも状態を管理できる仕組みが必要になりました。それがCookieです。CookieはNetscape NavigatorというWebブラウザを開発していたNetscape Communications社によって独自に開発された技術でした。その高い有用性が認められ、Microsoft社のInternet Explorerなどほかのブラウザにも採用され、その後2000年にRFC2965で標準化されました。

※RFC(Request for Comments)は、インターネット技術の標準化を行うIETF(Internet Engineering Task Force)が発行している技術仕様などの情報共有をするための文書群です。

Cookieの仕組み

それでは、冒頭のIDとパスワードを入力してログインするWebサイトを例にその仕組みについて説明します。ここでは、ID=taro, パスワード=passとします。まず、ログインする際にはフォームに入力されたID・パスワードの値がリクエストとしてWebサーバに送られます(図中①)。そして、アプリケーション側では、ID・パスワードが正しい場合、HttpResponseとして返却するHeaderを記載してる部分でSet-Cookieヘッダに「ID=taro」、「パスワード=pass」と設定します。この「名前=値」の形式で表されるものをCookieと呼びます。そして、WebサーバからCookieを受け取ったWebブラウザは、CookieをクライアントPC上に保管します。

そして、次回同じドメインにリクエストを送る際(図中②)に、このCookieをHttpRequestのHeaderに入れて送ります。Webアプリケーション側ではこのHeader内のCookieを調べることで、ログイン処理を行います。また、CookieはそのCookieを送ってきたサーバ以外のサーバに対してはCookieを送らないという仕組み(図中③)があり、この仕組みによって意図せずに他のサーバに情報が送られないようにしています。

CookieのWebブラウザとWebサーバ間のやりとりの図

Cookieの同意が求められる背景

冒頭でここ数年、Cookieの取得と同意を求めるポップアップを目にすることが多くなった気がすると言いましたが、これはCookieのもつリスクに起因しています。Cookieが保存する情報は先ほどお話したID・パスワードに限らず、様々なものが含まれます。オンラインショッピングサイトでは、住所やクレジットカード番号など重要な個人情報が保存される可能性があります。もし、これらの情報がCookieに保存されているデバイス(スマホ・PC)を紛失してしまった際には不正利用されたり、不正アクセスされるリスクがあります。

また、Cookieの情報を利用したプライバシー侵害が問題になっています。就職情報サイトを運営する企業が就職活動中の学生のサイト閲覧履歴などを基にデータ化し、その情報を採用企業に提供していたという問題がありました。知らないうちにサイトから個人情報が抜き取られ、利用されていた点が問題となりました。

Cookieには、このようなリスクがあり、2018年にはEUが個人情報保護ルール「GDPR(EU一般データ保護規則)」を施工し、そのなかでCookieなど個人情報を収集する事業者には、ユーザーにその意図を伝えることが義務付けられました。日本でも2020年に改正個人情報保護法が成立・公布されました。この影響により、日本企業のWebサイトにおいてもCookie取得時の同意を求める機会が多くなっているようです。

まとめ

今回はCookieに関するお話でした。Cookieにより、情報の再入力の手間がなくなり利便性が向上する反面、様々なリスクも存在します。特に住所などの重要な個人情報やクレジットカード番号などの金銭が関わる情報をCookieで扱うサイトについては、Cookie取得に関して慎重になる必要があるのかもしれませんね。

アバター画像
About あさり 7 Articles
サイオステクノロジー2023年新卒入社の新米エンジニアです。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

11人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる