クラス SessionFixationProtectionStrategy

java.lang.ObjectSE
org.springframework.security.web.authentication.session.AbstractSessionFixationProtectionStrategy
org.springframework.security.web.authentication.session.SessionFixationProtectionStrategy
実装されたすべてのインターフェース:
org.springframework.beans.factory.Awareorg.springframework.context.ApplicationEventPublisherAwareSessionAuthenticationStrategy

public class SessionFixationProtectionStrategy extends AbstractSessionFixationProtectionStrategy
HttpServletRequest.invalidate() を使用して、セッション固定攻撃から保護します。

すでにセッションを持っている場合(セッション固定保護攻撃に対する防御として)、新しく認証されたユーザーの新しいセッションを作成し、セッション属性を新しいセッションにコピーします。属性のコピーを無効にするには、migrateSessionAttributes を false に設定します(この場合でも、内部 Spring Security 属性は新しいセッションに移行されます)。

このアプローチは、セッションが無効になったときにサーブレットコンテナーが常に新しいセッション ID を割り当て、HttpServletRequest.getSession() を呼び出して新しいセッションを作成した場合にのみ有効です。

HttpSessionBindingListener の課題

オブジェクトのいずれかがオブジェクトのライフサイクルに関する仮定を行う方法で HttpSessionBindingListener インターフェースを実装する場合、新しく作成されたセッションへの既存の属性の移行は問題を引き起こす可能性があります。例として、Spring セッションスコープ Bean の使用があります。Bean がセッションから最初に削除されると、Bean が不要になったという前提で、DisposableBean インターフェースが呼び出されます。

アプリケーションの設計時にこの点を考慮し、属性が削除されてセッションに戻されたときに正しく機能しない可能性がある属性を保存しないことをお勧めします。または、SessionAuthenticationStrategy をカスタマイズして、アプリケーション固有の方法で課題に対処する必要があります。

導入:
3.0
  • コンストラクターの詳細

    • SessionFixationProtectionStrategy

      public SessionFixationProtectionStrategy()
  • メソッドの詳細

    • extractAttributes

      protected MapSE<StringSE,ObjectSE> extractAttributes(jakarta.servlet.http.HttpSession session)
      無効にする前に、セッションから既存の属性を抽出するために呼び出されます。migrateAttributes が false に設定されている場合、Spring Security 属性のみが保持されます。すべてのアプリケーション属性が破棄されます。

      このメソッドをオーバーライドして、新しいセッションに転送されるものを正確に制御できます。

      パラメーター:
      session - 属性の抽出元のセッション
      戻り値:
      新しいセッションに転送されるセッション属性のマップ
    • setMigrateSessionAttributes

      public void setMigrateSessionAttributes(boolean migrateSessionAttributes)
      属性を新しいセッションに移行するかどうかを定義します。extractAttributes メソッドをオーバーライドする場合は効果がありません。

      この値を false に設定しても、Spring Security で使用される属性(たとえば、キャッシュされたリクエストを保存するため)は、デフォルトで保持されます。

      パラメーター:
      migrateSessionAttributes - セッションの属性を新しい認証済みセッションに転送する必要があるかどうか。