おい、kawango!一般人にも感じがつかめるようにセッション管理について教えてやる
一般の人にとって一番わかりにくいのが
ということ。
「えー、うちのインターネットは常時接続だよ?」とかいう奴は蓬莱の弾幕でも食らっていやがれ。
となる。接続状態(太郎くんのお家にお邪魔している状態)というものは存在しない。とにかく毎回毎回、「ピンポーン」とやって、いちいち要件を伝えないといけない。ちなみに執事はいつも受動的。言われたことしかしない。
さて、もうちょっと高度に
ことも出来る。
好きな人はさすがに一部の友達にしか伝えられないので、山田家の執事は決められたルールに従って、「太郎の様子は万人に伝えても良いが、太郎の好きな人はマブダチにしか伝えてはならない」といった篩い分けをする必要がある。今僕らが話題にしたい「認証」の問題だ。
もちろん人間の執事なら、一度覚えれば、誰がマブダチで誰がそうでないかはわかるわけだが、現実のWebサーバーは杓子定規なので、毎回毎回「名前(ユーザー名)と合言葉(パスワード)」を聞いて、本当にマブダチかどうかを確認する。
マブダチA:「太郎君の好きな人って誰? 僕は《マブダチA》、合言葉は《おニャン子》だよ」
マブダチA:「その前は誰だったの?」
という面倒な方法をとらないといけない。
要するにページを移動するたびに(ひとつまえの好きな人を聞くたびに)、認証(マブダチ確認)を行う必要がある。
それはめんどくさいから、ある一定期間の間は特殊な記号を使って、認証を楽に済ませましょうというのが、HTTPにおけるセッション管理だ。
さっきの例え話でいくと、
山田家の執事がマブダチAの手間を考えて「毎回お名前と合言葉を言ってもらうのも面倒ですから、このバッジ(セッションID)をお渡ししますので胸に付けてください(クッキーに保存)。それを見ればわかりますから。但し、最後のお問合せから30分以上すぎたらお名前と合言葉をもう一度言ってもらいます(セッションIDの有効期限)。そのときはまた新しいバッジをあげます」となる。
大事なことは、このバッジが一時的にしか使われないものということだ。どのくらいの期限を有効とするかはその家族で決めたルールによる。いずれにせよ、バッジがあれば完全スルーであるので気をつける必要がある。
要するにセッション管理を利用することで、実はマブダチじゃない人にマブダチを騙られるリスクが増すんだ。
毎回毎回、ユーザー名とパスワードを答えるのは面倒だから、バッジでよろしくね!ってなったら、バッジをジャイアンに奪われたり、スネ夫盗み見られたり、出来杉君に気付かないうちに誘導させられたりというリスクが出てきてしまう。それを心配しないといけないんだ。
ここで、もしだよ、マブダチAが、世界で自分だけが持っている変更不可能な情報をバッジの代わりに使ったとしよう。例えばDNAだ。
執事がDNAでマブダチかどうかを判断する。簡単ログインのためにあなたはDNA情報を提供しますか?となる。山田さんの家も、佐藤さんの家も、田中さんの家もDNA情報ひとつで認証を済んでしまうような社会だ。しかもマブダチAを表すDNAはひとつしかない。よって、このDNAを1つコピーするだけでマブダチAになりすませる。hatenaもmixiもNaviTimeもDNA認証を使っているサービスは全部だ。もちろん、このDNA認証を一般のセッション管理と同じように有効期限を設定して、その都度破棄することもできるが……。それはあくまで、善意の執事の場合であって……。DNA情報と本人の個人情報をマッチングして裏でほくそえむ黒執事がいたら……ざわっざわざわ……。
しかも、DNA情報を暗号化せずによこせと言ってる奴もいるッ!な……何を言ってるのかわからねーと思うが、おれも何が目的なのかわからねえ……。オレオレ詐欺だとか、クレジットマスターだとか、そんなチャチなもんじゃねえ……。DNA情報ばら撒きというもっと恐ろしいものの片鱗を味わったぜ……。
わかったか、kawango!