私はかなり古いJSPアプリケーション(JDK 1.3.1_15)を継承しており、セッション固定の穴を埋めようとしています。
を使用した認証後に現在のセッションを正常に無効にしていHttpSession.invalidate()
ますが、新しいセッションが作成されると、古いセッションIDが再利用されます。
<%
// login.jsp
if (authenticated) {
request.getSession().invalidate();
// create new session and store data
HttpSession session = request.getSession();
session.putValue(...);
// etc
response.sendRedirect("logged-in.jsp");
return;
}
%>
HTTPモニターで新しいセッションの割り当てを確認できます。これは、同じ番号を再び使用しているだけです。
-- Initial request response --
HTTP/1.1 200 OK
Set-Cookie: JSESSIONID=6a303082951311647336934;path=/
-- login.jsp request response --
HTTP/1.1 302 Moved Temporarily
Location: http://example.com/logged-in.jsp
Set-Cookie: JSESSIONID=6a303082951311647336934;path=/
私の前session.invalidate()
は、2番目のSet-Cookie
応答ヘッダーを使用することはまったくありませんでした。
新しいセッションIDを生成する方法について誰かアドバイスはありますか?私はJRUN4にあまり精通していませんが、構成ドキュメントを調べても何も見つかりませんでした。