IP Library Granted Patent US 9,489,356
Granted Patent B2
US 9,489,356 · App. 13/889,345 · Granted Nov 8, 2016

Enhanced document and event mirroring for accessing internet content

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 9,489,356
App. No.
13/889,345
Granted
Nov 8, 2016
Kind
B2
Abstract

Systems and methods for enhanced DOM and event mirroring and security in web applications provides an intermediate Master Browser between web content and client devices to improve security and other enhancements.

Claims (102)

1. A method of providing access to content over a network using an intermediate system, comprising:

receiving, by a master browser module executing on an intermediate server, from a slave browser module executing on a client device, a request for external content;

parsing, by the master browser module, received content to construct an intermediate model specifying a representation of visual elements of the content;

transmitting, by the master browser module, one or more messages of the intermediate model to the slave browser module, wherein the one or more messages cause the slave browser module to:

create a modified mirrored copy of the intermediate model as a client model;

render a presentation based on the client model;

monitor for a user interaction event with the content;

transmit, to the master browser module, an event identifier corresponding to the user interaction event, responsive to detecting the user interaction event;

identifying, by the master browser module, responsive to receiving the event identifier from the slave browser module, a security policy to apply according to the event identifier, the security policy specifying user interaction events allowed at the master browser module using the intermediate model; and

determining, by the master browser module, responsive to applying the identified security policy, whether to execute the user interaction event corresponding to the event identifier at the master browser module.

2. The method of claim 1 , wherein the master browser module transmits a command to the slave browser module, wherein the command causes the slave browser module to modify the client model derived from the parsed content, during mirroring.

3. The method of claim 1 , wherein the master browser module comprises:

an intermediate web browser that receives internet content, generates the intermediate model of the internet content and performs browser functions;

a master browser messaging module that exchanges the one or more messages with the slave browser module using a messaging protocol with the slave browser module; and

wherein the master browser module is configured to:

monitor the intermediate model by reading a model state through application programming interface calls; and

execute the user interaction event received by the master browser module from the slave browser module by sending commands to the intermediate web browser via the application programming interface calls.

4. The method of claim 1 , wherein the slave browser module comprises:

a client web browser that receives communications from the master browser module;

a client web application provided by the master browser module or by an authorized web application server;

wherein the client web application exchanges the one or more messages with the master browser module to construct the client model from a mirror of the intermediate model and transmits the event identifier to the master browser module; and

wherein the client web browser renders a page view using the client model.

5. The method of claim further comprising:

rewriting, by the master browser module, one or more links to external documents in the intermediate model, prior to transmitting the intermediate model to the slave browser module of the client device, by inserting one or more selectable links for each of the one or more links in the intermediate model, wherein each of the one or more selectable links when selected at the client device is configured to generate the event identifier transmitted to the master browser module to execute a specified action.

6. The method of claim 1 , further comprising:

rewriting, by the master browser module, one or more executable elements in the intermediate model, prior to transmitting the intermediate model to the slave browser module of the client device, by inserting one or more selectable active elements in the intermediate model, each of the one or more selectable active elements when selected at the client device is configured to generate the event identifier transmitted to the master browser module to execute a specified action.

7. The method of claim 1 , further comprising:

identifying, by the master browser module, application programming interface calls of the intermediate model requiring access to local client data; and

transmitting, by the master browser module, an access request to the client device, responsive to identifying that the application programming interface calls require access to the local client data.

8. The method of claim 1 , further comprising:

detecting, by the master browser module, first executable code that relies on access to local features of the client device;

replacing, by the master browser module, the first executable code with second executable code to send information about the second executable code to the slave browser module of the client device, wherein the information causes the slave browser module to:

format parameter data from the information sent about the second executable code,

generate a local application programming interface call using the parameter data;

format a result of the application programming interface local call; and

transmit the result of the local application programming interface call to the master browser module; and

processing, by the master browser module, the result of the local application programming interface call according to the first executable code.

9. The method of claim 1 , further comprising:

modifying, by a web application of the master browser module, a cookie store in the intermediate server system by at least one of setting a new cookie, removing an existing cookie, and modifying a cookie value;

formatting, by the web application, information about the modified cookie store into a message; and

sending, by the web application, the message to the slave browser module.

10. The method of claim 1 , wherein the slave browser module performs browser content interaction mechanisms including one or more of:

scrolling,

updating values of editable HTML elements responsive to first user keystrokes,

