さて、今回もGASやpythonではなく、webの基礎知識の一種であるcookieについてノンプロでも把握しておきたい概要を解説していきたいと思います。
Cookieって聞いたことないって人はこのブログ読む人ではあまりいないかなと思うのですが、名前は聞いたことあるけど実際何をしてるのか、どういうものなのかは知らないって人は多くいるかと思います。
そんな中、昨今GDPR(一般データ保護規則、EUのプライバシー管理の規則みたいなもの)が話題になり、いろいろなサイトでCookie同意の画面をみるようになりましたよね?例えばで、いかにIIJのページ画面を貼ってみました。左下の方にCookie同意のポップアップが出ていますね

今回はこのCookieについて、どんなものなのか?そして、何が問題となっているのか、について少しノンプロでもわかる範囲で概説していきたいなと思います。端折って書きますので、一部誤解を与える表現になりかねないことはご了承ください。
そもそもCookieって何者?
名前だけ聞いたことあるって人向けに、まずはCookieってなんなのか?という点から説明していきたいと思います。
cookieはみなさんがPCやスマホを使ってウェブページにアクセスした時に生成されるファイルで、みなさんのlocalやブラウザに保存されている小さなデータのことです。
その小さなデータの中にこのブラウザについての情報が含まれており、同一ブラウザからアクセスしてきた場合、フレームワーク側のセッション管理と相まって、あなたが誰かを特定できるようになってきます(ログインで利用したセッションとcookieに保存されているsession情報の一致を利用)。
cookieの概要
それではシンプルなcookieの動きをみていきましょう。
サーバ → UA(ブラウザ)
Set-Cookie: SID=31d4d96e407aad42; Path=/; Domain=example.com
UA(ブラウザ) → サーバ
Cookie: SID=31d4d96e407aad42
(引用元: https://triple-underscore.github.io/http-cookie-ja.html)
サーバ側からブラウザに対してcookieとpath(ドメイン)を指定して、送り込みます。この時に一緒にexpiresを送り込むと永続cookieになります。
受け取ったブラウザ側がset-cookieで指定されたSIDをcookieとしてブラウザ(もしくは、js local)に保存します。
やりとりとしては、httpの通信でセットで行われていると理解してもらえれば。
小さなデータってcookieってどのくらい小さいの?
小さなデータとしか説明してきませんでしたが、cookie自体は本当にデータ容量としては小さいんです。
cookieのデータ上限は4KBです。
本当に小さいデータですよね、4KBって約4000文字程度です。実際のweb pageで利用されるhtmlとかの比ではありませんね。
よくある誤解:cookieはユーザ特有のもの?
よくある誤解でcookieがあれば、ユーザが特定されるというものですが、あくまでcookieはブラウザ(正確にはuser agent)単位で発行されるので、あなたが誰かを厳密に把握するものではありません。
例えばですが、あなたのPCを誰かに貸し出したとしましょう。その場合、あなたが過去に利用したブラウザを持って、貸し出した相手が同じサイトをおとづれた場合(例えばAmazonを利用した場合)、サイト側は同一人物と認識します。
なぜなら、同一のブラウザからアクセスされてきているから、です。
cookieの分類(永続期間視点と発行体(ドメイン)視点)
cookieの分類は①cookie自体の永続期間での分類と②発行体が何かという視点での分類の2つのパターンで分類ができます。つまり4つのパターンがあります。
永続期間視点でのcookieの分類
これは、cookie自体がどの程度の期間有効に機能するかという設定ベースでの違いでの分類です。
cookieの種類 | 特徴 | cookie設定の違い |
永続cookie | セッション終了後もcookieが生きる (ブラウザを閉じてもcookieが生きる) | cookieの有効期限が設定されているcookie (expiresが設定されている) |
セッションcookie | セッション終了後にcookieが終わる | cookieの有効期限が設定されていないcookie (expiresが設定されていない) |
セッションcookieはセッション終了後に削除されるクッキーなので、利用用途は限定されていますが、一番メジャーな使われ方はログインセッションの管理ですかね。
発行体(ドメイン)視点でのcookieの分類
発行体視点、厳密にはドメイン視点では、現在アクセスしているドメインかそれ以外が発行したcookieかで以下の2パターンに分けられます。
cookieの種類 | 特徴 | ざっくりとした違い |
1st party cookie | 現在アクセスしているドメインが発行しているcookie | アクセスしたドメイン自体が組成しているhtml描画が利用 |
3rd party cookie | 現在アクセスしているドメイン以外が発行しているcookie | 広告(バナー広告など)などのアクセスしたドメイン以外が組成しているhtml描画が利用 |
誰が発行したcookieかという違いが1st partyと3rd partyという形で現れています。1st partyは今自分で直接アクセスしているweb pageなので、そこで渡されるcookieはログイン認証やカートの継続など基本的にユーザのwebの利用を便利にしてくれるものです。
他方3rd party cookieはいろいろなブラウザに渡って利用されているものです。もっともメジャーなものでは、広告系のcookieでしょうか?
別のドメインに行っても過去みた広告情報などが継続して出てくるケースが多いですよね?それは3rd party cookieがあなたの情報(正確にはブラウザの情報)を継続してトレースしているからです。(あくまで、ブラウザをトレースしているのであって、あなたが一切どこにも自分の属性情報を入力しなければ、属性情報が渡されるわけではありません。cookieにはそこまで多くのデータを入れられないので)
cookieの関連ドキュメント
RFC6265がcookieに関するドキュメントの大元になります
日本語版もあるので、日本語版のurlを貼っておきますので、サーバが設定できるset-cookieのヘッダ属性とかをみてみるといいかと思います。httpの基本が分かっていればそんなに難しい内容ではないかと思います。
GDPRで規制されたCookie
GDPR(一般データ保護規則)において、cookieがかなり広く槍玉にあげられましたね。まぁトラッキング広告などの3rd party cookieは致し方ないかなぁと個人的には思っていますが。やりたい放題やっていた感じですのでw
他方で、GDPRにおいては1st party cookieについても、暗黙的な同意(※)でダメで、暗黙的ではない同意(オプトイン)が必要となりました。
この規制の結果、最初の方にIIJのHPで紹介したような、クッキー同意画面がいろいろなHPで導入されるようになりました。
※このHPに一定時間いたら、cookieに同意したこととみなす、のようなユーザが直接承認するのではなく、ウェブ運営者側が一定の条件で同意したと推定する方法
GDPR等とは別にプラットフォーマーが進めるプライバシー強化の動き
GDPR(EU規制)やCCPA(California Consumer Privacy Act、米カリフォルニア州の州法)など、行政側の動きによく目が向けられていますが、実はGoogle/Apple/Facebookなどのプラットフォームもそれぞれ独自のプライバシー強化の動きを打ち出しています。参考にいくつか紹介していきます。
Appleの動き(WWDCでの発表)
google (chromeの3rd party cookie制限)

基本は3rd party cookieを廃止して行って、プラットフォーマー発行の1st party cookieに統合していく流れになっていくのは基本トレンドかなと思います。
まとめ
ざっくりとcookieの概要説明やGDPR含めた昨今のプライバシー規制がcookieに与えた影響をノンプロレベルで把握してもいいかなぁというレベルまで説明してみました。
cookieやセッションという言葉は把握していても実際の設定内容まではみることないのが、ノンプロだと思います。たまにはちょっと足を伸ばして、RFCなどのofficial docsもみてみると知見が広がるかもしれません。
コメント