Cross-site request forgery defense
First Claim
1. A computer-implemented method for defending against a cross-site request forgery (CSRF) attack, the method comprising:
- serving a content item to a client computing device, wherein the content item includes an embedded executable script;
receiving a first asynchronous request for a first CSRF token from the client computing device, wherein the first asynchronous request is generated as a result of running the embedded executable script at the client computing device;
generating the first CSRF token in response to the first asynchronous request, wherein the first CSRF token is generated using a hash message authentication code (HMAC) key, and wherein the first CSRF token is subject to an expiration event;
sending the first CSRF token to the client computing device;
receiving a second asynchronous request for an updated CSRF token from the client computing device, wherein the second asynchronous request is received after network connectivity with the client computing device is temporarily lost after sending the first CSRF token to the client computing device;
generating the updated CSRF token in response to the second asynchronous request, wherein the updated CSRF token is also generated using the HMAC key;
receiving, from the client computing device, a request to access a resource provided by a server computing device, wherein the request includes a received CSRF token; and
determining whether the received CSRF token can be authenticated using the HMAC key.
2 Assignments
0 Petitions
Accused Products
Abstract
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.
-
Citations
19 Claims
-
1. A computer-implemented method for defending against a cross-site request forgery (CSRF) attack, the method comprising:
-
serving a content item to a client computing device, wherein the content item includes an embedded executable script; receiving a first asynchronous request for a first CSRF token from the client computing device, wherein the first asynchronous request is generated as a result of running the embedded executable script at the client computing device; generating the first CSRF token in response to the first asynchronous request, wherein the first CSRF token is generated using a hash message authentication code (HMAC) key, and wherein the first CSRF token is subject to an expiration event; sending the first CSRF token to the client computing device; receiving a second asynchronous request for an updated CSRF token from the client computing device, wherein the second asynchronous request is received after network connectivity with the client computing device is temporarily lost after sending the first CSRF token to the client computing device; generating the updated CSRF token in response to the second asynchronous request, wherein the updated CSRF token is also generated using the HMAC key; receiving, from the client computing device, a request to access a resource provided by a server computing device, wherein the request includes a received CSRF token; and determining whether the received CSRF token can be authenticated using the HMAC key. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A cross-site request forgery (CSRF) defense system that comprises a server cluster having a plurality of server computing devices, each of the server computing devices including
a processor, wherein the plurality of processors are configured to collectively execute instructions that cause the server cluster to invoke a CSRF defense process; - and
a memory storing a hash message authentication code (HMAC) key, wherein the HMAC key stored in each of the memories is functionally equivalent; wherein the CSRF defense process comprises; serving a content item to a client computing device, wherein the content item includes an executable script; receiving a first request for a first CSRF token from the client computing device, wherein the first request is generated in response to running the executable script at the client computing device; generating the first CSRF token in response to the first request, wherein the first CSRF token is generated using the HMAC key, and wherein the first CSRF token is subject to an expiration event; sending the first CSRF token to the client computing device; receiving a second request for an updated CSRF token from the client computing device, wherein the second request is received after network connectivity with the client computing device is temporarily lost after sending the first CSRF token to the client computing device; generating the updated CSRF token in response to the second request, wherein the updated CSRF token is also generated using the HMAC key; receiving, from the client computing device, a subsequent request to access a resource provided by one of the plurality of server computing devices, wherein the subsequent request includes a received CSRF token; and determining whether the received CSRF token can be authenticated using the HMAC key. - View Dependent Claims (8, 9, 10, 11)
- and
-
12. A computer program product comprising a non-transitory computer-readable medium storing instructions that, when executed by one or more processors, causes a cross-site request forgery (CSRF) defense process to be carried out, the process comprising:
-
requesting a content item from a server cluster; receiving the requested content item from the server cluster, wherein the received content item includes a JavaScript element; rendering the received content item in a content browser; executing the JavaScript element; as a result of executing the JavaScript element, requesting a CSRF token from the server cluster; receiving the CSRF token from the server cluster; storing the received CSRF token in the JavaScript element; making a first determination that the received CSRF token is subject to an expiration event; making a second determination that network connectivity to the server cluster is unavailable; detecting that network connectivity to the server cluster has been reestablished; requesting an updated CSRF token from the server cluster in response to detecting that network connectivity to the server cluster has been reestablished; and submitting, to the server cluster, a subsequent request for access to a resource provided by the server cluster, wherein the subsequent request includes the updated CSRF token. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19)
-
Specification