changing corresponding states of checkboxes, radio buttons, and drop-down lists, responsive to second user keystrokes, first mouse clicks, or touch-screen events, and

changing keyboard focus responsive to second mouse clicks or Tab keystrokes.

11. The method of claim 1 , wherein the slave browser module performs browser content interaction mechanisms different from the master browser module; and further comprising:

registering, by the master browser module, an event handler including a preventDefault attribute for an input event;

preventing, by the master browser module, transmission of data from the event handler to the slave browser module;

executing, by the master browser module, the user interaction event using the event identifier received from the slave browser module to determine that the user interaction event is registered;

determining, by the master browser module, responsive to determining that the user interaction event is registered, that the user interaction event indicates that a corresponding default action should not be executed;

transmitting, by the master browser module, a divergence indicator to the slave browser module, wherein the divergence indicator identifies a divergence in processing of the user interaction event between the master browser module and the slave browser module, wherein the divergence indicator causes the slave browser module to enter into a recovery mode, wherein the recover mode causes the slave browser module to wait for complete processing of the user interaction event corresponding to the divergence indicator, prior to requesting a list of corrective recovery actions from the master browser module;

receiving, by the master browser module, a second user interaction event from the slave browser module;

storing, by the master browser module, the second user interaction event on a tainted event list;

compiling, by the master browser module, a list of recovery actions using a state of an affected element of the intermediate model corresponding to the second user interaction event;

transmitting, by the master browser module, recovery actions to the slave browser module, wherein the recovery actions causes the slave browser module to apply to the client model to correct effects of not executing the default action; and

resuming, by the master browser module, normal operations.

12. The method of claim further comprising:

rendering, by the master browser module, the content using the intermediate model;

identifying, by the master browser module, an external resource element to be separately fetched, the external resource element including at least one of an image file, a video file, and an audio file;

transmitting, by the master browser module, a request to an external web server, wherein the request includes an authentication cookie set by an external domain in the master browser module;

receiving, by the master browser module, a resource request indicating that the slave browser module detects a failure to load the external resource element, wherein the resource request includes a uniform resource locator (URL) corresponding to the external resource element;

transmitting, by the master browser module, external data corresponding to the uniform resource locator to the slave browser module.

13. The method of claim 1 , further comprising:

executing, by the master browser module, a data leakage prevention policy by:

identifying an element type from the received content stored in the intermediate model; and

transmitting the one or more messages including a transient visual representation of the content to the slave browser module using the identified element type.

14. A system for providing access to content over a network using an intermediate system, comprising:

a master browser module executed on an intermediate server having circuitry configured to:

receive, from a slave browser module executed on a client device, a request for external content;

parse received content to construct an intermediate model specifying a representation of visual elements of the content;

transmit one or more messages of the intermediate model to the slave browser module, wherein the one or more messages cause the slave browser module to:

create a modified copy of the intermediate model as a client model;

render a presentation based on the client model;

monitor for a user interaction event with the content;

transmit, to the master browser module, an event identifier corresponding to the user interaction event, responsive to detecting the user interaction event;

identify, responsive to receiving the event identifier from the slave browser module, a security policy to apply according to the event identifier, the security policy specifying user interaction events allowed at the master browser module using the intermediate model; and

determine, responsive to applying the identified security policy, whether to execute the user interaction event corresponding to the event identifier at the master browser module.

15. The system of claim 14 , wherein the master browser module comprises:

an intermediate web browser configured to receive internet content and generate the intermediate model of the internet content and performs browser functions;

a master browser messaging module configured to exchange the one or more messages with the slave browser module using a message protocol with the slave browser module; and

wherein the master browser module is configured to:

monitor the intermediate model by reading a model state through application programming interface calls; and

execute the user interaction event received by the master browser module from the slave browser module by sending commands to the intermediate web browser via the application programming interface calls.

16. The system of claim 14 , wherein the slave browser module comprises:

a client web browser configured to receive communications from the master browser module;

a client web application provided by the master browser module or an authorized web application server;

wherein the client web application is configured to exchange the one or more messages with the master browser module to construct the client model from a mirror of the intermediate model and transmit the event identifier to the master browser module; and

wherein the client web browser is configured to render a page view using the client model.

17. The system of claim 14 , wherein the master browser module is further configured to rewrite one or more executable elements in the intermediate model, prior to transmitting the intermediate model to the slave browser module of the client device, by inserting one or more selectable links when selected at the client device configured to generate the event identifier transmitted to the master browser module to execute a specification action.

