IP Library Granted Patent US 11,562,030
Granted Patent B2
US 11,562,030 · App. 16/192,308 · Granted Jan 24, 2023

Applying filter expressions to requests at an edge server

Inventor: David Alexander Kitchen (London, GB)
Assignee: CLOUDFLARE, INC.
G06F16/9035G06F16/245H04L67/01
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,562,030
App. No.
16/192,308
Granted
Jan 24, 2023
Kind
B2
Abstract

An edge server receives a request from a client device for an action to be performed on a resource. The edge server determines whether data traffic is associated with one or more filters. When the edge server determines that there are filters associated with the type of data traffic, the edge server accesses a data structure storing properties of the request. For each request property in the data structure, the edge server applies a related filter to a value of the request property and determines where the value of the request property matches an expected value. In response to determining that one or more filters match, the edge server performs actions on the request. When the edge server performs the actions on the request, the edge server sends the request to the origin server.

Claims (71)

1. A method, comprising:

receiving a request from a client device for an action to be performed on a resource that is hosted at an origin server;

in response to receiving the request, identifying a first type of data traffic associated with the request;

determining a first set of filters from a plurality of sets of filters, the first set of filters associated with the first type of data traffic associated with the request;

accessing a data structure associated with the request, the data structure storing properties of the request, the properties of the request including native properties, derived properties, and computed properties;

for each property of the request in the data structure,

applying a related filter from the first set of filters to a value of the property in the data structure, and

determining whether the value of the property matches an expected value;

in response to determining that one or more filters match, performing actions on the request corresponding to the one or more matched filters based on priority levels of the one or more matched filters including:

performing a lookup process to determine actions associated with each of the one or more matched filters, and

modifying a configuration of the request based on the determined actions; and

sending the request to the origin server.

2. The method of claim 1 , further comprising:

analyzing the request to identify the properties of the request;

generating the data structure associated with the request based on the analysis, wherein the data structure is a table, the table including entries generated based on the identified properties of the request.

3. The method of claim 2 , wherein generating the data structure associated with the request based on the analysis comprises:

sending identified properties to an external server; and

receiving a derived property for inclusion in the data structure, the derived property generated by the external server based on the sent identified properties.

4. The method of claim 2 , wherein the identified properties of the request include one or more of: an IP address, a host field, a request type, and a threat score.

5. The method of claim 1 , wherein an action of the determined actions is to authenticate the request when the value associated with the property is a destination address matching the expected value of a matched filter.

6. The method of claim 1 , further comprising:

in response to performing the actions on the request, identifying a new property of the request; and

appending a new entry in the data structure associated with the request based on the identified new property.

7. A non-transitory machine-readable storage medium that provides instructions that, when executed by a processor, cause said processor to perform operations comprising:

receiving a request from a client device for an action to be performed on a resource that is hosted at an origin server;

in response to receiving the request, identifying a first type of data traffic associated with the request;

determining a first set of filters from a plurality of sets of filters, the first set of filters associated with the first type of data traffic associated with the request;

accessing a data structure associated with the request, the data structure storing properties of the request, the properties of the request including native properties, derived properties, and computed properties;

for each property of the request in the data structure,

applying a related filter from the first set of filters to a value of the property in the data structure, and

determining whether the value of the property matches an expected value;

in response to determining that one or more filters match, performing actions on the request corresponding to the one or more matched filters based on priority levels of the one or more matched filters including:

performing a lookup process to determine actions associated with each of the one or more matched filters, and

modifying a configuration of the request based on the determined actions; and

sending the request to the origin server.

8. The non-transitory machine-readable storage medium of claim 7 that provides instructions that, when executed by the processor, cause the processor to further perform operations comprising:

analyzing the request to identify the properties of the request;

generating the data structure associated with the request based on the analysis, wherein the data structure is a table, the table including entries generated based on the identified properties of the request.

9. The non-transitory machine-readable storage medium of claim 8 , generating the data structure associated with the request based on the analysis comprises further comprises:

sending identified properties to an external server; and

receiving a derived property for inclusion in the data structure, the derived property generated by the external server based on the sent identified properties.

10. The non-transitory machine-readable storage medium of claim 8 , wherein the identified properties of the request include one or more of: an IP address, a host field, a request type, and a threat score.

11. The non-transitory machine-readable storage medium of claim 7 , wherein an action of the determined actions is to authenticate the request when the value associated with the property is a destination address matching the expected value of a matched filter.

12. The non-transitory machine-readable storage medium of claim 7 that provides instructions that, when executed by the processor, cause the processor to further perform operations comprising:

in response to performing the actions on the request, identifying a new property of the request; and

appending a new entry in the data structure associated with the request based on the identified new property.

13. An apparatus, comprising:

a processor;

a non-transitory machine-readable storage medium coupled with the processor that stores instructions that, when executed by the processor, cause said processor to perform the following:

receive a request from a client device for an action to be performed on a resource that is hosted at an origin server;

in response to receiving the request, identify a first type of data traffic associated with the request;

determine a first set of filters from a plurality of sets of filters, the first set of filters associated with the first type of data traffic associated with the request;

access a data structure associated with the request, the data structure storing properties of the request, the properties of the request including native properties, derived properties, and computed properties;

for each property of the request in the data structure,

apply a related filter from the first set of filters to a value of the property in the data structure, and

determine whether the value of the property matches an expected value;

in response to determining that one or more filters match, perform actions on the request corresponding to the one or more matched filters based on priority levels of the one or more matched filters including:

performing a lookup process to determine actions associated with each of the one or more matched filters, and

modifying a configuration of the request based on the determined actions; and

send the request to the origin server.

14. The apparatus of claim 13 , wherein the instructions further cause said processor to perform the following:

analyze the request to identify the properties of the request;

generate the data structure associated with the request based on the analysis, wherein the data structure is a table, the table including entries generated based on the identified properties of the request.

15. The apparatus of claim 14 , wherein generating the data structure associated with the request based on the analysis comprises:

sending identified properties to an external server; and

receiving a derived property for inclusion in the data structure, the derived property generated by the external server based on the sent identified properties.

16. The apparatus of claim 14 , wherein the identified properties of the request include one or more of: an IP address, a host field, a request type, and a threat score.

17. The apparatus of claim 13 , wherein an action of the determined actions is to authenticate the request when the value associated with the property is a destination address matching the expected value of a matched filter.

18. The apparatus of claim 13 , wherein the instructions further cause said processor to perform the following:

in response to performing the actions on the request, identify a new property of the request; and

append a new entry in the data structure associated with the request based on the identified new property.

Assignments (2)
SECURITY INTEREST Recorded May 20, 2024
From: CLOUDFLARE, INC.
To: CITIBANK, N.A.
Reel/Frame 067472/0246 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2018
From: KITCHEN, DAVID ALEXANDER
To: CLOUDFLARE, INC.
Reel/Frame 047517/0569 →
Continuity (1)
Related Publication 20200159776A1 · May 21, 2020