2022-06-05

HTTP Cookie命名で失敗したのか

趣旨

次のツイートブクマが集まっていたが、論点が整理されていないようなので、主にCookie出自について記述する。

※元ツイートブクマ

cookie命名で失敗し「魔術的な」技術勘違いされてる。実際はすごくシンプル。①サーバSet-CookieヘッダでIDを通知する、②クライアントは以降CookieヘッダにそのIDを設定する、③それによりサーバクライアント区別できるようになる。ただそれだけ。もったいぶって説明はほぼ間違ってる。

TL; DR

Cookieという単語に「魔術的な」意味など元々なかったし、本来単なるデータストアである(ゆえにセッションIDも格納できる)。元ツイートの主張はおかしいし、元ツイートが腐しているspeakerdeckの内容はそんなに間違っていない。

結論として、元ツイが「現在Cookie」の話しかしていないか論点がずれている。歴史的Cookieの在り方はデータストアだった。また、現在でも一部でデータストア的に使用されている

ツイートの主張

なるほどね。それでは1つずつ見ていこう。

CookieクライアントIDを保存するだけのもの

現在フォーカスを当てれば、Cookieは「基本的セッションIDを格納する場所」と説明すれば良いが(Slideもそう書いてるよ?)、元々はデータストアである。元ツイは歴史的ファクト現代実装スタンダード混同しているように感じる。2022年に「Cookieっていうのはー、ユーザ名とか個人情報を保存しておける便利なデータストアだよ」っていうと単なるやべー奴だが、1997年から2000年ごろまでは普通にそういった実装がなされていた。性善説時代だったのである

「嘘だろ」と言われそうなので、1997年のRFC2109を引用する

https://datatracker.ietf.org/doc/html/rfc2109

         POST /acme/shipping HTTP/1.1
         Cookie: $Version="1";
                 Customer="WILE_E_COYOTE"; $Path="/acme";
                 Part_Number="Rocket_Launcher_0001"; $Path="/acme"
         [form data]

普通にユーザー名とか買い物かごの中身をCookieに保存している。今この実装をする奴はヤベーが、1997年はそういう時代だったのである

         Cookie: $Version="1";
                         session_id="1234";
                         session_id="1111"; $Domain=".cracker.edu"

セッションIDの例もあるが、なんと数字4桁である。今こんなことをしたら確実に徳丸本の角で頭を殴られる。当時のインターネットいか性善説の上に成り立っていたか分かるだろう。

とにかく今はデータストアじゃないんだよ

この主張も誤りである。例えばja.wikipedia.orgでは、アカウント名や利用者のおおよその住所などをCookieに仕込んでいる。セキュリティ的にザルだと思うなら、ぜひ直接殴り合って欲しい。

Cookieという命名ダメ

元ツイではMagic Cookieを「魔術的なクッキー」と解釈している(なんでも魔法のようにできる多機能な……って感じ?)ようだが、ここでいうMagicとは魔術のことではないだろう。Magic NumberとかMagic WordMagic(利用者理解していなくても有効もの)と考えた方が意味が通る。これはMagic Cookie語源となったfotune cookieの語義に通じるところもある。

fortune cookieとは。文字が書かれた紙片を封入した焼き菓子であるHTTP Cookieクライアントサーバとも内容について問わない(紙片に何を書いてもいい)し、捨てても無視しても構わない(食べなくても割らなくても良い)ためにこの名前がついたのだろう。任意情報ラップしたものというメタファーとして適切に思えるし、Magicという形容詞も適切であると考える。

1つあたり容量が4kBしかないのも可愛らしい。クッキーいいんじゃないか。逆に何だったら良かったのか。

speakerdeckの内容は有害デタラメ

そんなに間違ったことは書いていない気がするが……。現在ほとんど使われない技術が書いてあったとして、それが何……?とはなる。Slideはaxiosの使い方を示してるだけだし、2年前の記事に対して「情報が古い」ってツッコミ微妙ではある。

総括

結局何に怒って何を否定しているのかよく分からなかった。SunのX端末を使っていたということなので、最近事情しか知らないというわけでもなさそうなのだが。

リーを眺めているとあまり期待はできなさそうだが、元ツイの人はもう少し丁寧な議論をして欲しいところだ。

余談

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん