use customized SpaCsrfTokenRequestHandler
to handle CSRF token
#25907
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
In the production configuration, the server has enabled the compression feature (as shown below):
This implies that the server might be vulnerable to BREACH attacks. Currently, in the
SecurityConfiguration
, we're usingCsrfTokenRequestAttributeHandler
to manage Csrf Tokens. However, according to the official documentation, "The primary use of CsrfTokenRequestAttributeHandler is to opt-out of BREACH protection of the CsrfToken" because the value ofX-Xsrf-Token
in the response headers remains constant for every request.Following the guidance from the Spring Security official documentation, I found the following section:
Integrating with CSRF Protection > JavaScript Applications > Single-Page Applications
In fact, for single-page applications (SPAs), we can use
XorCsrfTokenRequestAttributeHandler
in conjunction withCsrfTokenRequestAttributeHandler
. By employing different implementations in various contexts to manage Csrf Tokens, we can leverage the capabilities ofXorCsrfTokenRequestAttributeHandler
to shield against BREACH attacks.Therefore, I've submitted this pull request in alignment with the recommendations provided in the official documentation.