クラス CsrfFilter
java.lang.ObjectSE
org.springframework.web.filter.GenericFilterBean
org.springframework.web.filter.OncePerRequestFilter
org.springframework.security.web.csrf.CsrfFilter
- 実装されたすべてのインターフェース:
jakarta.servlet.Filter
、org.springframework.beans.factory.Aware
、org.springframework.beans.factory.BeanNameAware
、org.springframework.beans.factory.DisposableBean
、org.springframework.beans.factory.InitializingBean
、org.springframework.context.EnvironmentAware
、org.springframework.core.env.EnvironmentCapable
、org.springframework.web.context.ServletContextAware
public final class CsrfFilter
extends org.springframework.web.filter.OncePerRequestFilter
シンクロナイザトークンパターンを使用して CSRF 保護を適用します。開発者は、状態の変更を許可するすべてのリクエストに対して CsrfFilter
が呼び出されるようにする必要があります。通常これは、Web アプリケーションが適切な REST セマンティクスに従っていることを確認する必要があることを意味します(つまり、HTTP メソッド GET、HEAD、TRACE、OPTIONS で状態を変更しないでください)。
通常、CsrfTokenRepository
実装は、CsrfToken
を HttpSessionCsrfTokenRepository
とともに HttpSession
に格納することを選択します。これは、クライアントアプリケーションで変更できる Cookie にトークンを保存するよりも優先されます。
- 導入:
- 3.2
フィールドサマリー
フィールドクラス 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
setAccessDeniedHandler
(AccessDeniedHandler accessDeniedHandler) CSRF 保護が失敗したときに使用するAccessDeniedHandler
を指定します。void
setRequestHandler
(CsrfTokenRequestHandler requestHandler) 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
フィールドの詳細
DEFAULT_CSRF_MATCHER
CSRF 保護が必要かどうかを示すデフォルトのRequestMatcher
。デフォルトでは、GET、HEAD、TRACE、OPTIONS を無視し、他のすべてのリクエストを処理します。
コンストラクターの詳細
CsrfFilter
新しいインスタンスを作成します。- パラメーター:
tokenRepository
- 使用するCsrfTokenRepository
メソッドの詳細
shouldNotFilter
protected boolean shouldNotFilter(jakarta.servlet.http.HttpServletRequest request) throws jakarta.servlet.ServletException - オーバーライド:
- クラス
org.springframework.web.filter.OncePerRequestFilter
のshouldNotFilter
- 例外:
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.OncePerRequestFilter
のdoFilterInternal
- 例外:
jakarta.servlet.ServletException
IOExceptionSE
skipRequest
public static void skipRequest(jakarta.servlet.http.HttpServletRequest request) setRequireCsrfProtectionMatcher
CSRF 保護を適用する必要があるかどうかを判別するために使用されるRequestMatcher
を指定します。RequestMatcher
が特定のリクエストに対して true を返す場合、CSRF 保護が適用されます。デフォルトでは、GET、HEAD、TRACE、OPTIONS 以外の HTTP メソッドに CSRF 保護を適用します。
- パラメーター:
requireCsrfProtectionMatcher
- CSRF 保護を適用する必要があるかどうかを判断するために使用されるRequestMatcher
setAccessDeniedHandler
CSRF 保護が失敗したときに使用するAccessDeniedHandler
を指定します。デフォルトでは、引数なしで AccessDeniedHandlerImpl を使用します。
- パラメーター:
accessDeniedHandler
- 使用するAccessDeniedHandler
setRequestHandler
CsrfToken
をリクエスト属性として使用できるようにするために使用されるCsrfTokenRequestHandler
を指定します。デフォルトは
XorCsrfTokenRequestAttributeHandler
です。- パラメーター:
requestHandler
- 使用するCsrfTokenRequestHandler
- 導入:
- 5.8