さて、ログインの仕組みを作ってみたいと考えている。
パスワードを画面上で隠す方法はわかった。
次は、それを送信する時に暗号化すればいいのだろうと考えた。
最初はperlのcrypt関数を使おうとしたが、8文字までしかチェックできないので、Digest::MD5を使うことにした。
かんたんなテストプログラムで動作を確認してさあCGIで使おうと思ったところで、止まった。
postというのは、入力した値を処理するスクリプトを指定するだけであり、
入力された値を加工してから、つまり暗号化してから、渡すことができない。
ブラウザ上では見えないが、パケットキャプチャをすると当然平文パスワードが丸見えである。
このパスワードを認証するcgiに渡してからmd5ハッシュを作ってもしょうがない。
だがどう考えても、通信自体が暗号化されていなければパスワードを暗号化して渡すことはできない。
さらっと検索しても少なくともperlでcgiを書くだけではできないようだ。
だからみんなhttpsを使っているというわけなのか。
ただ私はほんのお遊びのサイトなので、簡易的なパスワードでかまわない。
どうせ見えるのなら、平文でやりとりするかな。
apacheのベーシック認証で、アクセス制限することはできる。
が、そもそもやりたいのはアクセス制限ではなく、カスタマイズされたページの表示である。
今はどのサイトでもログインしてそのユーザ用のページを表示する。amazon, twitter, google, yahoo... なんでもそうだ。
そのためにはセッション管理が必要である。