- - PR -
tomcatでセッションIDを変更する方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-10-18 04:24
Java初心者です。tomcat5.5でセッションを使用しています。
セッションの開始方法は判るのですが、一度開始したセッションの セッションIDの変更方法が判りません。できれば、ページ遷移する たびに、セッションIDを変更したいのです。 http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpSession.html などを見ても、それらしきメソッドが見当たらず困っています。 どなたかセッションIDの変更方法を教えて下さい。 |
|
投稿日時: 2006-10-18 10:02
tomcatを含めたWebの仕組みというのは「ステートレス」つまり画面1回でプログラムが
完結します。しかし、システムというのは、複数の画面に渡って連続して作業をする のが通常です。1画面で完結してしまっては困りますので、一連の作業であるという ことをマークするのがセッションIDです。 これを毎回変更するということは、一連の作業であるということを認識させない訳 ですので、あまり意味はないと思います。 ちなみに、invalidate()で無理やり使用不可にしてしまうことは可能です。 |
|
投稿日時: 2006-10-18 10:09
ログアウトしたらセッションを無効にして、次のログインで別のセッションを取ることは、ありますね。
ふつうはセッションはそのままで、別のランダムIDを発行すると思いますが。 セッションチェック+ランダムIDのチェックの2つのチェックになるので、セキュリティ的にも強くなりますし。 Strutsだと「トークン」という名前で、標準で用意されているようですね。 |
|
投稿日時: 2006-10-18 10:27
セッションを破棄する前に、全てのセッションの中身を退避して、
その後、破棄、開始、再設定と行えば、セッションIDが変わりませんか? 標準ではセッションIDを変えるAPIは用意されていません。 目的はセッションハイジャックの防止ですよね? 毎度IDを変えるのではなく、ログイン時だけでいいのではないでしょうか? SSLを使うのが前提となりますが。 |
|
投稿日時: 2006-10-18 11:46
かつのりさん、mioさん、ひらさん、回答ありがとうございます。
ご指摘のように、目的はセッションハイジャックを困難にすることです。 PHPでは、コマンド一発でセッションIDを変更できるので、 同等の仕組みがないかなと思って探していました。 かつのりさん wrote: > 中身を退避して、その後、破棄、開始、再設定と行えば、セッションIDが変わりませんか? > 標準ではセッションIDを変えるAPIは用意されていません。 なるほど、了解しました。 まずは、退避・破棄・開始・再設定で試してみます。 セッションの再生成時にgetCreationTime()の値が変わってしまいそうですので、 自分でセッション内にcreatetime的な変数を突っ込んでおきます。 mioさん wrote: > ふつうはセッションはそのままで、別のランダムIDを発行すると思いますが。 ご指摘のように、セッションIDと別のランダムID(サブセッションID)を 併用する方が、本来は望ましいのでしょうね。 > Strutsだと「トークン」という名前で、標準で用意されているようですね。 Strutsについては、これから勉強しようと思っていたところでしたので、 参考になります。情報ありがとうございます。 |
1