Skip to content

Conversation

nieuwmijnleven
Copy link

Description

This PR refactors the XOR-based CSRF token encoding and decoding logic out of the XorCsrfTokenRequestAttributeHandler class into a new dedicated class named XorCsrfTokenEncoder.

Key Changes

  • Extracted XOR encode/decode logic into the XorCsrfTokenEncoder class with public methods

  • Updated XorCsrfTokenRequestAttributeHandler to delegate encoding and decoding to the new encoder

  • Introduced a CsrfTokenEncoder interface to define the encoding/decoding contract

  • Added comprehensive unit tests for XorCsrfTokenEncoder to ensure reliability

  • Supported injection of a custom SecureRandom instance for improved flexibility

  • Preserved existing behavior and encoding mechanism

This refactor improves code modularity and testability, making maintenance easier and future enhancements more straightforward.

Closes #17968

Moved XOR-based CSRF token encoding/decoding logic into a new public class `XorCsrfTokenEncoder`
that implements the `CsrfTokenEncoder` interface. This improves testability, readability, and
separation of concerns.

- Created `CsrfTokenEncoder` interface to define encoding/decoding contract
- Implemented `XorCsrfTokenEncoder` with secure random masking logic
- Updated `XorCsrfTokenRequestAttributeHandler` to delegate to the encoder
- Added support for injecting custom `SecureRandom` instance
- Preserved existing behavior and encoding mechanism

This refactor enables easier unit testing and future extensibility.

Signed-off-by: Cheol Jeon <nieuwmijnleven@outlook.com>
@nieuwmijnleven nieuwmijnleven force-pushed the feature/refactor-xor-csrf-token-encoder branch from d143196 to 9db12e4 Compare September 29, 2025 08:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: waiting-for-triage An issue we've not yet triaged
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Refactor XOR CSRF Token Encoding Logic into Public Class to Improve Testability and Maintainability
2 participants