クラス CsrfFilter

java.lang.ObjectSE
org.springframework.web.filter.GenericFilterBean
org.springframework.web.filter.OncePerRequestFilter
org.springframework.security.web.csrf.CsrfFilter
実装されたすべてのインターフェース:
jakarta.servlet.Filterorg.springframework.beans.factory.Awareorg.springframework.beans.factory.BeanNameAwareorg.springframework.beans.factory.DisposableBeanorg.springframework.beans.factory.InitializingBeanorg.springframework.context.EnvironmentAwareorg.springframework.core.env.EnvironmentCapableorg.springframework.web.context.ServletContextAware

public final class CsrfFilter extends org.springframework.web.filter.OncePerRequestFilter

シンクロナイザトークンパターンを使用して CSRF 保護を適用します。開発者は、状態の変更を許可するすべてのリクエストに対して CsrfFilter が呼び出されるようにする必要があります。通常これは、Web アプリケーションが適切な REST セマンティクスに従っていることを確認する必要があることを意味します(つまり、HTTP メソッド GET、HEAD、TRACE、OPTIONS で状態を変更しないでください)。

通常、CsrfTokenRepository 実装は、CsrfTokenHttpSessionCsrfTokenRepository とともに HttpSession に格納することを選択します。これは、クライアントアプリケーションで変更できる Cookie にトークンを保存するよりも優先されます。

導入:
3.2
  • フィールドサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static final RequestMatcher
    CSRF 保護が必要かどうかを示すデフォルトの RequestMatcher

    クラス org.springframework.web.filter.OncePerRequestFilter から継承されたフィールド

    ALREADY_FILTERED_SUFFIX
  • コンストラクターのサマリー

    コンストラクター
    コンストラクター
    説明
    新しいインスタンスを作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    protected void
    doFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain)
    void
    CSRF 保護が失敗したときに使用する AccessDeniedHandler を指定します。
    void
    CsrfToken をリクエスト属性として使用できるようにするために使用される CsrfTokenRequestHandler を指定します。
    void
    setRequireCsrfProtectionMatcher(RequestMatcher requireCsrfProtectionMatcher)
    CSRF 保護を適用する必要があるかどうかを判別するために使用される RequestMatcher を指定します。
    protected boolean
    shouldNotFilter(jakarta.servlet.http.HttpServletRequest request)
    static void
    skipRequest(jakarta.servlet.http.HttpServletRequest request)

    クラス org.springframework.web.filter.OncePerRequestFilter から継承されたメソッド

    doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilterAsyncDispatch, shouldNotFilterErrorDispatch

    クラス org.springframework.web.filter.GenericFilterBean から継承されたメソッド

    addRequiredProperty, afterPropertiesSet, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext

    クラス java.lang.ObjectSE から継承されたメソッド

    clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
  • フィールドの詳細

    • DEFAULT_CSRF_MATCHER

      public static final RequestMatcher DEFAULT_CSRF_MATCHER
      CSRF 保護が必要かどうかを示すデフォルトの RequestMatcher。デフォルトでは、GET、HEAD、TRACE、OPTIONS を無視し、他のすべてのリクエストを処理します。
  • コンストラクターの詳細

  • メソッドの詳細

    • shouldNotFilter

      protected boolean shouldNotFilter(jakarta.servlet.http.HttpServletRequest request) throws jakarta.servlet.ServletException
      オーバーライド:
      クラス org.springframework.web.filter.OncePerRequestFiltershouldNotFilter 
      例外:
      jakarta.servlet.ServletException
    • doFilterInternal

      protected void doFilterInternal(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain filterChain) throws jakarta.servlet.ServletException, IOExceptionSE
      次で指定:
      クラス org.springframework.web.filter.OncePerRequestFilterdoFilterInternal 
      例外:
      jakarta.servlet.ServletException
      IOExceptionSE
    • skipRequest

      public static void skipRequest(jakarta.servlet.http.HttpServletRequest request)
    • setRequireCsrfProtectionMatcher

      public void setRequireCsrfProtectionMatcher(RequestMatcher requireCsrfProtectionMatcher)
      CSRF 保護を適用する必要があるかどうかを判別するために使用される RequestMatcher を指定します。RequestMatcher が特定のリクエストに対して true を返す場合、CSRF 保護が適用されます。

      デフォルトでは、GET、HEAD、TRACE、OPTIONS 以外の HTTP メソッドに CSRF 保護を適用します。

      パラメーター:
      requireCsrfProtectionMatcher - CSRF 保護を適用する必要があるかどうかを判断するために使用される RequestMatcher
    • setAccessDeniedHandler

      public void setAccessDeniedHandler(AccessDeniedHandler accessDeniedHandler)
      CSRF 保護が失敗したときに使用する AccessDeniedHandler を指定します。

      デフォルトでは、引数なしで AccessDeniedHandlerImpl を使用します。

      パラメーター:
      accessDeniedHandler - 使用する AccessDeniedHandler
    • setRequestHandler

      public void setRequestHandler(CsrfTokenRequestHandler requestHandler)
      CsrfToken をリクエスト属性として使用できるようにするために使用される CsrfTokenRequestHandler を指定します。

      デフォルトは XorCsrfTokenRequestAttributeHandler です。

      パラメーター:
      requestHandler - 使用する CsrfTokenRequestHandler
      導入:
      5.8