Stateless JWT CSRF Token Validation via HMAC

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing CSRF defense techniques lack scalability, cacheability, transparency, and offline support, particularly in load-balanced environments, making them inefficient in preventing cross-site request forgery attacks.

Innovation Solution

Implementing a stateless JSON Web Token (JWT) generated using a keyed hash message authentication code (HMAC) algorithm, managed by a JavaScript element in HTML documents, which allows any server with the HMAC key to validate the token, enabling scalable, cacheable, and transparent CSRF protection.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional CSRF defense techniques (challenge tokens, referrer validation, time-based restrictions) are implemented, then CSRF attack prevention is achieved, but scalability in load-balanced environments deteriorates

Engineering Contradiction:
ImproveCSRF attack preventionVSAvoidscalability
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent extracts the CSRF token validation logic from server-side session management and implements it client-side using JavaScript. The server only needs to validate the token format and signature, while the JavaScript on the client validates the token's association with the user's session, eliminating the need for complex server-side token management in load-balanced environments.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent introduces JavaScript as an intermediary layer between the server and the CSRF token validation process. The JavaScript code, delivered by the server, acts as a mediator that performs client-side validation of the CSRF token, reducing the validation burden on servers and enabling better scalability across multiple servers.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If server-side CSRF token validation is implemented, then CSRF protection is provided, but cacheability of HTML forms deteriorates

Engineering Contradiction:
ImproveCSRF protectionVSAvoidcacheability
Core Design Contradiction:
ReliabilityVSDuration of action of stationary object

Solution Approach 1:

The patent segments the CSRF protection mechanism into two independent parts: the CSRF token itself (which can be cached with HTML forms) and the validation logic (which is delivered separately via JavaScript). This segmentation allows the form and token to be cached independently, improving cacheability while maintaining security.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary validation of the CSRF token on the client side using JavaScript before the form is submitted to the server. This preliminary action ensures that even if cached forms are submitted, the token has already been validated, maintaining security without requiring real-time server validation for every form submission.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If complex CSRF defense frameworks are implemented, then CSRF attack prevention is improved, but ease of configuration and transparency deteriorates

Engineering Contradiction:
ImproveCSRF attack preventionVSAvoidease of configuration
Core Design Contradiction:
ReliabilityVSEase of operation

Solution Approach 1:

The patent implements self-service CSRF protection where the JavaScript code automatically handles token validation without requiring developers to configure complex validation rules. The system serves itself by automatically delivering the JavaScript, executing it in the client's browser, and performing validation, eliminating the need for manual configuration of CSRF defense parameters.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The patent creates a universal CSRF protection mechanism that works across different browsers and devices through standard JavaScript execution. The same JavaScript code and validation logic can be applied universally to all forms and requests, providing consistent CSRF protection without requiring separate configuration for different scenarios.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Applied Scientific Principles

This section explains which scientific principles are used to turn an abstract innovation direction into a practical engineering solution.

Function Achieved in This Case

This solution provides scalable, cacheable, and transparent CSRF protection by allowing any server in a cluster to validate the token, supporting offline operations and reducing the need for specific configuration, thus enhancing the robustness of the defense framework.

Implementation Method 1

generating a subsequent cross-site request forgery (CSRF) token in response to the asynchronous request. The CSRF token is generated using a keyed hash message authentication code (HMAC) algorithm

Methodology Applied
Scientific EffectHMAC algorithm:

Data Source

PatentUS9774622B2Cross-site request forgery defense
Publication Date: 2017.09.26 ADOBE INC
  • US9774622B2 patent drawing
  • US9774622B2 patent drawing
  • US9774622B2 patent drawing

AI summary

An HTML document includes a JavaScript element that manages CSRF token use. When the HTML document is rendered, the JavaScript element asynchronously requests a CSRF token from the server. In response, the server generates a JWT using a keyed HMAC algorithm. The resulting JWT, which functions as a CSRF token, is returned to the user where it is stored in a protected variable inside the JavaScript element. The CSRF token is therefore stateless and isn't stored in a server-side repository. When the user later requests access to a server resource, the CSRF token is included in such request. This may be accomplished by adding a hidden input field that includes the CSRF token to the submission that's transmitted to the server. If the server cannot validate the received token using the HMAC key that was originally used to generate the token, the request is considered unauthorized and is not processed.