US9270647B2

Client/server security by an intermediary rendering modified in-memory objects

Summary by NHIP

Intermediary Client Security Method

A method intercepts server instructions defining objects, executes them via a headless browser to create data structures, and renders distinct second instructions for a remote client. The system caches these instructions and sends them to additional clients after determining the intercepted third instructions are equivalent to the original first set.

Claim Score by NHIP

Read claim 1, the broadest

Abstract

In an embodiment, a method comprises intercepting, from a server computer, a first set of instructions that define one or more objects and one or more operations that are based, at least in part, on the one or more objects; generating, in memory, one or more data structures that correspond to the one or more objects; performing the one or more operations on the one or more data structures; updating the one or more data structures, in response to performing the one or more operations, to produce one or more updated data structures; rendering a second set of instructions, which when executed by a remote client computer cause the remote client computer to generate the updated data structures in memory on the remote client computer, wherein the second set of instructions are different than the first set of instructions; sending the second set of instructions to the remote client computer.

US9270647B2, drawing sheet 1
Sheet 1 of 10

Term

Projected expiry 25 February 2034.

  1. Priority and filed
  2. Granted
  3. Today
  4. Projected expiry

20 claims: 4 independent, 16 dependent

  1. 1
    Broadest claimClaim Score 29, narrow(NHIP)A method comprising:intercepting, from a server computer, a first set of instructions that define one or more objects;executing, by a headless browser, the first set of instructions to produce one or more data structures in memory that correspond to the one or more objects;updating the one or more data structures based, at least in part, on a configuration to produce one or more updated data structures;rendering a second set of instructions that are configured to cause a remote client computer, when executed by the remote client computer, to generate the one or more updated data structures in memory on the remote client computer, wherein the second set of instructions are different than the first set of instructions;sending the second set of instructions to the remote client computer;caching the second set of instructions;intercepting a third set of instructions;determining the first set of instructions and the third set of instructions are equivalent;in response to determining the first set of instructions and the third set of instructions are equivalent;sending the second set of instructions to a second remote client computer;wherein the method is performed by one or more computing devices.
  2. 9
    A method comprising:intercepting, from a web server computer, over HTTP, an original HTML document, a set of original Cascading Style Sheets (CSS) codes, and a set of original JavaScript codes that define one or more objects in an original Document Object Model (DOM) and one or more operations that are based, at least in part, on the one or more objects in the original DOM;executing the original HTML document, the set of original CSS codes, and the set of original JavaScript codes by a headless browser to produce one or more data structures in memory that correspond to the one or more objects in the original DOM;updating the one or more data structures based, at least in part, on a configuration to produce one or more updated data structures;rendering a modified HTML document, a set of modified CSS codes, and a set of modified JavaScript codes, which are configured to cause a remote client computer, when processed by the remote client computer, to generate the one or more updated data structures in memory on the remote client computer;wherein the modified HTML document defines a modified DOM that is different than the original DOM;wherein the modified HTML document, the set of modified CSS codes, and the set of modified JavaScript codes are different than the original HTML document, the set of original CSS codes, and the set of original JavaScript codes;generating a DOM mapping between the modified DOM and the original DOM;storing the DOM mapping;sending the modified HTML document, the set of modified CSS codes, and the set of modified JavaScript codes to the remote client computer;intercepting, from the remote client computer, a request based on the modified DOM;translating the request based, at least in part, on the DOM mapping to produce a translated request based on the original DOM;sending the translated request to the web server computer;wherein the method is performed by one or more computing devices.
  3. 11
    A computer system comprising:a server computer configured to receive requests from a browser executed on a remote client computer and to send data to the browser in response to received requests;an intermediary computer communicatively coupled the server computer and comprising: a memory;a browser backend module configured to intercept, from the server computer, a first set of instructions that define one or more objects and to execute the first set of instructions to produce one or more data structures in the memory that correspond to the one or more objects;a forward translation module configured to update the one or more data structures based, at least in part, on a configuration to produce one or more updated data structures;to render a second set of instructions that are configured to cause the remote client computer, when executed by the remote client computer, to generate the one or more updated data structures in memory on the remote client computer, wherein the second set of instructions are different than the first set of instructions;to send the second set of instructions to the remote client computer;wherein the browser backend module is further configured to: intercept a third set of instructions;to determine the first set of instructions and the third set of instructions are a same set of instructions;wherein the forward translation module is further configured to: cache the second set of instructions;in response to determining the first set of instructions and the third set of instructions are the same set of instructions, sending the second set of instructions that is cached to a second remote client computer.
  4. 19
    A computer system comprising:a web server computer configured to receive requests from a web browser executed on a first remote client computer;to send HTML, Cascading Style Sheets (CSS), and JavaScript codes over HTTP to the web browser in response to received requests;an intermediary computer communicatively coupled the web server computer and comprising;a memory;a browser backend module configured to intercept, from the web server computer, over HTTP, an original HTML document, a set of original CSS codes, and a set of original JavaScript codes that define one or more objects in an original Document Object Model (DOM) and one or more operations that are based, at least in part, on the one or more objects in the original DOM;to execute the original HTML document, the set of original CSS codes, and the set of original JavaScript codes by a headless browser to produce one or more data structures in memory that correspond to the one or more objects in the original DOM;a forward translation module configured to update the one or more data structures based, at least in part, on a configuration to produce one or more updated data structures;to render a modified HTML document, a set of modified CSS codes, and a set of modified JavaScript codes, which when processed by a remote client computer cause the remote client computer to generate the one or more updated data structures in memory on the remote client computer;to generate a DOM mapping between a modified DOM and the original DOM;to send the modified HTML document, the set of modified CSS codes, and the set of modified JavaScript codes to the first remote client computer;wherein the modified HTML document defines the modified DOM, which is different than the original DOM;wherein the modified HTML document, the set of modified CSS codes, and the set of modified JavaScript codes are different than the original HTML document, the set of original CSS codes, and the set of original JavaScript codes;a transaction store configured to store the DOM mapping;a reverse translation module configured to intercept, from the remote client computer, a request based on the modified DOM;to translate the request based, at least in part, on the DOM mapping to produce a translated request based on the original DOM;to send the translated request to the web server computer.