高橋征義です。

Yukihiro Matsumoto <matz / ruby-lang.org> wrote:
> In message "Re: [ruby-list:40406] Re: 1.8のcgi/session.rb"
>     on Mon, 13 Dec 2004 23:46:21 +0900, とみたまさひろ <tommy / tmtm.org> writes:
> 
> |ええと、ちゃんと議論を理解できてないかもしれないんですが、問題は、「サー
> |バ側に存在しないセッションIDがブラウザから渡されてきたときに、そのIDを
> |そのまま使ってしまう」ということだけなんですよね。
> |
> |であれば、「サーバ側に存在しないセッションIDがブラウザから渡されてきて
> |も、そのセッションIDを使わずに、セッションIDが渡されなかった時と同じよ
> |うに振る舞う」というので良いのではないでしょうか。
> 
> 基本的に[ruby-list:40368]におけるTietewさんのアイディアと同
> じですよね。
> 
> |例外が勝手にあがるようになってしまうと、互換性が失われて、結構大変なこ
> |とになると思います。あちこちで悲鳴があがりそうな…。
> 
> その場合、[ruby-list:40388]についてどう思いますか。

セッションが存在するかどうかだけではなく、セッションに期待した
値が入っていることを確認するべきだと思います。
たとえばIDとパスワードによる認証(ログイン)であれば、
セッション内にログインIDを保存します。このログインIDがなければ
ログインしていない(認証されていない)のがわかるわけです。
新規にセッションIDが作られた場合はもちろんこのログインIDが
保存されていないので、認証が行われていないことがわかり、
その場合はログインページに飛ばしたりします。
わざわざログインIDを取得するのは面倒、と思われるかもしれま
せんが、ログイン処理時にログインIDを取得するのは必須なはずな
ので、特に手間が増えるわけではありません。また、よりセキュア
にしたい処理は、再度パスワードを手で入力させることもできます。

……という風に作るのが「普通」だと思っているので、[ruby-list:40388]
で志村さんが懸念しているような問題は起こらないと思っている
のですが、まつもとさんが[ruby-list:40378]で言っているように
「発言する人の背景によって変わってきちゃう」ところはあるかも
しれません。

# みんなどうやってるんだろう……。

高橋征義 (Masayoshi Takahashi)   E-mail: maki / rubycolor.org