クラス CsrfFilter
- java.lang.Object
-
- org.springframework.web.filter.GenericFilterBean
-
- org.springframework.web.filter.OncePerRequestFilter
-
- org.springframework.security.web.csrf.CsrfFilter
- 実装されたすべてのインターフェース:
javax.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
実装は、LazyCsrfTokenRepository
によってラップされたHttpSessionCsrfTokenRepository
を使用して、CsrfToken
をHttpSession
に格納することを選択します。これは、クライアントアプリケーションで変更できる Cookie にトークンを保存するよりも推奨する方法です。- 導入:
- 3.2
フィールドサマリー
フィールド 修飾子と型 フィールド 説明 static RequestMatcher
DEFAULT_CSRF_MATCHER
CSRF 保護が必要かどうかを示すデフォルトのRequestMatcher
。
コンストラクターのサマリー
コンストラクター コンストラクター 説明 CsrfFilter(CsrfTokenRepository csrfTokenRepository)
メソッドのサマリー
すべてのメソッド 静的メソッド インスタンスメソッド 具象メソッド 修飾子と型 メソッド 説明 protected void
doFilterInternal(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.FilterChain filterChain)
void
setAccessDeniedHandler(AccessDeniedHandler accessDeniedHandler)
CSRF 保護が失敗したときに使用するAccessDeniedHandler
を指定します。void
setRequireCsrfProtectionMatcher(RequestMatcher requireCsrfProtectionMatcher)
CSRF 保護を適用する必要があるかどうかを判別するために使用されるRequestMatcher
を指定します。protected boolean
shouldNotFilter(javax.servlet.http.HttpServletRequest request)
static void
skipRequest(javax.servlet.http.HttpServletRequest request)
クラス org.springframework.web.filter.OncePerRequestFilter から継承されたメソッド
doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilterAsyncDispatch, shouldNotFilterErrorDispatch
フィールドの詳細
DEFAULT_CSRF_MATCHER
public static final RequestMatcher DEFAULT_CSRF_MATCHER
CSRF 保護が必要かどうかを示すデフォルトのRequestMatcher
。デフォルトでは、GET、HEAD、TRACE、OPTIONS を無視し、他のすべてのリクエストを処理します。
コンストラクターの詳細
CsrfFilter
public CsrfFilter(CsrfTokenRepository csrfTokenRepository)
メソッドの詳細
shouldNotFilter
protected boolean shouldNotFilter(javax.servlet.http.HttpServletRequest request) throws javax.servlet.ServletException
- オーバーライド:
- クラス
org.springframework.web.filter.OncePerRequestFilter
のshouldNotFilter
- 例外:
javax.servlet.ServletException
doFilterInternal
protected void doFilterInternal(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, javax.servlet.FilterChain filterChain) throws javax.servlet.ServletException, java.io.IOException
- 次で指定:
- クラス
org.springframework.web.filter.OncePerRequestFilter
のdoFilterInternal
- 例外:
javax.servlet.ServletException
java.io.IOException
skipRequest
public static void skipRequest(javax.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