- PR -

tomcatでセッションIDを変更する方法

1
投稿者投稿内容
未記入
会議室デビュー日: 2006/10/18
投稿数: 4
投稿日時: 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の変更方法を教えて下さい。
ひら
ぬし
会議室デビュー日: 2005/03/04
投稿数: 260
投稿日時: 2006-10-18 10:02
tomcatを含めたWebの仕組みというのは「ステートレス」つまり画面1回でプログラムが
完結します。しかし、システムというのは、複数の画面に渡って連続して作業をする
のが通常です。1画面で完結してしまっては困りますので、一連の作業であるという
ことをマークするのがセッションIDです。
これを毎回変更するということは、一連の作業であるということを認識させない訳
ですので、あまり意味はないと思います。
ちなみに、invalidate()で無理やり使用不可にしてしまうことは可能です。

mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-10-18 10:09
ログアウトしたらセッションを無効にして、次のログインで別のセッションを取ることは、ありますね。

ふつうはセッションはそのままで、別のランダムIDを発行すると思いますが。
セッションチェック+ランダムIDのチェックの2つのチェックになるので、セキュリティ的にも強くなりますし。
Strutsだと「トークン」という名前で、標準で用意されているようですね。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-10-18 10:27
セッションを破棄する前に、全てのセッションの中身を退避して、
その後、破棄、開始、再設定と行えば、セッションIDが変わりませんか?
標準ではセッションIDを変えるAPIは用意されていません。

目的はセッションハイジャックの防止ですよね?
毎度IDを変えるのではなく、ログイン時だけでいいのではないでしょうか?
SSLを使うのが前提となりますが。
未記入
会議室デビュー日: 2006/10/18
投稿数: 4
投稿日時: 2006-10-18 11:46
かつのりさん、mioさん、ひらさん、回答ありがとうございます。
ご指摘のように、目的はセッションハイジャックを困難にすることです。
PHPでは、コマンド一発でセッションIDを変更できるので、
同等の仕組みがないかなと思って探していました。

かつのりさん wrote:
> 中身を退避して、その後、破棄、開始、再設定と行えば、セッションIDが変わりませんか?
> 標準ではセッションIDを変えるAPIは用意されていません。
なるほど、了解しました。
まずは、退避・破棄・開始・再設定で試してみます。
セッションの再生成時にgetCreationTime()の値が変わってしまいそうですので、
自分でセッション内にcreatetime的な変数を突っ込んでおきます。

mioさん wrote:
> ふつうはセッションはそのままで、別のランダムIDを発行すると思いますが。
ご指摘のように、セッションIDと別のランダムID(サブセッションID)を
併用する方が、本来は望ましいのでしょうね。
> Strutsだと「トークン」という名前で、標準で用意されているようですね。
Strutsについては、これから勉強しようと思っていたところでしたので、
参考になります。情報ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)