18. The system of claim 14 , wherein the master browser module is further configured to:

identify application programming interface calls of the intermediate model requiring access to local client data; and

transmit an access request to the client device, responsive to identifying that the application programming interface calls require access to the local client data.

19. The system of claim 14 , wherein the master browser module is further configured to:

render the content using the intermediate model;

identify an external resource element to be separately fetched, the external resource element including at least one of an image file, a video file, and an audio file;

transmit a request to an external web server, wherein the request includes an authentication cookie set by an external domain in the master browser module;

receive a resource request indicating that the slave browser module detects a failure to load the external resource element, wherein the resource request includes a uniform resource locator (URL) corresponding to the external resource element; and

transmit external data corresponding to the uniform resource locator to the slave browser module.

20. The system of claim 14 , wherein the master browser module is further configured to execute a data leakage prevention policy by:

identifying an element type from the received content stored in the intermediate model; and

transmitting the one or more messages including a transient visual representation of the content to the slave browser module using the identified element type.

Assignments (14)
TERMINATION AND RELEASE OF FIRST LIEN INTELLECTUAL PROPERTY SECURITY INTEREST RECORDED AT REEL/FRAME 58892/0766 Recorded Nov 24, 2025
From: JEFFERIES FINANCE LLC
To: DIGITAL GUARDIAN LLC
Reel/Frame 073783/0619 →
TERMINATION AND RELEASE OF SECOND LIEN INTELLECTUAL PROPERTY SECURITY INTEREST RECORDED AT REEL/FRAME 58892/0945 Recorded Nov 21, 2025
From: ACQUIOM AGENCY SERVICES LLC
To: DIGITAL GUARDIAN LLC
Reel/Frame 073663/0411 →
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Aug 14, 2025
From: GOLUB CAPITAL MARKETS LLC (AS EXISTING AGENT)
To: ACQUIOM AGENCY SERVICES LLC (AS SUCCESSOR COLLATERAL AGENT)
Reel/Frame 072471/0665 →
RELEASE OF SECURITY INTEREST Recorded May 3, 2022
From: GOLUB CAPITAL LLC
To: DIGITAL GUARDIAN LLC
Reel/Frame 059802/0303 →
SECOND LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 28, 2022
From: DIGITAL GUARDIAN, LLC
To: GOLUB CAPITAL MARKETS LLC, AS COLLATERAL AGENT
Reel/Frame 058892/0945 →
FIRST LIEN INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jan 28, 2022
From: DIGITAL GUARDIAN, LLC
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 058892/0766 →
SECOND AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Feb 2, 2021
From: DIGITAL GUARDIAN LLC
To: GOLUB CAPITAL LLC, AS ADMINISTRATIVE AGENT
Reel/Frame 055207/0012 →
AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded May 29, 2019
From: DIGITAL GUARDIAN LLC
To: GOLUB CAPITAL LLC, AS ADMINISTRATIVE AGENT
Reel/Frame 050305/0418 →
CHANGE OF NAME Recorded May 21, 2019
From: DIGITAL GUARDIAN, INC.
To: DIGITAL GUARDIAN LLC
Reel/Frame 049240/0514 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 23, 2018
From: DIGITAL GUARDIAN, INC.
To: GOLUB CAPITAL LLC, AS ADMINISTRATIVE AGENT
Reel/Frame 046419/0207 →
CHANGE OF NAME Recorded Apr 22, 2015
From: VERDASYS INC.
To: DIGITAL GUARDIAN, INC.
Reel/Frame 035479/0083 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2014
From: ARMOR5, INC.
To: VERDASYS, INC.
Reel/Frame 034428/0370 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NAME OF ASSIGNEE AND CORRESPONDENCE DATA PREVIOUSLY RECORDED AT REEL: 031389 FRAME: 0028. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Oct 28, 2014
From: SHERETOV, ANDREI; RAMAIAH, NAVEEN; BANOTH, PRAVEEN; AGRAWAL, SUNIL
To: ARMOR5, INC.
Reel/Frame 034067/0840 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2013
From: SHERETOV, ANDREI; RAMAIAH, NAVEEN; BANOTH, PRAVEEN; AGRAWAL, SUNIL
To: ARMOR5
Reel/Frame 031389/0028 →