クラス SessionFixationProtectionStrategy
- 実装されたすべてのインターフェース:
org.springframework.beans.factory.Aware
、org.springframework.context.ApplicationEventPublisherAware
、SessionAuthenticationStrategy
HttpServletRequest.invalidate()
を使用して、セッション固定攻撃から保護します。 すでにセッションを持っている場合(セッション固定保護攻撃に対する防御として)、新しく認証されたユーザーの新しいセッションを作成し、セッション属性を新しいセッションにコピーします。属性のコピーを無効にするには、migrateSessionAttributes
を false
に設定します(この場合でも、内部 Spring Security 属性は新しいセッションに移行されます)。
このアプローチは、セッションが無効になったときにサーブレットコンテナーが常に新しいセッション ID を割り当て、HttpServletRequest.getSession()
を呼び出して新しいセッションを作成した場合にのみ有効です。
HttpSessionBindingListener
の課題
オブジェクトのいずれかがオブジェクトのライフサイクルに関する仮定を行う方法で HttpSessionBindingListener
インターフェースを実装する場合、新しく作成されたセッションへの既存の属性の移行は問題を引き起こす可能性があります。例として、Spring セッションスコープ Bean の使用があります。Bean がセッションから最初に削除されると、Bean が不要になったという前提で、DisposableBean
インターフェースが呼び出されます。
アプリケーションの設計時にこの点を考慮し、属性が削除されてセッションに戻されたときに正しく機能しない可能性がある属性を保存しないことをお勧めします。または、SessionAuthenticationStrategy
をカスタマイズして、アプリケーション固有の方法で課題に対処する必要があります。
- 導入:
- 3.0
ネストされたクラスのサマリー
クラス org.springframework.security.web.authentication.session.AbstractSessionFixationProtectionStrategy から継承されたネストクラス / インターフェース
AbstractSessionFixationProtectionStrategy.NullEventPublisher
フィールドサマリー
クラス org.springframework.security.web.authentication.session.AbstractSessionFixationProtectionStrategy から継承されたフィールド
logger
コンストラクターのサマリー
コンストラクター方法の概要
修飾子と型メソッド説明extractAttributes
(jakarta.servlet.http.HttpSession session) 無効にする前に、セッションから既存の属性を抽出するために呼び出されます。void
setMigrateSessionAttributes
(boolean migrateSessionAttributes) 属性を新しいセッションに移行するかどうかを定義します。クラス org.springframework.security.web.authentication.session.AbstractSessionFixationProtectionStrategy から継承されたメソッド
onAuthentication, onSessionChange, setAlwaysCreateSession, setApplicationEventPublisher
コンストラクターの詳細
SessionFixationProtectionStrategy
public SessionFixationProtectionStrategy()
メソッドの詳細
extractAttributes
無効にする前に、セッションから既存の属性を抽出するために呼び出されます。migrateAttributes
がfalse
に設定されている場合、Spring Security 属性のみが保持されます。すべてのアプリケーション属性が破棄されます。このメソッドをオーバーライドして、新しいセッションに転送されるものを正確に制御できます。
- パラメーター:
session
- 属性の抽出元のセッション- 戻り値:
- 新しいセッションに転送されるセッション属性のマップ
setMigrateSessionAttributes
public void setMigrateSessionAttributes(boolean migrateSessionAttributes) 属性を新しいセッションに移行するかどうかを定義します。extractAttributes
メソッドをオーバーライドする場合は効果がありません。この値を
false
に設定しても、Spring Security で使用される属性(たとえば、キャッシュされたリクエストを保存するため)は、デフォルトで保持されます。- パラメーター:
migrateSessionAttributes
- セッションの属性を新しい認証済みセッションに転送する必要があるかどうか。