US9270647B2 - Client/server security by an intermediary rendering modified in-memory objects - Google Patents
Client/server security by an intermediary rendering modified in-memory objects Download PDFInfo
- Publication number
- US9270647B2 US9270647B2 US14/099,437 US201314099437A US9270647B2 US 9270647 B2 US9270647 B2 US 9270647B2 US 201314099437 A US201314099437 A US 201314099437A US 9270647 B2 US9270647 B2 US 9270647B2
- Authority
- US
- United States
- Prior art keywords
- modified
- original
- instructions
- dom
- new
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related, expires
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 29
- 238000000034 method Methods 0.000 claims abstract description 65
- 230000004044 response Effects 0.000 claims abstract description 26
- 238000013507 mapping Methods 0.000 claims description 47
- 238000004891 communication Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 16
- 238000013500 data storage Methods 0.000 description 13
- NTJQREUGJKIARY-UHFFFAOYSA-N 1-(2,5-dimethoxy-4-methylphenyl)propan-2-amine Chemical compound COC1=CC(CC(C)N)=C(OC)C=C1C NTJQREUGJKIARY-UHFFFAOYSA-N 0.000 description 11
- 239000008186 active pharmaceutical agent Substances 0.000 description 10
- 238000012545 processing Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000003672 processing method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013497 data interchange Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
-
- H04L29/06972—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0281—Proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/16—Implementing security features at a particular protocol layer
- H04L63/168—Implementing security features at a particular protocol layer above the transport layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H04L67/42—
Definitions
- the present disclosure generally relates security techniques applicable to client/server systems, and relates more specifically to techniques for improving the security of web applications and data sent and/or received between web servers hosting the web applications and browser programs and/or components of browsers.
- Computer fraud performed by obtaining information in non-secure communications transmissions between browser programs and server computers is big business for fraudsters. Fraud can be perpetrated by obtaining financial or personally identifying information that end users provide while using a browser to communicate with an application server computer.
- a user's computer can be provided with malicious code that collects data from legitimate communications, such as communications with the user's bank. After the communications have been decrypted, for example, by a web browser on the user's computer, the malicious code may gather data that is displayed in particular fields or sections in the decrypted web page and provide the data to a malicious user or computer.
- Malicious code may also gather data that is entered by a user before the user's data is encrypted and sent to the intended recipient. For example, a user may enter account information into a web browser that is displaying a web page from the user's bank. The web page may be a login page to access the user's account information and funds. The malicious code may scan particular fields in the web page for the user's account information before the user's account information is encrypted and sent to the user's bank, and then send data obtained from those fields to a malicious user or computer. Web browsers were first developed and deployed in the early 1990's, and thus there has been a need to improve browser security, web server security, web-based application security, and data security at and/or between end points.
- FIG. 1 illustrates functional units of a web browser, in an example embodiment.
- FIG. 2 illustrates a computer system comprising a server security and re-rendering system, in an example embodiment.
- FIG. 3 illustrates an intermediary computer and a web infrastructure in an example embodiment.
- FIG. 4 illustrates objects and operations stored in memory by a browser backend, or headless browser, in an example embodiment.
- FIG. 5 illustrates a process for intercepting instructions for a server computer, rendering new instructions, and sending the new instructions to the intended client, in an example embodiment.
- FIG. 6 illustrates a process for storing and refreshing rendered instructions in response receiving the same original instructions from a web server, in an example embodiment.
- FIG. 7 illustrates a process for intercepting and modifying a request based on one or more stored attribute maps and/or DOM maps, in an example embodiment.
- FIG. 8 illustrates a process for intercepting instructions and requests between a HyperText Transfer Protocol (“HTTP”) server and an HTTP-based web browser over HTTP, in an example embodiment.
- HTTP HyperText Transfer Protocol
- FIG. 9 illustrates a computer system upon which an embodiment may be implemented.
- a “computer” may be one or more physical computers, virtual computers, and/or computing devices.
- a computer may be one or more server computers, cloud-based computers, cloud-based cluster of computers, virtual machine instances or virtual machine computing elements such as virtual processors, storage and memory, data centers, storage devices, desktop computers, laptop computers, mobile devices, and/or any other special-purpose computing devices. Any reference to “a computer” herein may mean one or more computers, unless expressly stated otherwise.
- An “object” may be a data structure that can be identified by an identifier and/or a relationship with another object.
- an object may have a unique identifier that is a string, such as a document, customer number, or username. Accordingly, the object may be referenced and/or retrieved using the identifier. Also for example, if a particular object is the first child object of a parent object, then the particular object may be referenced and/or retrieved using a pointer to the parent object and then retrieving a pointer to the first child object.
- a method of referencing objects by identifier and/or relationships is called XPath.
- An object may be a particular type of object. For example, one object may be a button, another object may be an input, or specifically a text field, and another object may be an image.
- An “attribute” may be data that identifies and/or describes the appearance, behavior, and/or content of an object.
- an attribute may be a unique identifier, such as a name.
- An attribute may indicate that an object is a type of input, such as a text field, text area, checkbox, and/or radio button.
- An attribute may indicate that an object is a password text field; accordingly, a client application rendering the text field object on a monitor need not cause the characters that are entered into the field object to be displayed.
- An attribute associated with the text field object may be updated to include the value entered in the text field.
- Other attributes may define or describe dimension, position, color, visibility, value, and any other functional or visual aspect of an object.
- a “document object model” (“DOM”) may be a cross-platform and language-independent representation of one or more objects that are interrelated.
- DOM may represent one or more objects in an object tree and/or hierarchy.
- An object within the hierarchy may be a parent object, which has one or more child objects.
- a child object may also have one or more child objects.
- Creating, updating, and/or removing an object may mean creating, updating, and/or removing a data structure in memory that represents an object, an object's attributes, and/or relationships between an object and one or more other objects; because these processes directly or indirectly involve changing the state of registers or other structures in electronic digital memory circuits, the processes necessarily involve using a computer to transform the state of tangible things.
- An “operation” may be any function, method, script, and/or any other code, which when executed operates on an object.
- “Operating on an object” may mean creating, removing, and/or updating an object. Additionally, “operating on an object” may mean performing one or more operations that use an object, attribute, and/or relationship between an object and one or more other objects as input.
- Instructions may mean one or more codes that define one or more objects and/or one or more operations.
- instructions may comprise HyperText Markup Language (“HTML”), eXtensible Markup Language (“XML”), cascading style sheets (“CSS”), JavaScript, and/or any other standard or proprietary languages or codes that define objects, attributes, relationships between objects, and/or operations.
- HTML HyperText Markup Language
- XML eXtensible Markup Language
- CSS cascading style sheets
- JavaScript eXtensible Markup Language
- Performing instructions” or “executing instructions” may mean creating one or more objects and/or performing one or more operations defined by the instructions.
- “Rendering instructions” may mean generating one or more instructions based on objects and/or operations stored in memory, such that when the generated one or more instructions are executed the same objects and/or same operations are created in memory.
- a first object may be the “same” as a second object if the first object maintains the same one or more values, attributes, and/or relationships as the second object.
- the underlying representation of the first object in memory need not be the same as the underlying representation of the second object in memory.
- a first program is allocated a first memory segment; a second program is allocated a second segment; the first program maintains a first object in the first memory segment; the second program maintains a second object in the second memory segment; the first object comprises a value: six; the second object comprises a value: six.
- the first object and the second object may be the same object because the first object maintains the same value as the second object, even though the first object and the second object are located in different memory segments.
- the first object and the second object may be the same object because the first object maintains the same value as the second object, even though the underlying representation of the value in the first memory segment is stored differently than the representation of the value in the second memory segment.
- ASCII American Standard Code for Information Interchange
- the first program is running on a first computer that comprises a 32-bit processor and addresses memory using 32-bit addresses
- the second program is running on a second computer that comprises a 64-bit processor and addresses memory using 64-bit addresses
- the first object is a parent object and comprises a pointer to a child object stored in the first memory segment
- the second object is a parent object and comprises a pointer to a child object stored in the second memory segment.
- the first object and the second object may be the same object because the first object maintains the same values and relationships as the second object, even though the pointer to the child stored in the first memory segment may be a 32-bit pointer and the pointer in the second memory segment may be a 64-bit pointer.
- the first program stores the data that represents the first object contiguously in the first memory segment and the second program stores the data that represents the second object scattered throughout the second memory segment, then the first object and the second object may be the same object, even though the underlying data structure that represents the first object is stored differently than the underlying data structure that represents the second object.
- the first program is a first HTTP browser; the second program is a second, different HTTP browser; the first object may have an attribute, “id”; the second object may have an attribute, “id”; the value for the “id” attribute is “MyObject” for both the first object and the second object is.
- the underlying representation of the first object in the first browser may be drastically different than the underlying representation of the second object in the second browser.
- the operations that operate on the two objects may be programmatically identical. For example, the same JavaScript executed by the first HTTP browser and the second HTTP browser may retrieve the first object maintained by the first HTTP browser and the second object, respectively: document.getElementById(“MyObject”).
- Data may mean any data and/or instructions in electronic digital memory.
- An “attribute map” may be a map from one attribute name and/or value to one or more other names and/or values. For example, assume an object has an attribute, “id”, which defines a unique identifier: “MyObject”. An attribute map may associate “MyObject” with a different unique identifier, such as “tcejbOyM”. Additionally, an attribute map may be used to map a modified attribute name and/or value to an original name and/or value. An attribute map may be an operation, hash map, and/or any other method or associative data structure.
- a “DOM map” may be a map from a first DOM to a second, different DOM.
- a DOM map may be a collection of attribute maps.
- Each attribute map in the DOM map may be an attribute map for an attribute of an object in a first DOM with a modified attribute in a second DOM.
- a DOM map may map one hierarchy to another, different hierarchy, and back again.
- a DOM map may modify a relationship between a first object and a second object, such that a first object is not related to a second object in a first DOM, and the first object is a parent object to the second object in the second DOM.
- a “browser” may be one or more computer programs or other software elements stored in electronic digital memory and running on a computer that receives instructions from a server computer, performs one or more of the received instructions, causes to display content, provides a user interface (“UI”) to receive user inputs, and/or receives and responds to one or more inputs from a user based on or according to the one or more performed instructions.
- a browser and/or components of a browser may be implemented into an application. For example, a browser and/or components of a browser may be implemented into a mobile application as part of a web view, and/or web view controller, to send and/or receive data over HTTP and/or other protocol.
- a user may use a browser to send data to a server computer.
- the server computer may respond with additional instructions.
- a “headless browser” may be a browser that does not cause visually displaying or rendering graphical images of objects that are defined in a set of received instructions according to the received set of instructions. Additionally or alternatively, a “headless browser” may be a browser that does not respond to user inputs according to a set of received instructions.
- Send and/or receiving data over HTTP may mean sending and/or receiving data and/or instructions using HyperText Transfer Protocol. Additionally or alternatively, “sending and/or receiving data over HTTP” may mean sending and/or receiving data and/or instructions using a subset of the HTTP, such as secure HTTP (HTTPS). Additionally or alternatively, one or more other protocols may be used, such as SPDY.
- HTTPS secure HTTP
- SPDY one or more other protocols
- a “web browser” may be a browser that receives instructions comprising HTML, CSS, and/or JavaScript over HTTP or some derivative thereof, such as HTTPS.
- a “bot” may mean a computer and/or software executed by a computer that automates sending and/or receiving data.
- a bot may be a web scraper, web crawler, automatic web browser, and/or any other tool designed to submit and/or receive data from one or more web servers.
- a bot may comprise complex logic designed to respond to data received from one or more web servers.
- performing one or more of the methods discussed herein may prevent, and/or reduce the effectiveness of, one or more various attacks, such as a denial of service (“DOS”) attack, credential stuffing, fake account creation, ratings or results manipulation, man in the browser attacks, reserving rival goods or services, scanning for vulnerabilities, and/or exploitation of vulnerabilities.
- DOS denial of service
- an intermediary computer intercepts an improper request from a visitor browser, such as a request that does not include one or more identifiers that match one or more attribute map identifiers, DOM map identifiers, and/or transaction identifiers, then the intermediary computer need not reverse translate and/or forward the improper request on to the targeted web server computer.
- the targeted web server computer, or an application running on the targeted web server computer need not be burdened with processing improper and/or malicious requests that are part of an attack.
- the particular identifier may no longer be valid. Accordingly, if the same visitor browser and/or a different visitor browser uses the same particular identifier in an additional request, the intermediary computer need not reverse translate and/or forward the improper request to the targeted web server computer. Thus, the targeted web server computer, or an application running on the targeted web server computer, need not be affected by one or more attacks, such as a DOS attack and/or cross-site request forgery.
- each time a web page is requested such as an account creation page, order page, voting page, and/or other page from a web server computer, the intermediary computer may modify the identifiers in the returned page.
- a bot may receive a different set of instructions after each request and may not observe the same one or more field identifiers twice. Without receiving the same one or more identifiers, the bot may be incapable of determining what data should be entered in and/or associated with each field to create a fake account, order and/or reserve one or more goods or services, vote, inject malicious SQL, and/or submit any other malicious content.
- the DOM hierarchy, a portion of the DOM hierarchy, and/or one or more particular identifiers are modified each time a web page is requested.
- a container that stores the definition of a word or phrase may, in the originally intercepted instructions, be in a particular spot in the DOM hierarchy and/or include a particular identifier: “definition”.
- the intermediary computer may manipulate the DOM hierarchy and/or identifier each time the page or a similar page is served.
- a bot may not be able to determine which container holds the target content.
- an automated vulnerability bot may not be able to determine whether target content was inserted and/or changed. For example, if a bot submits content designed to employ SQL, HTML, JavaScript, and/or any other code injection, the bot may not be able to determine which container is supposed to contain content generated by a successful attack.
- a bot such as a website scraper may be whitelisted. If the bot includes a particular password or other code, then the intermediary computer may send the original instructions and/or a portion of the original instructions to the bot. Thus, the intermediary computer may allow the authorized bot to perform an automated task on an entire page and/or a portion of the page. Otherwise, the intermediary computer may use one or more of the methods discussed herein.
- 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 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.
- the method comprises generating a data structure, for each object of the one or more objects, wherein the data structure corresponds to the object and includes the original identifier included in the object; updating the original identifier included in the data structure for each object to produce a modified identifier and a modified data structure of the one or more updated data structures.
- the method comprises storing a mapping between the modified identifier and the original identifier for each object; intercepting, from the remote client computer, a request that includes one or more modified identifiers; determining the original identifier for each modified identifier included in the request; replacing each modified identifier in the request with the original identifier to produce a modified request; sending the modified request to the server computer.
- a method comprises intercepting, from a 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 DOM and one or more operations that are based, at least in part, on the one or more objects in the original DOM; generating one or more data structures that correspond with the one or more objects in the original DOM; processing the set of original CSS codes and the set of original JavaScript codes on the one or more data structures; updating the one or more data structures, in response to processing the set of original CSS codes and the set of original JavaScript codes, 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 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; 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
- FIG. 1 illustrates functional units of a web browser, in an example embodiment.
- FIG. 2 illustrates a system comprising a server security and a re-rendering system, in an example embodiment.
- system 200 includes web infrastructure 205 , visitor computer 299 , intermediary computer 230 , and data storage 240 , distributed across a plurality of interconnected networks. While each of the components listed above are illustrated as if running on a separate, remote computer from each other, one or more of the components listed above may be part of and/or executed on the same computer. For example, HTTP intermediary computer 230 , data storage 240 , and/or web infrastructure 205 may be executed on the same computer, local area, and/or wide area network.
- intermediary computer 230 is a proxy server for web infrastructure 205 . Additionally or alternatively, intermediary computer 230 may be in line between a router and web infrastructure 205 , such that all network data sent to, and/or sent from, web infrastructure 205 over one or more protocols may be intercepted by intermediary computer 230 .
- Visitor browser 295 may be a browser that is executed on visitor computer 299 and operated by a user using visitor computer 299 .
- visitor browser 295 may be a web browser.
- FIG. 1 illustrates a more detailed view of a web browser, in an example embodiment.
- “visitor” refers to any user who is using the computer 299 to contact, communicate with or otherwise conceptually visit the web infrastructure 205 .
- visitor browser 295 may be described with reference to browser 100 in FIG. 1 , but using the particular arrangement illustrated in FIG. 1 is not required in other embodiments.
- browser 100 includes browser backend 101 , browser frontend 120 , operating system (“OS”) system application programming interface (“API”) layer 150 , and OS frontend API layer 160 .
- OS operating system
- API application programming interface
- Browser frontend 120 comprises rendering engine 122 , interactivity module 124 , and user interface 126 .
- Each of the components may cause, through OS frontend API layer 160 , one or more objects to be presented and/or updated visually and/or audibly to a user using visitor computer 299 .
- Rendering engine 122 may determine how objects are presented to a user. For example, rendering engine 122 may determine the color, shape, orientation, position, and/or any other visual and/or audio attribute of an image, text field, button, and/or any other object defined by a set of received instructions. Furthermore, rendering engine 122 may cause a button to be displayed on a monitor coupled to visitor computer 299 through OS frontend API layer 160 .
- User interface 126 may determine what may be presented to a user. For example, user interface 126 may determine that a “submit” button should be hidden until data has been entered in one or more text fields. After data has been entered in the one or more text fields, user interface 126 may notify rendering engine 122 to render the “submit” button accordingly.
- Interactivity module 124 may receive one or more inputs through OS Frontend API layer 160 . For example, in response to a user pressing a button on a mouse coupled to visitor computer 299 , the operating system running on visitor computer 299 may send a message to interactivity module 124 , through OS frontend API layer 160 , to indicate that a user pressed a button on a mouse. Interactivity module 124 may determine that a user selected a particular button currently presented on a monitor. Interactively module 124 may notify user interface 126 and/or rendering engine 122 to update to update the UI accordingly.
- Browser backend 101 comprises protocol module 102 , domain name server (“DNS”) module 104 , local storage module 106 , image parser 108 , CSS parser 110 , HTML parser 112 , JavaScript parser 114 , extension execution environment 116 , document object model (“DOM”) module 118 , and JavaScript execution environment 119 .
- DNS domain name server
- a browser that includes a browser backend, but does not include a browser frontend, may be a headless browser.
- Protocol module 102 , DNS module 104 , and local storage module 106 may send and/or receive data through OS System API layer 150 .
- protocol module 102 may send and/or receive data over any protocol, such as HTTP, to/from intermediary computer 230 and/or web infrastructure 205 through OS system API layer 150 .
- Data received through protocol module 102 may reference data sources by one or more domain names.
- DNS module 104 may resolve the one or more domain names referenced by interfacing with one or more remote domain name servers through OS system API layer 150 .
- Local storage module may store and/or recall data from memory through OS system API layer 150 .
- Image parser 108 may parse data received through protocol module 102 .
- HTML parser 112 may parse HTML data.
- CSS parser 110 may parse CSS data.
- JavaScript parser 114 may parse JavaScript data.
- Image parser 108 may parse image data. Each parser may generate and/or update objects in a DOM maintained by DOM module 118 .
- Browser backend 101 may comprise one or more programmable engines, such as extension execution environment 116 and JavaScript execution environment 119 . Extensions may be written one or more programming languages include JavaScript, Python, Ruby, and/or any other language. Each programmable engine may have access to DOM module 118 and may operate on one or more objects from a DOM maintained by DOM module 118 . For example, JavaScript execution environment 119 may execute JavaScript parsed by JavaScript parser 114 and in response, create, update, and/or delete one or more objects managed by DOM module 118 .
- web infrastructure 205 may be one or more server computers that receive requests for data from users, such as a user using visitor browser 295 , through intermediary computer 230 . In response, web infrastructure 205 may send data to visitor browser 295 , through intermediary computer 230 . As illustrated in FIG. 2 the data sent from web infrastructure 205 may include instructions: HTML, JavaScript, and CSS 210 .
- FIG. 3 illustrates a web infrastructure in an example embodiment.
- the web infrastructure 205 may be described with reference to original web server computer 302 and third party web server computers 306 in FIG. 3 , but using the particular arrangement illustrated in FIG. 3 is not required in other embodiments.
- Original web server computer 302 may be a server computer that receives requests for data and responds with data.
- original web server computer 302 may be an HTTP-based web server that receives HTTP requests and responds with data comprising HTML, CSS, and/or JavaScript instructions. Additionally or alternatively, original web server computer 302 may respond with data that references data on other server computers, such as third party web server computers 306 .
- Third party web server computers 306 may be one or more server computers that store additional data referenced by instructions sent from original web server computer 302 .
- data from original web server computer 302 may include a reference to a JavaScript file stored on third party web server computers 306 .
- a browser backend such as a browser backend 101
- data from original web server computer 302 may include a reference to an image stored on third party web server computers 306 .
- a browser backend such as browser backend 101 , may request the referenced image from third party web server computers 306 .
- intermediary computer 230 may intercept instructions sent from web infrastructure 205 , generate new instructions, and send the new instructions to visitor browser 295 .
- intermediary computer 230 may intercept HTML, JavaScript, and CSS 210 , generate HTML, JavaScript, and CSS 290 (which may be different than HTML, JavaScript, and CSS 210 ), and send HTML, JavaScript, and CSS 290 to visitor browser 295 .
- intermediary computer 230 may intercept a request from visitor browser 295 , generate a new, modified request, and send the new, modified request to web infrastructure 205 .
- intermediary computer 230 may be an HTTP intermediary that intercepts and modifies HTML, JavaScript, CSS, and HTTP requests for HTTP web browsers.
- intermediary computer 230 may be an intermediary for any other standard and/or proprietary protocol.
- each of the components discussed, which intermediary computer 230 is comprised of may be configured to perform any of the processes and/or methods discussed herein for any standard and/or proprietary protocol.
- Intermediary computer 230 may be a server computer that is located on the same network as web infrastructure 205 . Additionally or alternatively, intermediary computer 230 may be topologically located between a public-facing router and web infrastructure 205 . Accordingly, requests from visitor browser 295 to web infrastructure 205 may be passed through and/or modified by intermediary computer 230 . Furthermore, instructions from web infrastructure 205 to visitor browser 295 may be passed through and/or modified by intermediary computer 230 . Additionally or alternatively, intermediary computer 230 may be a proxy server and/or router. Additionally or alternatively, intermediary computer 230 and/or components of intermediary computer 230 may be a software layer, executed on one or more computers in web infrastructure 205 .
- intermediary computer 230 may be a server computer that one or more domain name servers list as a destination IP address. Accordingly, intermediary computer 230 may receive requests sent to the one or more domains from visitor browser 295 . Based on the domain name in a request, intermediary computer 230 may forward the request, or a modified request, to a server computer in web infrastructure 205 , such as original web server computer 302 .
- FIG. 3 illustrates, among other things, a more detailed view of intermediary computer 230 , in an example embodiment.
- the intermediary computer 230 may be described with reference to several components illustrated in FIG. 3 and discussed in detail below, but using the particular arrangement illustrated in FIG. 3 is not required in other embodiments.
- intermediary computer 230 may comprise protocol client 332 , browser backend 334 , forward translator 336 , protocol handler 338 , transaction store 340 , and reverse translator 342 .
- each of the functional units of intermediary computer 230 may be implemented using any of the techniques further described herein in connection with FIG.
- the intermediary computer may comprise a general-purpose computer configured with one or more stored programs which when executed cause performing the functions described herein for the intermediary computer, or a special-purpose computer with digital logic that is configured to execute the functions, or digital logic that is used in other computing devices.
- Protocol client 332 may intercept data over any standard or proprietary protocol. For example, protocol client 332 may intercept data over HTTP. Accordingly, protocol client 332 may be communicatively coupled with web infrastructure 205 , original web server computer 302 , and third party web server computers 306 .
- Browser backend 334 may be an HTTP-based headless browser similar to browser backend 101 . Additionally or alternatively, browser backend 334 may be a headless browser based on one or more other standard and/or proprietary protocols.
- Browser backend 334 may perform instructions intercepted by protocol client 332 . After performing the instructions, browser backend 334 may notify forward translator 336 to begin rendering instructions based on the objects created by browser backend 334 that are currently in memory. Accordingly, browser backend 334 and forward translator 336 may be communicatively coupled.
- Browser backend 334 may make requests for additional data. For example, if instructions received from Protocol client 332 reference additional instructions stored on a third party web server, browser backend 334 may request the additional instructions through protocol client 332 . Accordingly, browser backend 334 and protocol client 332 are communicatively coupled.
- Forward translator 336 may operate on the objects created by browser backend 334 and generate one or more attribute maps and/or DOM maps. Additionally or alternatively, forward translator 336 may render a new set of instructions based on the one or more objects and/or operations in memory. Forward translator 336 may operate on objects and/or render instructions based on one or more configurations specified in configuration 232 . Accordingly, forward translator 336 may be communicatively coupled to configuration 232 . Forward translator 336 may send the rendered instructions to protocol handler 338 . Accordingly, forward translator 336 may be communicatively coupled to protocol handler 338 .
- Protocol handler 338 may receive the instructions generated by forward translator 336 and send the generated instructions to visitor browser 195 . Additionally or alternatively, protocol handler 338 may intercept requests from visitor browser 195 and forward the requests to transaction store 340 . Accordingly, protocol handler 338 may be communicatively coupled to visitor browser 195 , forward translator 336 , and transaction store 340 .
- Transaction store 340 may receive requests intercepted by protocol handler 338 from visitor browser 295 .
- Transaction store 340 may retrieve one or more attribute maps and/or DOM maps, based on data in the request, and forward the request with the retrieved one or more attribute maps and/or DOM maps to reverse translator 342 . Accordingly, transaction store 340 may be communicatively coupled with reverse translator 342 .
- Reverse translator 342 may translate requests intercepted by protocol handler 338 , which are based on instructions generated by forward translator 336 , into requests that would have been generated by visitor browser 195 had visitor browser 195 received the original instructions sent from original web server computer 302 .
- Reverse translator 342 may translate requests based on the one or more attribute maps and/or DOM maps retrieved by transaction store 340 .
- Reverse translator 342 may send the translated request to original web server computer 302 through protocol client 332 . Accordingly, reverse translator 342 may be communicatively coupled with protocol client 332 .
- a data processing method may be configured to intercept instructions from a server computer and generate new, different instructions based on the intercepted instructions.
- a data processing method may be configured for caching new instructions, intercepting client requests to a server computer, translating the request to produce a new request, and/or sending the new request to a server computer.
- HTTP and/or specialized web-based instructions such as HTML, CSS, and/or JavaScript, and/or standard and/or proprietary protocol(s) and/or instructions.
- FIG. 5 illustrates a process for intercepting instructions for a server computer, rendering new instructions, and sending the new instructions to the intended client, in an example embodiment.
- FIG. 5 may be described with reference to FIG. 3 and FIG. 4 , but using the particular arrangements illustrated in FIG. 3 or FIG. 4 are not required in other embodiments.
- an intermediary computer intercepts a first set of instructions from a remote server computer.
- protocol client 332 may receive instructions from original web server computer 302 , in response to a request from visitor browser 295 .
- the instructions may comprise HTML, CSS, and/or JavaScript.
- the intermediary computer generates one or more objects in memory based on the instructions.
- protocol client 332 may send the HTML, CSS, and/or JavaScript to browser backend 334 .
- Browser backend 334 may generate a DOM in memory containing objects defined in the instructions.
- FIG. 4 illustrates objects and operations stored in memory by browser backend 334 , in an example embodiment.
- HTML parser 412 may parse the HTML received by browser backend 334 .
- DOM module 418 may create DOM 450 and objects in DOM 450 : object 452 and object 454 .
- DOM module 418 may define object 452 to be the parent object of object 454 in DOM 450 .
- one or more objects in DOM 450 may comprise one or more attributes based on the parsed HTML.
- the intermediary computer performs one or more instructions which operate on the objects.
- object 452 comprises an attribute that is a unique identifier.
- one or more CSS instructions identify object 452 by its unique identifier and define one or more attributes to assign to, and/or associate with, object 452 .
- CSS parser 410 may parse the CSS received by browser backend 334 .
- DOM module 418 may create and/or update other property information 430 to include the one or more attributes defined in the CSS instructions.
- DOM module 418 may associate other property information 430 , and/or one or more attributes in other property information 430 , to object 452 .
- the JavaScript instructions define one or more operations, which when performed operate on one or more objects defined in the HTML instructions.
- One or more JavaScript instructions may indicate that the one or more operations may be performed after the objects defined in the HTML instructions are loaded in memory and/or after the CSS instructions have been performed without additional user input.
- the JavaScript parser 414 may parse the JavaScript received by browser backend 334 .
- JavaScript execution environment 419 may execute the one or more operations, which operate on the one or more the objects, one or more attributes of objects, and/or relationships between the objects in DOM 450 .
- Instructions performed after the objects defined in the HTML instructions are loaded in memory may drastically change the DOM and/or the objects in the DOM.
- one or more JavaScript operations may change object 452 to a different type of object.
- one or more JavaScript operations may create, update, and/or delete object 452 .
- one or more JavaScript operations may create, update, and/or delete data included and/or associated with object 452 .
- one or more JavaScript operations may create, update, and/or remove associations between objects.
- one or more JavaScript operations may associate object 452 with object 454 , such that object 452 may become a parent object of object 454 , as illustrated by the dashed line between object 452 and object 454 .
- the intermediary computer associates one or more operations with one or more objects.
- the JavaScript instructions may define an operation, which when performed, operate on one or more objects defined in DOM 450 ; the operation references object 454 by an identifier; object 454 is the second child of object 452 ; object 454 is a particular type of object, which is different than the other objects that are children objects of object 452 ; and one or more JavaScript instructions indicate that the operation may be performed upon some event, such as a user selecting button and/or entering an input.
- JavaScript parser 414 may parse the JavaScript received by browser backend 334 , which defines the operation. JavaScript parser 414 , DOM module 418 , and/or JavaScript execution environment 419 may generate JavaScript engine state info 440 included in in-memory data structures 400 . JavaScript parser 414 , DOM module 418 , and/or JavaScript execution environment 419 may generate a representation of the operation that references object 454 in JavaScript engine state info 440 . The representation of the operation in JavaScript engine state info 440 may include a cross reference to an identifier for object 454 .
- the representation of the operation in JavaScript engine state info 440 may include a cross reference to an identifier for object 454 based on the topology of object 454 in DOM 450 : second child of object 452 and/or first child of object 452 that is the particular type, which is a different type than the type(s) of other child objects of object 452 .
- JavaScript engine state info 440 may include one or more other operations and/or representations of one or more other operations.
- the intermediary computer modifies one or more operations associated with the modified objects.
- forward translator 336 may update the references in JavaScript engine state info 440 to use the new identifiers from step 550 .
- the intermediary computer renders a second set of instructions based on the current state of the objects and operations.
- the originally received instructions need not be HTML, CSS, and/or JavaScript instructions.
- the rendered instructions need not be HTML, CSS, and/or JavaScript instructions.
- the originally received instructions in step 510 comprise HTML, CSS, and JavaScript instructions.
- forward translator 336 is configured to generate HTML, CSS, and/or JavaScript instructions.
- the forward translator 336 may render instructions, which when executed, generate the same objects and/or operations as currently existing in in-memory data structures 400 .
- the rendered instructions may comprise different HTML, CSS, and/or JavaScript codes that the originally receive HTML, CSS, and JavaScript instructions.
- the rendered instructions may use different identifiers for the objects defined in the rendered instructions than the original instructions.
- the original instructions may comprise HTML, CSS, and/or JavaScript instructions and the rendered instructions may have one or more of the object attributes originally defined in the CSS instructions integrated into the HTML instructions and/or the JavaScript instructions.
- the rendered instructions may comprise HTML and JavaScript instructions, but not CSS instructions.
- the new, rendered HTML and JavaScript instructions when executed, may generate objects and/or operations that are the same as the objects and/or operations in in-memory data structures 400 when the new HTML and JavaScript instructions were rendered.
- the rendered instructions may comprise HTML and/or CSS instruction that define fewer objects than defined in in-memory data structures 400 .
- the rendered JavaScript instructions may define operations, which when executed generate objects that were not defined in the rendered HTML and/or CSS instructions. Therefore, the new, rendered HTML, CSS, and JavaScript instructions, when executed, may generate objects and/or operations that are the same as the objects and/or operations in in-memory data structures 400 when the new instructions were rendered.
- the rendered instructions may comprise one or more HTML documents, which comprise the original CSS instructions and/or JavaScript instructions embedded into the one or more HTML documents. Accordingly, the new, rendered HTML instructions, when executed, may generate objects and/or operations as currently existing in in-memory data structures 400 when the new HTML instructions were rendered.
- the rendered CSS and/or JavaScript instructions may reference objects by XPath commands instead of by one or more unique identifiers, or vice versa.
- XPath commands may be used to identify objects in a DOM and/or hierarchy by the topology of the DOM and/or hierarchy.
- the new, rendered HTML, CSS, and JavaScript instructions when executed, may generate objects and/or operations that are the same as the objects and/or operations in in-memory data structures 400 when the new instructions were rendered.
- the rendered HTML instructions may define objects in in-memory data structures 400 , but without one or more attributes.
- the rendered CSS instructions and/or JavaScript instructions may define operations, which when executed, update the objects to include the missing attributes. Accordingly, the new, rendered HTML, CSS, and JavaScript instructions, when executed, may generate objects and/or operations that are the same as the objects and/or operations in in-memory data structures 400 when the new instructions were rendered.
- the rendered HTML instructions may define the objects in in-memory data structures 400 , but in a different hierarchy, such as the relationship between object 452 and object 454 is not defined.
- the rendered JavaScript instructions may define operations, which when executed may update and/or re-organize the relationships between the objects such that object 452 is the parent object of object 454 .
- the rendered instructions may reference the IP address and/or domain name of intermediary computer 230 .
- a link defined in the original instructions may include the IP address of original web server computer 302 .
- forward translator may replace the IP address of original web server computer 302 , with the address of intermediary computer 230 . If a user selects the link through a user interface (for example through visitor browser 195 ), then a request may be sent to the IP address of intermediary computer 230 instead of the IP address of original web server computer 302 .
- Forward translator 336 may use configuration 232 to determine which method(s) to use to perform step 560 and/or step 570 . Accordingly, one or more of the methods discussed herein, alone or in combination, may be a polymorphic protocol defined in configuration 232 . Additionally or alternatively, configuration 232 may define which objects and/or types of objects may be modified based on one or more of the methods discussed herein. Additionally or alternatively, configuration 232 may define which objects and/or or types of objects need not be modified based on one or more of the methods discussed herein. Configuration 232 may be a database, a configuration file, and/or any other method of storing preferences. Configuration 232 may store more than one configuration for one or more web servers in web infrastructure 205 .
- Intermediary computer 230 may select a configuration in configuration 232 based on any number of factors. For example, intermediary computer 230 may select a configuration in configuration 232 based on a domain associated with the server computer that the instructions were intercepted from. Additionally or alternatively, intermediary computer 230 may select a configuration in configuration 232 based on a random variable seeded by time. Additionally or alternatively, intermediary computer 230 may select a configuration in configuration 232 based on attributes and/or properties of visitor browser 295 . For example, intermediary computer 230 may select a configuration based on what types of instructions visitor browser 295 is capable of interpreting and/or processing.
- the intermediary computer sends the rendered, second set of instructions to the remote client computer.
- forward translator 336 sends the rendered instructions to protocol handler 338 .
- Protocol handler 338 sends the rendered instructions to visitor browser 295 , which was the originally intended recipient of the data intercepted in step 510 .
- Intermediary computer 230 may render different instructions each time it receives instructions from web infrastructure 205 and/or original web server computer 302 , regardless of whether the intercepted instructions are the same as a previous set of instructions. However, rendering instructions may be processor and/or memory intensive and take a substantial amount of time. Accordingly, intermediary computer 230 may cache instructions rendered by intermediary computer 230 in data storage 240 . In response to receiving the same instructions from web infrastructure 205 and/or original web server computer 302 , intermediary computer 230 may send the rendered instructions already cached in data storage 240 , instead of re-rendering the intercepted instructions. While intermediary computer 230 may reduce its processing load by sending cached, rendered instructions, bots may be updated based on the cached, rendered instructions. Accordingly, intermediary computer 230 may refresh the cached instructions periodically and/or in response to one or more conditions.
- FIG. 6 illustrates a process for storing and refreshing rendered instructions in response receiving the same original instructions from a web server, in an example embodiment.
- FIG. 6 may be described with reference to FIG. 2 and FIG. 3 , but using the particular arrangements illustrated in FIG. 2 and/or FIG. 3 is not required in other embodiments.
- the intermediary computer may store the set of instructions. Additionally, the intermediary computer may store a timestamp. For example, forward translator 336 may store a set of rendered instructions and a timestamp in data storage 240 . Additionally, intermediary computer 230 , or a component of therein, may store a key associated with the stored, rendered set of instructions. The key may be based on the original set of instructions received. For example, the key may be based on a hashing algorithm using the original set of instructions as a parameter. Also for example, the original set of instructions may include the key.
- the intermediary computer intercepts a set of instructions from the server computer and determines that the cached, rendered set of instructions is based on the newly intercepted instructions. For example, browser backend 334 may generate a new key based on the newly intercepted instruction. Browser backend 334 may search the stored keys for a matching key. For purposes of illustrating a clear example, assume that browser backend 334 finds a matching key stored from step 610 .
- the intermediary computer determines whether one or more conditions trigger a new set of instructions to be rendered. For example, the intermediary computer may determine that the time elapsed since the rendered instructions were stored is greater than a threshold amount. Browser backend 334 may compare a current timestamp, to the timestamp stored in data storage 240 in step 610 . In response to determining that the elapsed time is greater than a threshold, control proceeds to step 640 ; otherwise, control proceeds to step 650 . Additionally or alternatively, the intermediary computer may determine that a particular subset of the intercepted instructions changed. In response to determining that the particular subset of the instructions has changed, control may proceed to step 640 ; otherwise, control may proceed to step 650 . The conditions under which intermediary computer 230 may render a new, different set of instructions may be stored in configuration 232 .
- step 640 the intermediary computer generates a new set of instructions that is different than the set of instructions previously stored.
- browser backend 334 and/or forward translator 336 performs step 520 through step 580 and renders a new, different set of instructions. Control then returns to step 610 .
- forward translator 336 may store the new set of rendered instructions and a current timestamp in data storage 240 . Browser backend 334 and/or forward translator 336 may associate the stored key with the new stored set of rendered instructions. Forward translator 336 may, but need not, generate a new key.
- the intermediary computer recalls and sends the stored set of instructions to the intended client computer.
- browser backend 334 may instruct forward translator 336 to send the previously stored set of rendered instructions to the intended client computer: visitor browser 295 .
- Intermediary computer 230 may intercept and modify requests from a client computer based on one or more stored attribute maps and/or DOM maps.
- FIG. 7 illustrates a process for intercepting and modifying a request based on one or more stored attribute maps and/or DOM maps, in an example embodiment.
- FIG. 7 may be described with reference to FIG. 2 and/or FIG. 3 , but using the particular arrangements illustrated in FIG. 2 and/or FIG. 3 are not required in other embodiments.
- an intermediary computer modifies identifiers of one or more objects defined in an intercepted, original set of instructions.
- intermediary computer 230 intercepted an original set of instructions from original web server computer 302 to be sent to visitor browser 195 ; browser backend 334 generated in-memory data structures 400 based on the original set of instructions; object 452 has an attribute that is a unique identifier: “452”; and forward translator 336 translates an identifier of object 452 identifier to “ABC”.
- the intermediary computer stores one or more mappings between the original identifiers and the modified identifiers.
- forward translator 336 may store a transaction identifier. Forward translator 336 may associate the transaction identifier with each mapping. The transaction identifier may be used to recall the mappings associated with the set of original instructions and/or a rendered set of instructions.
- the transaction identifier may be a modified identifier, such as the identifier of a form object in DOM 450 .
- forward translator 336 stores a mapping between “452” and “ABC”, in transaction store 340 and/or data storage 240 and that forward translator 336 generates a transaction identifier, “T1”, and associates the transaction identifier “T1” with the mapping between “452” and “ABC”.
- forward translator 336 may send the mapping between “452” and “ABC” and the transaction identifier, “T1”, to transaction store 340 . Additionally or alternatively, forward translator 336 and/or transaction store 340 may store the mapping and the transaction identifier in data storage 240 .
- the intermediary computer sends the second set of instructions with the modified identifiers to the remote client computer.
- forward translator 336 renders a second set of instructions based on the current state of the data structures and the operations, using one or more of the methods discussed herein. Accordingly, forward translator 336 may send the rendered, second set of instructions to visitor browser 295 through protocol handler 338 .
- the intermediary computer intercepts a request from a remote client computer to a server computer with the modified identifiers.
- Visitor browser 295 receives the rendered, second set of instructions; visitor browser 295 executes the rendered, second set of instructions and generates the same objects in memory as were stored in in-memory data structures 400 to render the second set of instructions; visitor browser 295 generates a user interface based on the objects in memory; a user using visitor browser 295 , enters data into a field with an identifier, ABC, and selects a “submit” button, through the user interface generated from the rendered, second set of instructions; and visitor browser 295 sends a request to original web server computer 302 with the identifier “ABC”, data associated with “ABC”, and the identifier “T1”.
- intermediary computer 230 may intercept the request.
- protocol handler 338 may receive the request.
- Protocol handler 338 may send the request to transaction store 340 .
- the intermediary computer 230 may determine that the request is not an authorized request to be sent to original web server computer 302 . Accordingly, the intermediary computer may not forward the request to original web server computer 302 for which the request was intended. Additionally or alternatively, intermediary computer 230 may return an error code, such as HTTP error 500 , to the client computer that made the request. Additionally or alternatively, intermediary computer 230 may return a success code, such as HTTP error 200 , to the client computer that made the request.
- an error code such as HTTP error 500
- intermediary computer 230 may return a success code, such as HTTP error 200 , to the client computer that made the request.
- the intermediary computer modifies the request by replacing the modified identifiers with the original identifiers based on the mapping. For example, based on the identifier “T1”, transaction store 340 may recall the mapping between “452” and “ABC”. Transaction store 340 may send the request and the mapping between “452” and “ABC” to reverse translator 342 .
- Reverse translator 342 may modify the request based on the mapping: reverse translator 342 may associate the data associated with identifier “ABC” in the request, with identifier “452” defined in the original set of instructions. Additionally or alternatively, reverse translator 342 may modify the request causing a response to the modified request from original web server computer 302 to be sent to and intercepted by intermediary computer 320 , instead of visitor browser 295 .
- the intermediary computer sends a modified request to the server computer.
- reverse translator 342 may send the modified request to original web server computer 302 through protocol client 332 .
- Original web server computer 302 may send a set of instructions in response to the received request to visitor browser 295 , which in turn may be intercepted by intermediary computer 230 .
- FIG. 8 illustrates a process for intercepting instructions and requests between an HTTP server and an HTTP-based web browser over HTTP, in an example embodiment.
- FIG. 8 may be described with reference to FIG. 2 and/or FIG. 3 , but using the particular arrangements illustrated in FIG. 2 and/or FIG. 3 are not required in other embodiments.
- step 805 in FIG. 8 , an intermediary computer intercepts HTML, CSS, and JavaScript from a web server computer over HTTP to a remote client computer running a web browser.
- HTML, CSS, and JavaScript from a web server computer over HTTP to a remote client computer running a web browser.
- Original web server computer 302 hosts a website that sends and receives content through HTTP.
- Visitor computer 299 is a remote client computer that executes visitor browser 295 , which a web browser, that receives and processes HTML, CSS, and/or JavaScript instructions, and sends requests, over HTTP.
- Visitor browser 295 generates a DOM maintained in memory on visitor computer 299 , based on the received HTML, CSS, and/or JavaScript instructions.
- Visitor browser causes a user interface to be displayed on a monitor connected to visitor computer 299 based on the DOM maintained in memory on visitor computer 299 .
- Intermediary computer 230 is an in-line computer between original web server computer 302 and visitor computer 299 , such that all data sent and/or received between original web server computer 302 and visitor computer 299 is sent and/or received through intermediary computer 230 .
- Protocol client 332 is an HTTP protocol client.
- Protocol handler 338 is an HTTP protocol handler.
- original web server computer 302 In response to a request for data from a user, through visitor browser 295 , original web server computer 302 sends a first set of instructions comprising HTML, CSS, and JavaScript instructions.
- the CSS instructions comprise the following text: #452 ⁇ width: 52px; ⁇ .
- the JavaScript instructions comprise a first function that references the object with an identifier attribute of “454” and sets the value of the object to a key “12345”.
- the JavaScript instructions comprise an instruction that causes the first function to be executed after each of the objects defined in the HTML have been loaded, regardless of user interaction.
- the JavaScript instructions comprise a second function that submits the value of the field identified as “454” to original web server computer 302 .
- intermediary computer 230 through protocol client 332 may receive the HTML, CSS, and JavaScript instructions intended to be sent to visitor computer 299 .
- Protocol client 332 may send the HTML, CSS, and JavaScript instructions to browser backend 334 .
- the intermediary computer generates one or more objects in memory from the intercepted HTML using a browser backend.
- browser backend 334 is a headless, HTTP, web browser backend that process HTML, CSS, and/or JavaScript instructions and generates objects in memory based on the HTML, CSS, and JavaScript instructions received.
- browser backend 334 may generate object 452 , which represents a form with the identifier “452” in DOM 450 stored in in-memory data structures 400 , from the received HTML instructions.
- browser backend 334 may generate object 454 , which represents an input with the identifier “454” which is a child of object 452 , in DOM 450 , in-memory data structures 400 from the received HTML.
- the intermediary computer associates attributes and operations defined in CSS and JavaScript instructions with the data structures.
- browser backend 334 may generate other property information 430 , which comprises an attribute named “width”, with a value “52px”.
- Browser backend 334 may associate the attribute named “width” with object 452 .
- browser backend 334 may generate JavaScript engine state info 440 which comprises a representation of the first operation and a representation of the second operation.
- Browser backend 334 may associate first operation and the second operation with object 454 .
- the intermediary computer updates the data structures based on one or more operations defined by the received CSS and JavaScript instructions.
- browser backend 334 may store the attribute named “width”, and the attribute's value, in object 452 .
- browser backend 334 may perform the first operation represented in JavaScript engine state info 440 .
- object 454 may include the value “12345”. Since no instruction indicates that the second operation should be executed after the objects defined in the HTML are loaded, browser backend 334 need not perform the second operation.
- the attribute may be deleted from other property information 430 .
- the representation of the first operation in JavaScript engine state info may be deleted.
- attribute named “width” and the first operation have not been deleted.
- the intermediary computer modifies one or more objects and generates a DOM mapping.
- forward translator 336 may modify the identifier for object 452 to “ABC” and the identifier for object 454 to “DEF” to produce a modified DOM.
- forward translator 336 may generate a mapping from the original DOM to the modified DOM to produce a DOM mapping, which includes two attribute mappings: “452” with “ABC”, and “454” with “DEF”.
- Forward translator 336 may select the new identifier, “ABC”, to be the transaction identifier for the DOM mapping.
- Forward translator 336 may select the identifier “ABC” because it is the identifier of a form; accordingly, forward translator 336 may associate all mappings of identifiers in the form with the transaction identifier “ABC”: the mapping of “452” with “ABC” and/or the mapping of “454” with “DEF”. Additionally or alternatively, forward translator may generate a transaction identifier for each form and/or link defined in the original and/or modified DOM. Each mapping may be associated with each transaction identifier. Additionally or alternatively, forward translator 336 may select an identifier for any other reason as the transaction identifier. Additionally or alternatively, forward translator 336 may generate a transaction identifier that is not based on any identifier. Forward translator 336 may store the DOM mapping in data storage 240 and/or transaction store 340 .
- the intermediary computer renders new HTML, CSS, and JavaScript instructions based on the current state of the objects in memory.
- the rendered CSS comprises the following text: #ABC ⁇ width: 52px; ⁇ ;
- the rendered JavaScript instructions comprise an operation that submits the value of the field identified as “DEF” to original web server computer 302 .
- the intermediary computer sends the rendered, new HTML, CSS, and JavaScript instructions to the remote client computer.
- forward translator 336 may send visitor browser 295 the new HTML, CSS, and JavaScript instructions rendered in step 830 , through protocol handler 338 , over HTTP.
- visitor browser 295 may generate the same objects and/or operations in memory as existed in in-memory data structures 400 when the new instructions were rendered with the modified DOM.
- the intermediary computer intercepts a request from the remote client computer based on the modified DOM.
- a request For purposes of illustrating a clear example, assume the following: The user using visitor computer 299 input text into visitor browser 295 , which was associated with object DEF in visitor computer's memory; the user using visitor computer 299 selected a submit button, which caused visitor browser to execute the operation defined by the rendered JavaScript instructions, which submits a request that includes the value of the field identified as “DEF”, associated with the identifier “DEF”; the submitted request includes that associates the value of the field identified as “DEF” and/or the identifier “DEF” with identifier “ABC”.
- protocol handler 338 intercepts the request and sends the request to transaction store 340 .
- Transaction store 340 may recall the DOM mapping associated with “ABC” from transaction store 340 and/or data storage 240 .
- Transaction store 340 may send the DOM mapping and the request to reverse translator 342 .
- the intermediary computer translates the request based on the DOM mapping to produce a new, translated request.
- reverse translator 342 receives the request and the DOM mapping.
- Reverse translator 342 translates the request into a new request based on the original DOM, using the DOM mapping.
- the new request may include the value from the received request associated with the identifier “454”, instead of identifier “DEF”.
- the new request may include data associating the value and/or the identifier “454” with the identifier “452”.
- the new request may be the request visitor browser 295 would have sent in response to the same user input in step 840 had the original instructions, not the modified instructions, been sent to visitor browser 295 .
- the intermediary computer sends the translated request to the web server computer.
- reverse translator 342 sends the translated, new request to original web server computer 302 through protocol client 332 .
- original web server computer 302 may respond to the new request and respond with HTML, CSS, and/or JavaScript instruction, at which point intermediary computer 230 may revisit step 805 .
- the techniques described herein are implemented by one or more special-purpose computing devices.
- the special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination.
- ASICs application-specific integrated circuits
- FPGAs field programmable gate arrays
- Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques.
- the special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices or any other device that incorporates hard-wired and/or program logic to implement the techniques.
- FIG. 9 is a block diagram that illustrates a computer system 900 upon which an embodiment of the invention may be implemented.
- Computer system 900 includes a bus 902 or other communication mechanism for communicating information, and a hardware processor 904 coupled with bus 902 for processing information.
- Hardware processor 904 may be, for example, a general purpose microprocessor.
- Computer system 900 also includes a main memory 906 , such as a random access memory (RAM) or other dynamic storage device, coupled to bus 902 for storing information and instructions to be executed by processor 904 .
- Main memory 906 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 904 .
- Such instructions when stored in non-transitory storage media accessible to processor 904 , render computer system 900 into a special-purpose machine that is customized to perform the operations specified in the instructions.
- Computer system 900 further includes a read only memory (ROM) 908 or other static storage device coupled to bus 902 for storing static information and instructions for processor 904 .
- ROM read only memory
- a storage device 910 such as a magnetic disk or optical disk, is provided and coupled to bus 902 for storing information and instructions.
- Computer system 900 may be coupled via bus 902 to a display 912 , such as a cathode ray tube (CRT), for displaying information to a computer user.
- a display 912 such as a cathode ray tube (CRT)
- An input device 914 is coupled to bus 902 for communicating information and command selections to processor 904 .
- cursor control 916 is Another type of user input device
- cursor control 916 such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 904 and for controlling cursor movement on display 912 .
- This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane.
- Computer system 900 may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computer system causes or programs computer system 900 to be a special-purpose machine. According to one embodiment, the techniques herein are performed by computer system 900 in response to processor 904 executing one or more sequences of one or more instructions contained in main memory 906 . Such instructions may be read into main memory 906 from another storage medium, such as storage device 910 . Execution of the sequences of instructions contained in main memory 906 causes processor 904 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions.
- Non-volatile media includes, for example, optical or magnetic disks, such as storage device 910 .
- Volatile media includes dynamic memory, such as main memory 906 .
- Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge.
- Storage media is distinct from but may be used in conjunction with transmission media.
- Transmission media participates in transferring information between storage media.
- transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 902 .
- transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
- Various forms of media may be involved in carrying one or more sequences of one or more instructions to processor 904 for execution.
- the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer.
- the remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem.
- a modem local to computer system 900 can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal.
- An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus 902 .
- Bus 902 carries the data to main memory 906 , from which processor 904 retrieves and executes the instructions.
- the instructions received by main memory 906 may optionally be stored on storage device 910 either before or after execution by processor 904 .
- Computer system 900 also includes a communication interface 918 coupled to bus 902 .
- Communication interface 918 provides a two-way data communication coupling to a network link 920 that is connected to a local network 922 .
- communication interface 918 may be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line.
- ISDN integrated services digital network
- communication interface 918 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN.
- LAN local area network
- Wireless links may also be implemented.
- communication interface 918 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information.
- Network link 920 typically provides data communication through one or more networks to other data devices.
- network link 920 may provide a connection through local network 922 to a host computer 924 or to data equipment operated by an Internet Service Provider (ISP) 926 .
- ISP 926 in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet” 928 .
- Internet 928 uses electrical, electromagnetic or optical signals that carry digital data streams.
- the signals through the various networks and the signals on network link 920 and through communication interface 918 which carry the digital data to and from computer system 900 , are example forms of transmission media.
- Computer system 900 can send messages and receive data, including program code, through the network(s), network link 920 and communication interface 918 .
- a server 930 might transmit a requested code for an application program through Internet 928 , ISP 926 , local network 922 and communication interface 918 .
- the received code may be executed by processor 904 as it is received, and/or stored in storage device 910 , or other non-volatile storage for later execution.
- DOS denial of service
Abstract
Description
-
- 1.0 Terms
- 2.0 General Overview
- 3.0 Network Topology
- 3.1 Visitor Browser
- 3.1.1 Browser Frontend
- 3.1.2 Browser Backend
- 3.2 Web Infrastructure
- 3.3 Intermediary
- 3.3.1 Protocol Client
- 3.3.2 Browser Backend
- 3.3.3 Forward Translator
- 3.3.4 Protocol Handler
- 3.3.5 Transaction Store
- 3.3.6 Reverse Translator
- 3.1 Visitor Browser
- 4.0 Process Overview
- 4.1 Intercepting Instructions from a Content Server Computer and Generating New Instructions
- 4.2 Caching Rendered Instructions
- 4.3 Intercept a Request from a Client Computer and Translate the Request into a New Request based on a Stored Mapping
- 4.4 Methods for an HTTP-based System
- 5.0 Implementation Mechanisms—Hardware Overview
- 6.0 Other Aspects of Disclosure
Claims (20)
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/099,437 US9270647B2 (en) | 2013-12-06 | 2013-12-06 | Client/server security by an intermediary rendering modified in-memory objects |
US14/175,923 US8892687B1 (en) | 2013-12-06 | 2014-02-07 | Client/server security by an intermediary rendering modified in-memory objects |
AU2014360734A AU2014360734A1 (en) | 2013-12-06 | 2014-12-02 | Client/server security by an intermediary rendering modified in-memory objects |
CA2930708A CA2930708A1 (en) | 2013-12-06 | 2014-12-02 | Client/server security by an intermediary rendering modified in-memory objects |
PCT/US2014/068133 WO2015084833A1 (en) | 2013-12-06 | 2014-12-02 | Client/server security by an intermediary rendering modified in-memory objects |
EP14821930.6A EP3078178A1 (en) | 2013-12-06 | 2014-12-02 | Client/server security by an intermediary rendering modified in-memory objects |
US14/929,019 US10027628B2 (en) | 2013-12-06 | 2015-10-30 | Client/server security by an intermediary rendering modified in-memory objects |
US16/024,621 US11088995B2 (en) | 2013-12-06 | 2018-06-29 | Client/server security by an intermediary rendering modified in-memory objects |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/099,437 US9270647B2 (en) | 2013-12-06 | 2013-12-06 | Client/server security by an intermediary rendering modified in-memory objects |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/175,923 Continuation US8892687B1 (en) | 2013-12-06 | 2014-02-07 | Client/server security by an intermediary rendering modified in-memory objects |
US14/929,019 Continuation US10027628B2 (en) | 2013-12-06 | 2015-10-30 | Client/server security by an intermediary rendering modified in-memory objects |
Publications (2)
Publication Number | Publication Date |
---|---|
US20150163201A1 US20150163201A1 (en) | 2015-06-11 |
US9270647B2 true US9270647B2 (en) | 2016-02-23 |
Family
ID=51870272
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/099,437 Expired - Fee Related US9270647B2 (en) | 2013-12-06 | 2013-12-06 | Client/server security by an intermediary rendering modified in-memory objects |
US14/175,923 Active 2033-12-15 US8892687B1 (en) | 2013-12-06 | 2014-02-07 | Client/server security by an intermediary rendering modified in-memory objects |
US14/929,019 Active US10027628B2 (en) | 2013-12-06 | 2015-10-30 | Client/server security by an intermediary rendering modified in-memory objects |
US16/024,621 Active 2034-06-16 US11088995B2 (en) | 2013-12-06 | 2018-06-29 | Client/server security by an intermediary rendering modified in-memory objects |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/175,923 Active 2033-12-15 US8892687B1 (en) | 2013-12-06 | 2014-02-07 | Client/server security by an intermediary rendering modified in-memory objects |
US14/929,019 Active US10027628B2 (en) | 2013-12-06 | 2015-10-30 | Client/server security by an intermediary rendering modified in-memory objects |
US16/024,621 Active 2034-06-16 US11088995B2 (en) | 2013-12-06 | 2018-06-29 | Client/server security by an intermediary rendering modified in-memory objects |
Country Status (5)
Country | Link |
---|---|
US (4) | US9270647B2 (en) |
EP (1) | EP3078178A1 (en) |
AU (1) | AU2014360734A1 (en) |
CA (1) | CA2930708A1 (en) |
WO (1) | WO2015084833A1 (en) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160142428A1 (en) * | 2014-11-13 | 2016-05-19 | Nicolò Pastore | System and method for identifying internet attacks |
US20170315971A1 (en) * | 2014-10-06 | 2017-11-02 | Symmetric Co., Ltd. | Program for displaying webpage, terminal device, and server device |
US20180121680A1 (en) * | 2014-05-23 | 2018-05-03 | Shape Security, Inc. | Obfuscating web code |
US20180121667A1 (en) * | 2015-08-12 | 2018-05-03 | Workday, Inc. | Spreadsheet shared region and cell permissions |
US10552530B1 (en) | 2015-08-12 | 2020-02-04 | Workday, Inc. | Spreadsheet shared region and cell formula templating |
US10572584B1 (en) | 2015-08-12 | 2020-02-25 | Workday, Inc. | Spreadsheet region and cell sharing |
US10789378B1 (en) | 2015-08-12 | 2020-09-29 | Workday, Inc. | User interface for region and cell sharing |
US10958682B2 (en) | 2011-09-21 | 2021-03-23 | SunStone Information Defense Inc. | Methods and apparatus for varying soft information related to the display of hard information |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9225737B2 (en) | 2013-03-15 | 2015-12-29 | Shape Security, Inc. | Detecting the introduction of alien content |
US9338143B2 (en) | 2013-03-15 | 2016-05-10 | Shape Security, Inc. | Stateless web content anti-automation |
US20140283038A1 (en) | 2013-03-15 | 2014-09-18 | Shape Security Inc. | Safe Intelligent Content Modification |
US8869281B2 (en) | 2013-03-15 | 2014-10-21 | Shape Security, Inc. | Protecting against the introduction of alien content |
US9270647B2 (en) | 2013-12-06 | 2016-02-23 | Shape Security, Inc. | Client/server security by an intermediary rendering modified in-memory objects |
US8954583B1 (en) | 2014-01-20 | 2015-02-10 | Shape Security, Inc. | Intercepting and supervising calls to transformed operations and objects |
US9225729B1 (en) | 2014-01-21 | 2015-12-29 | Shape Security, Inc. | Blind hash compression |
US8893294B1 (en) | 2014-01-21 | 2014-11-18 | Shape Security, Inc. | Flexible caching |
US9241004B1 (en) * | 2014-03-11 | 2016-01-19 | Trend Micro Incorporated | Alteration of web documents for protection against web-injection attacks |
US10148735B1 (en) | 2014-03-12 | 2018-12-04 | Instart Logic, Inc. | Application layer load balancer |
US10474729B2 (en) | 2014-03-12 | 2019-11-12 | Instart Logic, Inc. | Delayed encoding of resource identifiers |
US11341206B2 (en) * | 2014-03-12 | 2022-05-24 | Akamai Technologies, Inc. | Intercepting not directly interceptable program object property |
US11314834B2 (en) | 2014-03-12 | 2022-04-26 | Akamai Technologies, Inc. | Delayed encoding of resource identifiers |
US10747787B2 (en) | 2014-03-12 | 2020-08-18 | Akamai Technologies, Inc. | Web cookie virtualization |
US11134063B2 (en) | 2014-03-12 | 2021-09-28 | Akamai Technologies, Inc. | Preserving special characters in an encoded identifier |
US9544329B2 (en) | 2014-03-18 | 2017-01-10 | Shape Security, Inc. | Client/server security by an intermediary executing instructions received from a server and rendering client application instructions |
JP6354382B2 (en) * | 2014-06-26 | 2018-07-11 | 株式会社リコー | Authentication system, authentication method, authentication apparatus, and program |
US9075990B1 (en) | 2014-07-01 | 2015-07-07 | Shape Security, Inc. | Reliable selection of security countermeasures |
US20160011732A1 (en) * | 2014-07-11 | 2016-01-14 | Shape Security, Inc. | Disrupting automated attacks on client-server interactions using polymorphic application programming interfaces |
US9003511B1 (en) | 2014-07-22 | 2015-04-07 | Shape Security, Inc. | Polymorphic security policy action |
US9438625B1 (en) | 2014-09-09 | 2016-09-06 | Shape Security, Inc. | Mitigating scripted attacks using dynamic polymorphism |
US9602543B2 (en) | 2014-09-09 | 2017-03-21 | Shape Security, Inc. | Client/server polymorphism using polymorphic hooks |
US10693946B2 (en) * | 2014-09-16 | 2020-06-23 | Amazon Technologies, Inc. | Instance backed mobile devices |
US20170103485A1 (en) * | 2014-10-10 | 2017-04-13 | Arie Moshe Michelsohn | Interactive tools for semantic organization of legal information |
US9363311B1 (en) * | 2014-12-05 | 2016-06-07 | Tealium Inc. | Delivery of instructions in host applications |
EP3259687A4 (en) * | 2015-02-18 | 2018-08-01 | Persistent Systems Limited | Integrated intermediary computing device for data analytic enhancement |
WO2016186817A1 (en) * | 2015-05-15 | 2016-11-24 | Shape Security, Inc. | Client/server security by an intermediary executing instructions received from a server and rendering client application instructions |
US9813440B1 (en) | 2015-05-15 | 2017-11-07 | Shape Security, Inc. | Polymorphic treatment of annotated content |
US9521157B1 (en) * | 2015-06-24 | 2016-12-13 | Bank Of America Corporation | Identifying and assessing malicious resources |
CN105099909B (en) * | 2015-07-02 | 2018-10-26 | 成都亚信网络安全产业技术研究院有限公司 | A kind of flow restoring method and device |
WO2017007705A1 (en) | 2015-07-06 | 2017-01-12 | Shape Security, Inc. | Asymmetrical challenges for web security |
US10230718B2 (en) | 2015-07-07 | 2019-03-12 | Shape Security, Inc. | Split serving of computer code |
US9807113B2 (en) | 2015-08-31 | 2017-10-31 | Shape Security, Inc. | Polymorphic obfuscation of executable code |
US9626359B1 (en) * | 2015-12-09 | 2017-04-18 | Xasp Security, Llc | Dynamic data encapsulating systems |
WO2017123858A1 (en) * | 2016-01-15 | 2017-07-20 | Instart Logic, Inc. | Intercepting not directly interceptable program object property |
US10855696B2 (en) * | 2016-03-02 | 2020-12-01 | Shape Security, Inc. | Variable runtime transpilation |
JP6720613B2 (en) * | 2016-03-23 | 2020-07-08 | 富士ゼロックス株式会社 | Information processing system and information processing program |
US11349816B2 (en) | 2016-12-02 | 2022-05-31 | F5, Inc. | Obfuscating source code sent, from a server computer, to a browser on a client computer |
US10264057B2 (en) * | 2016-12-08 | 2019-04-16 | Sap Se | Hybrid cloud integration systems and methods |
US10515063B1 (en) * | 2016-12-19 | 2019-12-24 | Cboe Exchange, Inc. | System and method for real-time data acquisition and display |
US11599369B1 (en) * | 2018-03-08 | 2023-03-07 | Palantir Technologies Inc. | Graphical user interface configuration system |
CN110221871B (en) * | 2019-04-22 | 2021-10-22 | 腾讯科技(深圳)有限公司 | Webpage acquisition method and device, computer equipment and storage medium |
CN112169322B (en) * | 2019-07-04 | 2022-03-25 | 广州虎牙科技有限公司 | Remote rendering method and device, electronic equipment and readable storage medium |
KR20210038207A (en) * | 2019-09-30 | 2021-04-07 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | Login based device data synchronization |
US11741197B1 (en) | 2019-10-15 | 2023-08-29 | Shape Security, Inc. | Obfuscating programs using different instruction set architectures |
US11308259B2 (en) * | 2020-03-09 | 2022-04-19 | Servicenow, Inc. | Web element retargeting |
US20210358054A1 (en) * | 2020-05-15 | 2021-11-18 | Adp, Llc | Online information validation |
US20220076263A1 (en) * | 2020-09-10 | 2022-03-10 | Mastercard Technologies Canada ULC | Configurable data container for fraud detection system |
CN112162767A (en) * | 2020-09-23 | 2021-01-01 | 成都完美天智游科技有限公司 | Hot updating method, device, equipment and storage medium |
US11711352B2 (en) * | 2020-12-17 | 2023-07-25 | Citrix Systems, Inc. | Systems and methods to prevent private data misuse by insider |
CN113312266B (en) * | 2021-06-11 | 2023-09-15 | 成都精灵云科技有限公司 | System and method for rapidly generating test topology structure diagram based on automatic test |
CN114726627A (en) * | 2022-04-11 | 2022-07-08 | 中国南方电网有限责任公司 | Protection method, device and system based on security gateway |
Citations (107)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5003596A (en) | 1989-08-17 | 1991-03-26 | Cryptech, Inc. | Method of cryptographically transforming electronic digital data from one form to another |
US5315657A (en) | 1990-09-28 | 1994-05-24 | Digital Equipment Corporation | Compound principals in access control lists |
US5987611A (en) | 1996-12-31 | 1999-11-16 | Zone Labs, Inc. | System and methodology for managing internet access on a per application basis for client computers connected to the internet |
WO1999064967A1 (en) | 1998-06-12 | 1999-12-16 | Telefonaktiebolaget Lm Ericsson (Publ) | A method and a system for transmitting a cookie |
US6006328A (en) | 1995-07-14 | 1999-12-21 | Christopher N. Drake | Computer software authentication, protection, and security system |
WO2000072119A2 (en) | 1999-05-05 | 2000-11-30 | Rabin Michael O | Methods and apparatus for protecting information |
US6170020B1 (en) | 1998-06-30 | 2001-01-02 | Compaq Computer Corporation | Reservation and dynamic allocation of resources for sole use of docking peripheral device |
US6401077B1 (en) | 1999-05-28 | 2002-06-04 | Network Commerce, Inc. | Method and system for providing additional behavior through a web page |
WO2002088951A1 (en) | 2001-04-26 | 2002-11-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Stateless server |
WO2002093369A1 (en) | 2001-05-16 | 2002-11-21 | Softricity, Inc. | Operating system abstraction and protection layer |
US20030159063A1 (en) | 2002-02-07 | 2003-08-21 | Larry Apfelbaum | Automated security threat testing of web pages |
US20040101142A1 (en) | 2001-07-05 | 2004-05-27 | Nasypny Vladimir Vladimirovich | Method and system for an integrated protection system of data distributed processing in computer networks and system for carrying out said method |
US20040162994A1 (en) | 2002-05-13 | 2004-08-19 | Sandia National Laboratories | Method and apparatus for configurable communication network defenses |
US20040249938A1 (en) | 2000-06-28 | 2004-12-09 | Bunch Clinton D. | System and method for monitoring access to a network by a computer |
WO2004109532A1 (en) | 2003-06-05 | 2004-12-16 | Cubicice (Pty) Ltd | A method of collecting data regarding a plurality of web pages visited by at least one user |
US6938170B1 (en) | 2000-07-17 | 2005-08-30 | International Business Machines Corporation | System and method for preventing automated crawler access to web-based data sources using a dynamic data transcoding scheme |
US20060015941A1 (en) | 2004-07-13 | 2006-01-19 | Mckenna John J | Methods, computer program products and data structures for intrusion detection, intrusion response and vulnerability remediation across target computer systems |
US20060034455A1 (en) | 2004-08-12 | 2006-02-16 | Damgaard Ivan B | Permutation data transform to enhance security |
US20060053295A1 (en) | 2004-08-24 | 2006-03-09 | Bharath Madhusudan | Methods and systems for content detection in a reconfigurable hardware |
US20060195588A1 (en) | 2005-01-25 | 2006-08-31 | Whitehat Security, Inc. | System for detecting vulnerabilities in web applications using client-side application interfaces |
US7103180B1 (en) | 2001-10-25 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | Method of implementing the data encryption standard with reduced computation |
US7117429B2 (en) | 2002-06-12 | 2006-10-03 | Oracle International Corporation | Methods and systems for managing styles electronic documents |
US20070011295A1 (en) | 2000-07-28 | 2007-01-11 | Axeda Corporation, A Massachusetts Corporation | Reporting the state of an apparatus to a remote computer |
US7180895B2 (en) | 2001-12-31 | 2007-02-20 | 3Com Corporation | System and method for classifying network packets with packet content |
US20070064617A1 (en) | 2005-09-15 | 2007-03-22 | Reves Joseph P | Traffic anomaly analysis for the detection of aberrant network code |
US20070074227A1 (en) | 2005-09-26 | 2007-03-29 | Bea Systems, Inc. | Interceptor method and system for web services for remote portlets |
US20080025496A1 (en) | 2005-08-01 | 2008-01-31 | Asier Technology Corporation, A Delaware Corporation | Encrypting a plaintext message with authentication |
GB2443093A (en) | 2006-10-19 | 2008-04-23 | Dovetail Software Corp Ltd | Insertion of extraneous characters into requested data to affect pattern recognition processes e.g. webscraping |
WO2008095018A2 (en) | 2007-01-31 | 2008-08-07 | Omniture, Inc. | Page grouping for site traffic analysis reports |
WO2008095031A1 (en) | 2007-01-30 | 2008-08-07 | Google, Inc. | Probabilistic inference of site demographics from aggregate user internet usage and source demographic information |
US20080222736A1 (en) | 2007-03-07 | 2008-09-11 | Trusteer Ltd. | Scrambling HTML to prevent CSRF attacks and transactional crimeware attacks |
US20080229394A1 (en) | 2006-07-10 | 2008-09-18 | Sci Group | Method and System For Securely Protecting Data During Software Application Usage |
WO2008130946A2 (en) | 2007-04-17 | 2008-10-30 | Kenneth Tola | Unobtrusive methods and systems for collecting information transmitted over a network |
US7464326B2 (en) | 2002-10-17 | 2008-12-09 | Nec Corporation | Apparatus, method, and computer program product for checking hypertext |
US20080320567A1 (en) | 2007-06-20 | 2008-12-25 | Imperva, Inc. | System and method for preventing web frauds committed using client-scripting attacks |
US20090007243A1 (en) | 2007-06-27 | 2009-01-01 | Trusteer Ltd. | Method for rendering password theft ineffective |
US7500099B1 (en) | 2003-05-16 | 2009-03-03 | Microsoft Corporation | Method for mitigating web-based “one-click” attacks |
CN101471818A (en) | 2007-12-24 | 2009-07-01 | 北京启明星辰信息技术股份有限公司 | Detection method and system for malevolence injection script web page |
US20090193513A1 (en) | 2008-01-26 | 2009-07-30 | Puneet Agarwal | Policy driven fine grain url encoding mechanism for ssl vpn clientless access |
US20090193497A1 (en) | 2008-01-25 | 2009-07-30 | Haruka Kikuchi | Method and apparatus for constructing security policies for web content instrumentation against browser-based attacks |
US7580521B1 (en) | 2003-06-25 | 2009-08-25 | Voltage Security, Inc. | Identity-based-encryption system with hidden public key attributes |
US20090241174A1 (en) | 2008-02-19 | 2009-09-24 | Guru Rajan | Handling Human Detection for Devices Connected Over a Network |
US20090254572A1 (en) | 2007-01-05 | 2009-10-08 | Redlich Ron M | Digital information infrastructure and method |
US20090292984A1 (en) | 2008-05-21 | 2009-11-26 | Frederic Bauchot | Method and system to selectively secure the display of advertisements on web browsers |
US20100083072A1 (en) | 2008-09-30 | 2010-04-01 | Freescale Semiconductor, Inc. | Data interleaver |
US7707223B2 (en) | 2005-04-28 | 2010-04-27 | Cisco Technology, Inc. | Client-side java content transformation |
WO2010046314A1 (en) * | 2008-10-23 | 2010-04-29 | Xmos Ltd | Software development environment |
US20100131512A1 (en) | 2005-08-02 | 2010-05-27 | Ron Ben-Natan | System and methods for selective local database access restriction |
US20100186089A1 (en) | 2009-01-22 | 2010-07-22 | International Business Machines Corporation | Method and system for protecting cross-domain interaction of a web application on an unmodified browser |
US20100235637A1 (en) | 2007-06-22 | 2010-09-16 | Gemalto, Sa | Method of Preventing Web Browser Extensions from Hijacking User Information |
US20100235910A1 (en) | 2008-05-22 | 2010-09-16 | Young Bae Ku | Systems and methods for detecting false code |
US20100262780A1 (en) | 2009-03-31 | 2010-10-14 | Mahan Michael P | Apparatus and methods for rendering a page |
US20110015917A1 (en) | 2009-07-17 | 2011-01-20 | Pei Wang | Browser emulator system |
US20110022846A1 (en) | 1995-02-13 | 2011-01-27 | Intertrust Technologies Corp. | Systems and Methods for Secure Transaction Management and Electronic Rights Protection |
US7895653B2 (en) | 2007-05-31 | 2011-02-22 | International Business Machines Corporation | Internet robot detection for network distributable markup |
US20110047169A1 (en) | 2009-04-24 | 2011-02-24 | Bonnie Berger Leighton | Intelligent search tool for answering clinical queries |
US20110107077A1 (en) | 2009-11-05 | 2011-05-05 | International Business Machines Corporation | Obscuring form data through obfuscation |
US7940657B2 (en) | 2006-12-01 | 2011-05-10 | Sonus Networks, Inc. | Identifying attackers on a network |
US20110131416A1 (en) | 2009-11-30 | 2011-06-02 | James Paul Schneider | Multifactor validation of requests to thw art dynamic cross-site attacks |
US20110154021A1 (en) | 2008-05-05 | 2011-06-23 | Netsecure Innovations Inc. | Apparatus and method to prevent man in the middle attack |
US7975308B1 (en) | 2007-09-28 | 2011-07-05 | Symantec Corporation | Method and apparatus to secure user confidential data from untrusted browser extensions |
US20110178973A1 (en) | 2010-01-20 | 2011-07-21 | Microsoft Corporation | Web Content Rewriting, Including Responses |
US8020193B2 (en) | 2008-10-20 | 2011-09-13 | International Business Machines Corporation | Systems and methods for protecting web based applications from cross site request forgery attacks |
US20110239113A1 (en) | 2010-03-25 | 2011-09-29 | Colin Hung | Systems and methods for redacting sensitive data entries |
US20110255689A1 (en) | 2010-04-15 | 2011-10-20 | Lsi Corporation | Multiple-mode cryptographic module usable with memory controllers |
US20110296391A1 (en) | 2010-05-28 | 2011-12-01 | Albrecht Gass | Systems and Methods for Dynamically Replacing Code Objects Via Conditional Pattern Templates |
US20120011262A1 (en) | 2009-02-17 | 2012-01-12 | Alibaba Group Holding Limited | Method and System of Processing Cookies Across Domains |
US20120022942A1 (en) | 2010-04-01 | 2012-01-26 | Lee Hahn Holloway | Internet-based proxy service to modify internet responses |
US20120023394A1 (en) | 2010-07-22 | 2012-01-26 | International Business Machines Corporation | Method and apparatus for context-aware output escaping using dynamic content marking |
US20120030248A1 (en) | 2010-07-30 | 2012-02-02 | Blinnikka Tomi J | Highly reliable cross-session web application instrumentation |
US20120096116A1 (en) | 2010-10-15 | 2012-04-19 | Alan Mislove | Content distribution network using a web browser and locally stored content to directly exchange content between users |
US8170020B2 (en) | 2005-12-08 | 2012-05-01 | Microsoft Corporation | Leveraging active firewalls for network intrusion detection and retardation of attack |
US20120124372A1 (en) | 2010-10-13 | 2012-05-17 | Akamai Technologies, Inc. | Protecting Websites and Website Users By Obscuring URLs |
US20120173870A1 (en) | 2010-12-29 | 2012-07-05 | Anoop Reddy | Systems and Methods for Multi-Level Tagging of Encrypted Items for Additional Security and Efficient Encrypted Item Determination |
US20120173699A1 (en) | 2011-01-05 | 2012-07-05 | F-Secure Corporation | Controlling access to web content |
US20120174225A1 (en) | 2010-12-30 | 2012-07-05 | Verisign, Inc. | Systems and Methods for Malware Detection and Scanning |
US8225401B2 (en) | 2008-12-18 | 2012-07-17 | Symantec Corporation | Methods and systems for detecting man-in-the-browser attacks |
US20120198528A1 (en) | 2011-02-01 | 2012-08-02 | Symbiotic Technologise Pty Ltd | Methods and systems to detect attacks on internet transactions |
US8266202B1 (en) | 2007-11-21 | 2012-09-11 | Appcelerator, Inc. | System and method for auto-generating JavaScript proxies and meta-proxies |
US8266243B1 (en) | 2010-03-30 | 2012-09-11 | Amazon Technologies, Inc. | Feedback mechanisms providing contextual information |
US20120255006A1 (en) | 2010-08-25 | 2012-10-04 | International Business Machines Corporation | Two-tier deep analysis of html traffic |
US8332952B2 (en) | 2009-05-22 | 2012-12-11 | Microsoft Corporation | Time window based canary solutions for browser security |
US8347396B2 (en) | 2007-11-30 | 2013-01-01 | International Business Machines Corporation | Protect sensitive content for human-only consumption |
US8392576B1 (en) | 2011-09-26 | 2013-03-05 | Google Inc. | Browser based redirection of broken links |
US20130091582A1 (en) | 2011-10-08 | 2013-04-11 | Broadcom Corporation | Content security in a social network |
WO2013091709A1 (en) | 2011-12-22 | 2013-06-27 | Fundació Privada Barcelona Digital Centre Tecnologic | Method and apparatus for real-time dynamic transformation of the code of a web document |
US20130198607A1 (en) | 2012-01-31 | 2013-08-01 | Openwave Systems Inc. | Systems and methods for modifying webpage data |
US8516080B2 (en) | 2008-12-03 | 2013-08-20 | Mobophiles, Inc. | System and method for providing virtual web access |
US20130219256A1 (en) | 2010-04-12 | 2013-08-22 | Google Inc. | Scrolling in large hosted data set |
US20130227397A1 (en) | 2012-02-24 | 2013-08-29 | Microsoft Corporation | Forming an instrumented text source document for generating a live web page |
US8527774B2 (en) | 2009-05-28 | 2013-09-03 | Kaazing Corporation | System and methods for providing stateless security management for web applications using non-HTTP communications protocols |
US20130232234A1 (en) | 2009-10-23 | 2013-09-05 | Ajay Kapur | Dynamically rehosting web content |
US8533480B2 (en) | 2003-05-16 | 2013-09-10 | Adobe Systems Incorporated | Document modification detection and prevention |
US8548998B2 (en) | 2009-01-13 | 2013-10-01 | Aorato Ltd. | Methods and systems for securing and protecting repositories and directories |
US20130263264A1 (en) | 2012-04-02 | 2013-10-03 | Trusteer Ltd. | Detection of phishing attempts |
US8584233B1 (en) | 2008-05-05 | 2013-11-12 | Trend Micro Inc. | Providing malware-free web content to end users using dynamic templates |
US8601064B1 (en) | 2006-04-28 | 2013-12-03 | Trend Micro Incorporated | Techniques for defending an email system against malicious sources |
US8627479B2 (en) | 2010-03-01 | 2014-01-07 | Emc Corporation | System and method for network security including detection of attacks through partner websites |
US20140053059A1 (en) | 2012-08-16 | 2014-02-20 | Qualcomm Incorporated | Pre-processing of scripts in web browsers |
US20140165197A1 (en) | 2012-12-06 | 2014-06-12 | Empire Technology Development, Llc | Malware attack prevention using block code permutation |
US8762705B2 (en) | 2008-07-24 | 2014-06-24 | Alibaba Group Holding Limited | System and method for preventing web crawler access |
US20140189499A1 (en) | 2011-07-19 | 2014-07-03 | Amazon Technologies, Inc. | Obscuring digital content items |
US20140223290A1 (en) | 2013-02-01 | 2014-08-07 | Qualcomm Incorporated | Creating a transposed document defined by transposed markup language including transposed text |
US20140282872A1 (en) | 2013-03-15 | 2014-09-18 | Shape Security Inc. | Stateless web content anti-automation |
US20140281535A1 (en) | 2013-03-15 | 2014-09-18 | Munibonsoftware.com, LLC | Apparatus and Method for Preventing Information from Being Extracted from a Webpage |
US20150039962A1 (en) | 2010-09-10 | 2015-02-05 | John P. Fonseka | Methods, apparatus, and systems for coding with constrained interleaving |
US20150067853A1 (en) | 2013-08-27 | 2015-03-05 | Georgia Tech Research Corporation | Systems and methods for detecting malicious mobile webpages |
Family Cites Families (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870769A (en) | 1996-06-07 | 1999-02-09 | At&T Corp. | Internet access system and method with active link status indicators |
US6275789B1 (en) | 1998-12-18 | 2001-08-14 | Leo Moser | Method and apparatus for performing full bidirectional translation between a source language and a linked alternative language |
US6957229B1 (en) | 2000-01-10 | 2005-10-18 | Matthew Graham Dyor | System and method for managing personal information |
AU2001269354A1 (en) | 2000-05-12 | 2001-11-20 | Xtreamlok Pty. Ltd. | Information security method and system |
US7168093B2 (en) | 2001-01-25 | 2007-01-23 | Solutionary, Inc. | Method and apparatus for verifying the integrity and security of computer networks and implementation of counter measures |
US7171443B2 (en) | 2001-04-04 | 2007-01-30 | Prodigy Communications, Lp | Method, system, and software for transmission of information |
WO2002093393A1 (en) | 2001-05-11 | 2002-11-21 | Sap Portals, Inc. | Browser with messaging capability and other persistent connections |
US7114160B2 (en) | 2002-04-17 | 2006-09-26 | Sbc Technology Resources, Inc. | Web content customization via adaptation Web services |
US9009084B2 (en) | 2002-10-21 | 2015-04-14 | Rockwell Automation Technologies, Inc. | System and methodology providing automation security analysis and network intrusion protection in an industrial environment |
US7685631B1 (en) | 2003-02-05 | 2010-03-23 | Microsoft Corporation | Authentication of a server by a client to prevent fraudulent user interfaces |
US7333072B2 (en) | 2003-03-24 | 2008-02-19 | Semiconductor Energy Laboratory Co., Ltd. | Thin film integrated circuit device |
US7631256B2 (en) | 2003-05-16 | 2009-12-08 | Fujifilm Corporation | Web page display system, and image server and method of controlling the same |
US20050010764A1 (en) | 2003-06-26 | 2005-01-13 | International Business Machines Corporation | System and method for securely transmitting, and improving the transmission of, tag based protocol files containing proprietary information |
US7225737B2 (en) | 2003-12-09 | 2007-06-05 | Kodak Graphic Communications Canada Company | Method for automated platemaking |
US7705829B1 (en) | 2004-04-23 | 2010-04-27 | F5 Networks, Inc. | System and method for providing computer input |
US7475341B2 (en) | 2004-06-15 | 2009-01-06 | At&T Intellectual Property I, L.P. | Converting the format of a portion of an electronic document |
US8661420B2 (en) | 2004-08-03 | 2014-02-25 | Oracle International Corporation | System and method for runtime interface versioning |
US7480385B2 (en) | 2004-11-05 | 2009-01-20 | Cable Television Laboratories, Inc. | Hierarchical encryption key system for securing digital media |
US20060156278A1 (en) | 2004-11-18 | 2006-07-13 | Reager Sue E | Global localization and customization system and process |
US8850565B2 (en) | 2005-01-10 | 2014-09-30 | Hewlett-Packard Development Company, L.P. | System and method for coordinating network incident response activities |
US8086756B2 (en) | 2006-01-25 | 2011-12-27 | Cisco Technology, Inc. | Methods and apparatus for web content transformation and delivery |
US8407482B2 (en) | 2006-03-31 | 2013-03-26 | Avaya Inc. | User session dependent URL masking |
WO2008088073A1 (en) | 2007-01-18 | 2008-07-24 | Panasonic Corporation | Obfuscation assisting apparatus |
US20080244078A1 (en) | 2007-03-26 | 2008-10-02 | Pieter Viljoen | Web services intermediary |
CN101276362B (en) | 2007-03-26 | 2011-05-11 | 国际商业机器公司 | Apparatus and method for customizing web page |
US8510431B2 (en) | 2007-07-13 | 2013-08-13 | Front Porch, Inc. | Method and apparatus for internet traffic monitoring by third parties using monitoring implements transmitted via piggybacking HTTP transactions |
MX2010001549A (en) | 2007-08-06 | 2010-09-07 | Bernard De Monseignat | System and method for authentication, data transfer, and protection against phishing. |
US8676273B1 (en) | 2007-08-24 | 2014-03-18 | Iwao Fujisaki | Communication device |
US8689330B2 (en) | 2007-09-05 | 2014-04-01 | Yahoo! Inc. | Instant messaging malware protection |
HUE044989T2 (en) | 2007-09-07 | 2019-12-30 | Dis Ent Llc | Software based multi-channel polymorphic data obfuscation |
US7941382B2 (en) | 2007-10-12 | 2011-05-10 | Microsoft Corporation | Method of classifying and active learning that ranks entries based on multiple scores, presents entries to human analysts, and detects and/or prevents malicious behavior |
US9509714B2 (en) | 2014-05-22 | 2016-11-29 | Cabara Software Ltd. | Web page and web browser protection against malicious injections |
US20090192848A1 (en) | 2008-01-30 | 2009-07-30 | Gerald Rea | Method and apparatus for workforce assessment |
US9317255B2 (en) | 2008-03-28 | 2016-04-19 | Microsoft Technology Licensing, LCC | Automatic code transformation with state transformer monads |
US9405555B2 (en) | 2008-05-23 | 2016-08-02 | Microsoft Technology Licensing, Llc | Automated code splitting and pre-fetching for improving responsiveness of browser-based applications |
US8413061B2 (en) | 2008-08-05 | 2013-04-02 | Accenture Global Services Limited | Synchronous to asynchronous web page conversion |
US8271536B2 (en) | 2008-11-14 | 2012-09-18 | Microsoft Corporation | Multi-tenancy using suite of authorization manager components |
US20100235636A1 (en) | 2009-03-12 | 2010-09-16 | Postalguard Ltd. | Method for delivering web content and applications to the user via email or other communication channels |
AU2010223925A1 (en) | 2009-03-13 | 2011-11-03 | Rutgers, The State University Of New Jersey | Systems and methods for the detection of malware |
US20100240449A1 (en) | 2009-03-19 | 2010-09-23 | Guy Corem | System and method for controlling usage of executable code |
KR101302135B1 (en) | 2009-11-30 | 2013-09-16 | 한국전자통신연구원 | Method and apparetus for encoding/decoding partial of data |
US8640216B2 (en) * | 2009-12-23 | 2014-01-28 | Citrix Systems, Inc. | Systems and methods for cross site forgery protection |
CA2694326A1 (en) | 2010-03-10 | 2010-05-18 | Ibm Canada Limited - Ibm Canada Limitee | A method and system for preventing cross-site request forgery attacks on a server |
US8850219B2 (en) | 2010-05-13 | 2014-09-30 | Salesforce.Com, Inc. | Secure communications |
US9594886B2 (en) | 2010-06-02 | 2017-03-14 | Avaya Inc. | Application and open source information technology policy filter |
US8762451B2 (en) | 2010-09-03 | 2014-06-24 | Visa International Service Association | System and method for custom service markets |
US8671385B2 (en) | 2011-01-07 | 2014-03-11 | Mastercard International Incorporated | Methods and systems for throttling calls to a service application through an open API |
US8667565B2 (en) | 2011-02-18 | 2014-03-04 | Microsoft Corporation | Security restructuring for web media |
US8555385B1 (en) | 2011-03-14 | 2013-10-08 | Symantec Corporation | Techniques for behavior based malware analysis |
US8640112B2 (en) | 2011-03-30 | 2014-01-28 | National Instruments Corporation | Vectorizing combinations of program operations |
US8732571B2 (en) | 2011-03-31 | 2014-05-20 | Google Inc. | Methods and systems for generating and displaying a preview image of a content area |
US8555388B1 (en) | 2011-05-24 | 2013-10-08 | Palo Alto Networks, Inc. | Heuristic botnet detection |
US8904279B1 (en) | 2011-12-07 | 2014-12-02 | Amazon Technologies, Inc. | Inhibiting automated extraction of data from network pages |
US9158893B2 (en) | 2012-02-17 | 2015-10-13 | Shape Security, Inc. | System for finding code in a data flow |
US8661549B2 (en) | 2012-03-02 | 2014-02-25 | Apple Inc. | Method and apparatus for obfuscating program source codes |
US20140089786A1 (en) | 2012-06-01 | 2014-03-27 | Atiq Hashmi | Automated Processor For Web Content To Mobile-Optimized Content Transformation |
US9165125B2 (en) | 2012-06-13 | 2015-10-20 | Mobilextension Inc. | Distribution of dynamic structured content |
US8595613B1 (en) | 2012-07-26 | 2013-11-26 | Viasat Inc. | Page element identifier pre-classification for user interface behavior in a communications system |
US8839424B2 (en) * | 2012-11-15 | 2014-09-16 | Robert Hansen | Cross-site request forgery protection |
US8806627B1 (en) | 2012-12-17 | 2014-08-12 | Emc Corporation | Content randomization for thwarting malicious software attacks |
US8869281B2 (en) | 2013-03-15 | 2014-10-21 | Shape Security, Inc. | Protecting against the introduction of alien content |
US20140283038A1 (en) | 2013-03-15 | 2014-09-18 | Shape Security Inc. | Safe Intelligent Content Modification |
US9225737B2 (en) | 2013-03-15 | 2015-12-29 | Shape Security, Inc. | Detecting the introduction of alien content |
US9729514B2 (en) | 2013-03-22 | 2017-08-08 | Robert K Lemaster | Method and system of a secure access gateway |
US9128723B2 (en) | 2013-05-28 | 2015-09-08 | Adobe Systems Incorporated | Method and apparatus for dynamic document object model (DOM) aware code editing |
US10320628B2 (en) | 2013-06-19 | 2019-06-11 | Citrix Systems, Inc. | Confidence scoring of device reputation based on characteristic network behavior |
US9549036B2 (en) | 2013-11-20 | 2017-01-17 | Empire Technology Development Llc | Network injected storage redirection for embedded applications |
US9294502B1 (en) | 2013-12-06 | 2016-03-22 | Radware, Ltd. | Method and system for detection of malicious bots |
US9270647B2 (en) | 2013-12-06 | 2016-02-23 | Shape Security, Inc. | Client/server security by an intermediary rendering modified in-memory objects |
US8954583B1 (en) | 2014-01-20 | 2015-02-10 | Shape Security, Inc. | Intercepting and supervising calls to transformed operations and objects |
US9225729B1 (en) | 2014-01-21 | 2015-12-29 | Shape Security, Inc. | Blind hash compression |
US9241004B1 (en) | 2014-03-11 | 2016-01-19 | Trend Micro Incorporated | Alteration of web documents for protection against web-injection attacks |
US20160212101A1 (en) | 2014-03-12 | 2016-07-21 | Instart Logic, Inc. | Protecting content integrity |
US9405910B2 (en) | 2014-06-02 | 2016-08-02 | Shape Security, Inc. | Automatic library detection |
US9075990B1 (en) | 2014-07-01 | 2015-07-07 | Shape Security, Inc. | Reliable selection of security countermeasures |
US9003511B1 (en) | 2014-07-22 | 2015-04-07 | Shape Security, Inc. | Polymorphic security policy action |
GB201415860D0 (en) | 2014-09-08 | 2014-10-22 | User Replay Ltd | Systems and methods for recording and recreating interactive user-sessions involving an on-line server |
US9438625B1 (en) | 2014-09-09 | 2016-09-06 | Shape Security, Inc. | Mitigating scripted attacks using dynamic polymorphism |
US9602543B2 (en) | 2014-09-09 | 2017-03-21 | Shape Security, Inc. | Client/server polymorphism using polymorphic hooks |
US9716726B2 (en) | 2014-11-13 | 2017-07-25 | Cleafy S.r.l. | Method of identifying and counteracting internet attacks |
US9544318B2 (en) | 2014-12-23 | 2017-01-10 | Mcafee, Inc. | HTML security gateway |
US20160241560A1 (en) * | 2015-02-13 | 2016-08-18 | Instart Logic, Inc. | Client-site dom api access control |
US9813440B1 (en) | 2015-05-15 | 2017-11-07 | Shape Security, Inc. | Polymorphic treatment of annotated content |
US10230718B2 (en) | 2015-07-07 | 2019-03-12 | Shape Security, Inc. | Split serving of computer code |
US9807113B2 (en) | 2015-08-31 | 2017-10-31 | Shape Security, Inc. | Polymorphic obfuscation of executable code |
US20170118241A1 (en) | 2015-10-26 | 2017-04-27 | Shape Security, Inc. | Multi-Layer Computer Security Countermeasures |
-
2013
- 2013-12-06 US US14/099,437 patent/US9270647B2/en not_active Expired - Fee Related
-
2014
- 2014-02-07 US US14/175,923 patent/US8892687B1/en active Active
- 2014-12-02 CA CA2930708A patent/CA2930708A1/en not_active Abandoned
- 2014-12-02 WO PCT/US2014/068133 patent/WO2015084833A1/en active Application Filing
- 2014-12-02 AU AU2014360734A patent/AU2014360734A1/en not_active Abandoned
- 2014-12-02 EP EP14821930.6A patent/EP3078178A1/en not_active Withdrawn
-
2015
- 2015-10-30 US US14/929,019 patent/US10027628B2/en active Active
-
2018
- 2018-06-29 US US16/024,621 patent/US11088995B2/en active Active
Patent Citations (113)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5003596A (en) | 1989-08-17 | 1991-03-26 | Cryptech, Inc. | Method of cryptographically transforming electronic digital data from one form to another |
US5315657A (en) | 1990-09-28 | 1994-05-24 | Digital Equipment Corporation | Compound principals in access control lists |
US20110022846A1 (en) | 1995-02-13 | 2011-01-27 | Intertrust Technologies Corp. | Systems and Methods for Secure Transaction Management and Electronic Rights Protection |
US6006328A (en) | 1995-07-14 | 1999-12-21 | Christopher N. Drake | Computer software authentication, protection, and security system |
US5987611A (en) | 1996-12-31 | 1999-11-16 | Zone Labs, Inc. | System and methodology for managing internet access on a per application basis for client computers connected to the internet |
WO1999064967A1 (en) | 1998-06-12 | 1999-12-16 | Telefonaktiebolaget Lm Ericsson (Publ) | A method and a system for transmitting a cookie |
US6170020B1 (en) | 1998-06-30 | 2001-01-02 | Compaq Computer Corporation | Reservation and dynamic allocation of resources for sole use of docking peripheral device |
WO2000072119A2 (en) | 1999-05-05 | 2000-11-30 | Rabin Michael O | Methods and apparatus for protecting information |
US6401077B1 (en) | 1999-05-28 | 2002-06-04 | Network Commerce, Inc. | Method and system for providing additional behavior through a web page |
US20040249938A1 (en) | 2000-06-28 | 2004-12-09 | Bunch Clinton D. | System and method for monitoring access to a network by a computer |
US6938170B1 (en) | 2000-07-17 | 2005-08-30 | International Business Machines Corporation | System and method for preventing automated crawler access to web-based data sources using a dynamic data transcoding scheme |
US20070011295A1 (en) | 2000-07-28 | 2007-01-11 | Axeda Corporation, A Massachusetts Corporation | Reporting the state of an apparatus to a remote computer |
WO2002088951A1 (en) | 2001-04-26 | 2002-11-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Stateless server |
WO2002093369A1 (en) | 2001-05-16 | 2002-11-21 | Softricity, Inc. | Operating system abstraction and protection layer |
US20040101142A1 (en) | 2001-07-05 | 2004-05-27 | Nasypny Vladimir Vladimirovich | Method and system for an integrated protection system of data distributed processing in computer networks and system for carrying out said method |
US7103180B1 (en) | 2001-10-25 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | Method of implementing the data encryption standard with reduced computation |
US7180895B2 (en) | 2001-12-31 | 2007-02-20 | 3Com Corporation | System and method for classifying network packets with packet content |
US20030159063A1 (en) | 2002-02-07 | 2003-08-21 | Larry Apfelbaum | Automated security threat testing of web pages |
US20040162994A1 (en) | 2002-05-13 | 2004-08-19 | Sandia National Laboratories | Method and apparatus for configurable communication network defenses |
US7117429B2 (en) | 2002-06-12 | 2006-10-03 | Oracle International Corporation | Methods and systems for managing styles electronic documents |
US7464326B2 (en) | 2002-10-17 | 2008-12-09 | Nec Corporation | Apparatus, method, and computer program product for checking hypertext |
US7500099B1 (en) | 2003-05-16 | 2009-03-03 | Microsoft Corporation | Method for mitigating web-based “one-click” attacks |
US8533480B2 (en) | 2003-05-16 | 2013-09-10 | Adobe Systems Incorporated | Document modification detection and prevention |
WO2004109532A1 (en) | 2003-06-05 | 2004-12-16 | Cubicice (Pty) Ltd | A method of collecting data regarding a plurality of web pages visited by at least one user |
US7961879B1 (en) | 2003-06-25 | 2011-06-14 | Voltage Security, Inc. | Identity-based-encryption system with hidden public key attributes |
US7580521B1 (en) | 2003-06-25 | 2009-08-25 | Voltage Security, Inc. | Identity-based-encryption system with hidden public key attributes |
US20060015941A1 (en) | 2004-07-13 | 2006-01-19 | Mckenna John J | Methods, computer program products and data structures for intrusion detection, intrusion response and vulnerability remediation across target computer systems |
US8077861B2 (en) | 2004-08-12 | 2011-12-13 | Cmla, Llc | Permutation data transform to enhance security |
US20060034455A1 (en) | 2004-08-12 | 2006-02-16 | Damgaard Ivan B | Permutation data transform to enhance security |
US20060053295A1 (en) | 2004-08-24 | 2006-03-09 | Bharath Madhusudan | Methods and systems for content detection in a reconfigurable hardware |
US20060195588A1 (en) | 2005-01-25 | 2006-08-31 | Whitehat Security, Inc. | System for detecting vulnerabilities in web applications using client-side application interfaces |
US7707223B2 (en) | 2005-04-28 | 2010-04-27 | Cisco Technology, Inc. | Client-side java content transformation |
US20100172494A1 (en) | 2005-08-01 | 2010-07-08 | Kevin Martin Henson | Encrypting a plaintext message with authenticaion |
US20080025496A1 (en) | 2005-08-01 | 2008-01-31 | Asier Technology Corporation, A Delaware Corporation | Encrypting a plaintext message with authentication |
US20100131512A1 (en) | 2005-08-02 | 2010-05-27 | Ron Ben-Natan | System and methods for selective local database access restriction |
US20070064617A1 (en) | 2005-09-15 | 2007-03-22 | Reves Joseph P | Traffic anomaly analysis for the detection of aberrant network code |
US20070074227A1 (en) | 2005-09-26 | 2007-03-29 | Bea Systems, Inc. | Interceptor method and system for web services for remote portlets |
US8170020B2 (en) | 2005-12-08 | 2012-05-01 | Microsoft Corporation | Leveraging active firewalls for network intrusion detection and retardation of attack |
US8601064B1 (en) | 2006-04-28 | 2013-12-03 | Trend Micro Incorporated | Techniques for defending an email system against malicious sources |
US20080229394A1 (en) | 2006-07-10 | 2008-09-18 | Sci Group | Method and System For Securely Protecting Data During Software Application Usage |
US20090282062A1 (en) | 2006-10-19 | 2009-11-12 | Dovetail Software Corporation Limited | Data protection and management |
GB2443093A (en) | 2006-10-19 | 2008-04-23 | Dovetail Software Corp Ltd | Insertion of extraneous characters into requested data to affect pattern recognition processes e.g. webscraping |
US7940657B2 (en) | 2006-12-01 | 2011-05-10 | Sonus Networks, Inc. | Identifying attackers on a network |
US20090254572A1 (en) | 2007-01-05 | 2009-10-08 | Redlich Ron M | Digital information infrastructure and method |
WO2008095031A1 (en) | 2007-01-30 | 2008-08-07 | Google, Inc. | Probabilistic inference of site demographics from aggregate user internet usage and source demographic information |
WO2008095018A2 (en) | 2007-01-31 | 2008-08-07 | Omniture, Inc. | Page grouping for site traffic analysis reports |
US20080222736A1 (en) | 2007-03-07 | 2008-09-11 | Trusteer Ltd. | Scrambling HTML to prevent CSRF attacks and transactional crimeware attacks |
WO2008130946A2 (en) | 2007-04-17 | 2008-10-30 | Kenneth Tola | Unobtrusive methods and systems for collecting information transmitted over a network |
US7895653B2 (en) | 2007-05-31 | 2011-02-22 | International Business Machines Corporation | Internet robot detection for network distributable markup |
US20080320567A1 (en) | 2007-06-20 | 2008-12-25 | Imperva, Inc. | System and method for preventing web frauds committed using client-scripting attacks |
US20100235637A1 (en) | 2007-06-22 | 2010-09-16 | Gemalto, Sa | Method of Preventing Web Browser Extensions from Hijacking User Information |
US20090007243A1 (en) | 2007-06-27 | 2009-01-01 | Trusteer Ltd. | Method for rendering password theft ineffective |
US7975308B1 (en) | 2007-09-28 | 2011-07-05 | Symantec Corporation | Method and apparatus to secure user confidential data from untrusted browser extensions |
US8266202B1 (en) | 2007-11-21 | 2012-09-11 | Appcelerator, Inc. | System and method for auto-generating JavaScript proxies and meta-proxies |
US8347396B2 (en) | 2007-11-30 | 2013-01-01 | International Business Machines Corporation | Protect sensitive content for human-only consumption |
CN101471818A (en) | 2007-12-24 | 2009-07-01 | 北京启明星辰信息技术股份有限公司 | Detection method and system for malevolence injection script web page |
US20090193497A1 (en) | 2008-01-25 | 2009-07-30 | Haruka Kikuchi | Method and apparatus for constructing security policies for web content instrumentation against browser-based attacks |
US20090193513A1 (en) | 2008-01-26 | 2009-07-30 | Puneet Agarwal | Policy driven fine grain url encoding mechanism for ssl vpn clientless access |
US20090241174A1 (en) | 2008-02-19 | 2009-09-24 | Guru Rajan | Handling Human Detection for Devices Connected Over a Network |
US20110154021A1 (en) | 2008-05-05 | 2011-06-23 | Netsecure Innovations Inc. | Apparatus and method to prevent man in the middle attack |
US8584233B1 (en) | 2008-05-05 | 2013-11-12 | Trend Micro Inc. | Providing malware-free web content to end users using dynamic templates |
US20090292984A1 (en) | 2008-05-21 | 2009-11-26 | Frederic Bauchot | Method and system to selectively secure the display of advertisements on web browsers |
US8086957B2 (en) | 2008-05-21 | 2011-12-27 | International Business Machines Corporation | Method and system to selectively secure the display of advertisements on web browsers |
US20100235910A1 (en) | 2008-05-22 | 2010-09-16 | Young Bae Ku | Systems and methods for detecting false code |
US8762705B2 (en) | 2008-07-24 | 2014-06-24 | Alibaba Group Holding Limited | System and method for preventing web crawler access |
US20100083072A1 (en) | 2008-09-30 | 2010-04-01 | Freescale Semiconductor, Inc. | Data interleaver |
US8020193B2 (en) | 2008-10-20 | 2011-09-13 | International Business Machines Corporation | Systems and methods for protecting web based applications from cross site request forgery attacks |
WO2010046314A1 (en) * | 2008-10-23 | 2010-04-29 | Xmos Ltd | Software development environment |
US8516080B2 (en) | 2008-12-03 | 2013-08-20 | Mobophiles, Inc. | System and method for providing virtual web access |
US8225401B2 (en) | 2008-12-18 | 2012-07-17 | Symantec Corporation | Methods and systems for detecting man-in-the-browser attacks |
US8548998B2 (en) | 2009-01-13 | 2013-10-01 | Aorato Ltd. | Methods and systems for securing and protecting repositories and directories |
US20100186089A1 (en) | 2009-01-22 | 2010-07-22 | International Business Machines Corporation | Method and system for protecting cross-domain interaction of a web application on an unmodified browser |
US20120011262A1 (en) | 2009-02-17 | 2012-01-12 | Alibaba Group Holding Limited | Method and System of Processing Cookies Across Domains |
US20100262780A1 (en) | 2009-03-31 | 2010-10-14 | Mahan Michael P | Apparatus and methods for rendering a page |
US20110047169A1 (en) | 2009-04-24 | 2011-02-24 | Bonnie Berger Leighton | Intelligent search tool for answering clinical queries |
US8332952B2 (en) | 2009-05-22 | 2012-12-11 | Microsoft Corporation | Time window based canary solutions for browser security |
US8527774B2 (en) | 2009-05-28 | 2013-09-03 | Kaazing Corporation | System and methods for providing stateless security management for web applications using non-HTTP communications protocols |
US20110015917A1 (en) | 2009-07-17 | 2011-01-20 | Pei Wang | Browser emulator system |
US20130232234A1 (en) | 2009-10-23 | 2013-09-05 | Ajay Kapur | Dynamically rehosting web content |
US20110107077A1 (en) | 2009-11-05 | 2011-05-05 | International Business Machines Corporation | Obscuring form data through obfuscation |
US20110131416A1 (en) | 2009-11-30 | 2011-06-02 | James Paul Schneider | Multifactor validation of requests to thw art dynamic cross-site attacks |
US20110178973A1 (en) | 2010-01-20 | 2011-07-21 | Microsoft Corporation | Web Content Rewriting, Including Responses |
US8627479B2 (en) | 2010-03-01 | 2014-01-07 | Emc Corporation | System and method for network security including detection of attacks through partner websites |
US20110239113A1 (en) | 2010-03-25 | 2011-09-29 | Colin Hung | Systems and methods for redacting sensitive data entries |
US8266243B1 (en) | 2010-03-30 | 2012-09-11 | Amazon Technologies, Inc. | Feedback mechanisms providing contextual information |
US20120022942A1 (en) | 2010-04-01 | 2012-01-26 | Lee Hahn Holloway | Internet-based proxy service to modify internet responses |
US20120117649A1 (en) | 2010-04-01 | 2012-05-10 | Lee Hahn Holloway | Internet-based proxy security services |
US20130219256A1 (en) | 2010-04-12 | 2013-08-22 | Google Inc. | Scrolling in large hosted data set |
US20110255689A1 (en) | 2010-04-15 | 2011-10-20 | Lsi Corporation | Multiple-mode cryptographic module usable with memory controllers |
US20110296391A1 (en) | 2010-05-28 | 2011-12-01 | Albrecht Gass | Systems and Methods for Dynamically Replacing Code Objects Via Conditional Pattern Templates |
US20120023394A1 (en) | 2010-07-22 | 2012-01-26 | International Business Machines Corporation | Method and apparatus for context-aware output escaping using dynamic content marking |
US20120030248A1 (en) | 2010-07-30 | 2012-02-02 | Blinnikka Tomi J | Highly reliable cross-session web application instrumentation |
US20120255006A1 (en) | 2010-08-25 | 2012-10-04 | International Business Machines Corporation | Two-tier deep analysis of html traffic |
US20150039962A1 (en) | 2010-09-10 | 2015-02-05 | John P. Fonseka | Methods, apparatus, and systems for coding with constrained interleaving |
US20120124372A1 (en) | 2010-10-13 | 2012-05-17 | Akamai Technologies, Inc. | Protecting Websites and Website Users By Obscuring URLs |
US20120096116A1 (en) | 2010-10-15 | 2012-04-19 | Alan Mislove | Content distribution network using a web browser and locally stored content to directly exchange content between users |
US20120173870A1 (en) | 2010-12-29 | 2012-07-05 | Anoop Reddy | Systems and Methods for Multi-Level Tagging of Encrypted Items for Additional Security and Efficient Encrypted Item Determination |
US20120174225A1 (en) | 2010-12-30 | 2012-07-05 | Verisign, Inc. | Systems and Methods for Malware Detection and Scanning |
US20120173699A1 (en) | 2011-01-05 | 2012-07-05 | F-Secure Corporation | Controlling access to web content |
US20120198528A1 (en) | 2011-02-01 | 2012-08-02 | Symbiotic Technologise Pty Ltd | Methods and systems to detect attacks on internet transactions |
US20140189499A1 (en) | 2011-07-19 | 2014-07-03 | Amazon Technologies, Inc. | Obscuring digital content items |
US8392576B1 (en) | 2011-09-26 | 2013-03-05 | Google Inc. | Browser based redirection of broken links |
US20130091582A1 (en) | 2011-10-08 | 2013-04-11 | Broadcom Corporation | Content security in a social network |
WO2013091709A1 (en) | 2011-12-22 | 2013-06-27 | Fundació Privada Barcelona Digital Centre Tecnologic | Method and apparatus for real-time dynamic transformation of the code of a web document |
US20130198607A1 (en) | 2012-01-31 | 2013-08-01 | Openwave Systems Inc. | Systems and methods for modifying webpage data |
US20130227397A1 (en) | 2012-02-24 | 2013-08-29 | Microsoft Corporation | Forming an instrumented text source document for generating a live web page |
US20130263264A1 (en) | 2012-04-02 | 2013-10-03 | Trusteer Ltd. | Detection of phishing attempts |
US20140053059A1 (en) | 2012-08-16 | 2014-02-20 | Qualcomm Incorporated | Pre-processing of scripts in web browsers |
US20140165197A1 (en) | 2012-12-06 | 2014-06-12 | Empire Technology Development, Llc | Malware attack prevention using block code permutation |
US20140223290A1 (en) | 2013-02-01 | 2014-08-07 | Qualcomm Incorporated | Creating a transposed document defined by transposed markup language including transposed text |
US20140282872A1 (en) | 2013-03-15 | 2014-09-18 | Shape Security Inc. | Stateless web content anti-automation |
US20140281535A1 (en) | 2013-03-15 | 2014-09-18 | Munibonsoftware.com, LLC | Apparatus and Method for Preventing Information from Being Extracted from a Webpage |
US20150067853A1 (en) | 2013-08-27 | 2015-03-05 | Georgia Tech Research Corporation | Systems and methods for detecting malicious mobile webpages |
Non-Patent Citations (47)
Title |
---|
Anderson et al., "Measuring the Cost of Cybercrime," 2012 Workshop on the Economics of Information Security (WEIS), [retrieved on Oct. 15, 2013]. Retrieved from the Internet: <URL: http://web.archive.org/web/20130623080604/http://weis2012.econinfosec.org/papers/Anderson-WEIS2012.pdf>, 31 pages , Jun. 2012. |
Claims in European Application No. PCT/US2014/068133, dated Apr. 2015, 16 pages. |
CodeSealer, "CodeSealer," codesealer.com [online] 2013 [captured Aug. 29, 2013]. Retrieved from the Internet: , 2 pages. |
CodeSealer, "CodeSealer," codesealer.com [online] 2013 [captured Aug. 29, 2013]. Retrieved from the Internet: <URL:http://web.archive.org/web/20130829165031/http://codesealer.com/technology.html>, 2 pages. |
Cova et al., "Detection and Analysis of Drive-by-Download Attacks and Malicious JavaScript Code," World Wide Web Conference Committee, Apr. 26-30, 2010. Retrieved from the Internet: <URL: http://www.cs.ucsb.edu/~vigna/publications/2010-cova-kruegel-vigna Wepawet.pdf>, 10 pages. |
Cova et al., "Detection and Analysis of Drive-by-Download Attacks and Malicious JavaScript Code," World Wide Web Conference Committee, Apr. 26-30, 2010. Retrieved from the Internet: <URL: http://www.cs.ucsb.edu/˜vigna/publications/2010-cova-kruegel-vigna Wepawet.pdf>, 10 pages. |
Egele et al., "Defending Browsers against Drive-by Downloads: Mitigating Heap-spraying Code Injection Attacks," Detection of Intrusions and Malware, and Vulnerability Assessment Lecture Notes in Computer Science, 5587:88-106. Retrieved from the Internet: , 19 pages, 2009. |
Egele et al., "Defending Browsers against Drive-by Downloads: Mitigating Heap-spraying Code Injection Attacks," Detection of Intrusions and Malware, and Vulnerability Assessment Lecture Notes in Computer Science, 5587:88-106. Retrieved from the Internet: <URL: http://anubis.seclab.tuwien.ac.at/papers/driveby.pdf>, 19 pages, 2009. |
Entrust, "Defeating Man-in-the-Browser Malware," Entrust.com [online] Sep. 2012 [retrieved Oct. 15, 2013]. Retrieved from the Internet: , 18 pages. |
Entrust, "Defeating Man-in-the-Browser Malware," Entrust.com [online] Sep. 2012 [retrieved Oct. 15, 2013]. Retrieved from the Internet: <URL: http://download.entrust.com/resources/download.cfm/24002/>, 18 pages. |
European Patent Office in application No. PCT/US2014/068133, dated Apr. 7, 2015, 14 pages. |
European Patent Office, "Search Report" in application No. PCT/US2015/031361, dated Jul. 28, 2015, 13 pages. |
European Patent Office, "Search Report"in application No. PCT/US2014/023635, dated Jan. 21, 2015, 11 pages. |
Google Search, "Google Patents Search Results" dated May 21, 2014, 2 pages. |
International Searching Authority, "Search Report" in application No. PCT/2014/023897, dated Jul. 18, 2014, 15 pages. |
International Searching Authority, "Search Report" in application No. PCT/2014/027805, dated Aug. 14, 2014, 14 pages. |
International Searching Authority, "Search Report" in application No. PCT/2014/027805, dated Aug. 18, 2014, 14 pages. |
International Searching Authority, "Search Report" in application No. PCT/US15,12072, dated Jan. 20, 2015, 14 pages. |
International Searching Authority, "Search Report" in application No. PCT/US2014/024232, dated Aug. 1, 2014, 52 pages. |
IP.com, "Search Results", Patents and Applications, http://ip/com/search/results.html, dated May 6, 2014, 2 pages. |
Krebs on Security, In-depth security news and investigation, "A Closer Look at Rapport from Trusteer", dated Apr. 29, 2010, http://krebsonsecurity.com/2010/04/a-closer-look-at-rapport-from-trusteer/, last accessed on Jan. 9, 2014, 16 pages. |
Li et al., "WebShield: Enabling Various Web Defense Techniques Without Client Side Modifications", dated Aug. 15, 2009, 18 pages. |
Marcus and Sherstobitoff, "Dissecting Operation High Roller," McAfee [online] 2012 [retrieved on Oct. 15, 2013]. Retrieved from the Internet: , 20 pages. |
Marcus and Sherstobitoff, "Dissecting Operation High Roller," McAfee [online] 2012 [retrieved on Oct. 15, 2013]. Retrieved from the Internet: <URL: http://www.mcafee.com/us/resources/reports/rp-operation-high-roller.pdf>, 20 pages. |
Matsunaka et al., "Detecting and Preventing Drive-By Download Attack via Participative Monitoriing of the Web", Information Security, dated Jul. 26, 2013, 8th Asia Joint Conference, pp. 48-55. |
Oh, "Recent Java exploitation trends and malware," Black Hat USA 2012, Retrieved from the Internet: <URL: https://media.blackhat.com/bh-us-12/Briefings/Oh/BH-US-12-Oh-Recent-Java-Exploitation-Trends-and Malware-WP.pdf>, 27 pages. |
Pattabiraman et al., "DoDOM: Leveraging DOM Invariants for Web 2.0 Application Robustness Testing" dated 2010, IEEE, 10 pages. |
Rieck et al., "Cujo: Efficient Detection and Prevention of Drive-by-Download Attacks", ACSAC, Dated Dec. 2010, 9 pages. |
RSA, "RSA Offers Advanced Solutions to Help Combat Man-In-The-Browser Attacks," rsa.com [online] May 18, 2010 [captured Nov. 11, 2011]. Retrieved from the Internet: , 3 pages. |
RSA, "RSA Offers Advanced Solutions to Help Combat Man-In-The-Browser Attacks," rsa.com [online] May 18, 2010 [captured Nov. 11, 2011]. Retrieved from the Internet: <URL: http://web.archive.org/web/20111111123108/http://rsa.com/press-release.aspx?id=10943>, 3 pages. |
Rutkowska, "Rootkits vs. Stealth by Design Malware," Black Hat Europe, 2006. Retrieved from the Internet: <URL:http://www.blackhat.com/presentations/bh-europe-06/bh-eu-06-Rutkowska.pdf> 44 pages. |
Rutkowska, "Rootkits vs. Stealth by Design Malware," Black Hat Europe, 2006. Retrieved from the Internet: 44 pages. |
SafeNet, "Prevent Financial Fraud and Man-in-the-Browser Attacks," safenet-inc.com [online] [retrieved on Oct. 15, 2013]. Retrieved from the Internet: <URL: http://www.safenet-inc.com/solutions/data-protection/financialservices/financial-fraud-man-in-the-browser-attacks/>, 5 pages. |
Sood and Enbody, "A Browser Malware Taxonomy," Virus Bulletin, Jun. 2011. Retrieved from the Internet: , 5 pages. |
Sood and Enbody, "A Browser Malware Taxonomy," Virus Bulletin, Jun. 2011. Retrieved from the Internet: <URL:http://www.secniche.org/released/VB-BRW-MAL-TAX-AKS-RJE.pdf>, 5 pages. |
Sood and Enbody, "Browser Exploit Packs-Exploitation Tactics," Virus Bulletin Conference, Oct. 2011, Retrieved from the Internet: <URL: http://www.secniche.org/papers/VB-2011-BRW-EXP-PACKS-AKS-RJE.pdf>, 9 pages. |
Sood et al., "The Art of Stealing Banking Information-Form grabbing on Fire," Virus Bulletin, Nov. 2011, Retrieved from the Internet: , "(pp. 19-23 of 24 pages)". |
Sood et al., "The Art of Stealing Banking Information-Form grabbing on Fire," Virus Bulletin, Nov. 2011, Retrieved from the Internet: <URL: http://www.virusbtn.com/virusbulletin/archive/2011/11/vb201111-form-grabbing>, "(pp. 19-23 of 24 pages)". |
Soroush Sedaghat, Josef Pieprzyk, Ehsan Vossough; "On-the-fly web content integrity check boosts users' confidence"; Nov. 2002; Communications of the ACM , vol. 45 Issue 11; Publisher: ACM; pp. 33-37. * |
Team Cymru, "Cybercrime-an Epidemic," Queue, 4(9):24-35, Nov. 2006, Retrieved from the Internet: <URL: http://trygstad.rice.iit.edu:8000/Articles/Cybercrime%20-%20An%20Epidemic%20-%20ACM%20Queue.pdf>, 3 pages. |
Trusteer, "Trusteer Rapport", "Endpoint-centric Fraud Prevention", from the web http://www.trusteer.com/products/trusteer-rapport, last accessed on Jan. 9, 2013, 2 pages. |
U.S. Appl. No. 14/175,923, filed Feb. 7, 2014, Notice of Allowability, Sep. 11, 2014. |
U.S. Appl. No. 14/290,805, filed May 29, 2014, Office Action, Sep. 5, 2014. |
U.S. Appl. No. 14/481,835, filed Sep. 9, 2014, Office Action, mailing date Oct. 28, 2015. |
U.S. Appl. No. 14/679,596, filed Apr. 6, 2015, Office Action, mailing date Nov. 4, 2015. |
U.S. Appl. No. 61/788,250, filed Mar. 15, 2013, mailing date Oct. 28, 2015. |
Vasco, "Hardened Browser," vasco.com [online] [retrieved on Oct. 15, 2013]. Retrieved from the Internet: <URL: http://www.vasco.com/products/client-products/pki-digipass/hardened-browser.aspx>, 2 pages. |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10958682B2 (en) | 2011-09-21 | 2021-03-23 | SunStone Information Defense Inc. | Methods and apparatus for varying soft information related to the display of hard information |
US11283833B2 (en) | 2011-09-21 | 2022-03-22 | SunStone Information Defense Inc. | Methods and apparatus for detecting a presence of a malicious application |
US11943255B2 (en) | 2011-09-21 | 2024-03-26 | SunStone Information Defense, Inc. | Methods and apparatus for detecting a presence of a malicious application |
US20180121680A1 (en) * | 2014-05-23 | 2018-05-03 | Shape Security, Inc. | Obfuscating web code |
US20170315971A1 (en) * | 2014-10-06 | 2017-11-02 | Symmetric Co., Ltd. | Program for displaying webpage, terminal device, and server device |
US20160142428A1 (en) * | 2014-11-13 | 2016-05-19 | Nicolò Pastore | System and method for identifying internet attacks |
US11044268B2 (en) * | 2014-11-13 | 2021-06-22 | Nicolò Pastore | Systems and methods for identifying internet attacks |
US20180121667A1 (en) * | 2015-08-12 | 2018-05-03 | Workday, Inc. | Spreadsheet shared region and cell permissions |
US10482172B2 (en) * | 2015-08-12 | 2019-11-19 | Workday, Inc. | Spreadsheet shared region and cell permissions |
US10552530B1 (en) | 2015-08-12 | 2020-02-04 | Workday, Inc. | Spreadsheet shared region and cell formula templating |
US10572584B1 (en) | 2015-08-12 | 2020-02-25 | Workday, Inc. | Spreadsheet region and cell sharing |
US10789378B1 (en) | 2015-08-12 | 2020-09-29 | Workday, Inc. | User interface for region and cell sharing |
Also Published As
Publication number | Publication date |
---|---|
WO2015084833A1 (en) | 2015-06-11 |
US10027628B2 (en) | 2018-07-17 |
US8892687B1 (en) | 2014-11-18 |
US11088995B2 (en) | 2021-08-10 |
US20180309729A1 (en) | 2018-10-25 |
US20160057111A1 (en) | 2016-02-25 |
CA2930708A1 (en) | 2015-06-11 |
EP3078178A1 (en) | 2016-10-12 |
AU2014360734A1 (en) | 2016-06-09 |
US20150163201A1 (en) | 2015-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11088995B2 (en) | Client/server security by an intermediary rendering modified in-memory objects | |
US10798202B2 (en) | Security systems for mitigating attacks from a headless browser executing on a client computer | |
US10652275B2 (en) | Management of calls to transformed operations and objects | |
US11552936B2 (en) | Management of dynamic credentials | |
US9544329B2 (en) | Client/server security by an intermediary executing instructions received from a server and rendering client application instructions | |
US10868819B2 (en) | Systems for detecting a headless browser executing on a client computer | |
US20190182251A1 (en) | Count-based challenge-response credential pairs for client/server request validation | |
US9438625B1 (en) | Mitigating scripted attacks using dynamic polymorphism | |
US10708249B2 (en) | Challenge-dynamic credential pairs for client/server request validation | |
US11138463B1 (en) | Unsupervised and supervised machine learning approaches to detecting bots and other types of browsers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SHAPE SECURITY, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CALL, JUSTIN;REEL/FRAME:031735/0233 Effective date: 20131206 |
|
ZAAA | Notice of allowance and fees due |
Free format text: ORIGINAL CODE: NOA |
|
ZAAB | Notice of allowance mailed |
Free format text: ORIGINAL CODE: MN/=. |
|
ZAAA | Notice of allowance and fees due |
Free format text: ORIGINAL CODE: NOA |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
AS | Assignment |
Owner name: SILICON VALLEY BANK, CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:SHAPE SECURITY, INC.;REEL/FRAME:046243/0254 Effective date: 20180524 |
|
AS | Assignment |
Owner name: SHAPE SECURITY, INC., CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:SILICON VALLEY BANK;REEL/FRAME:048501/0115 Effective date: 20190226 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YR, SMALL ENTITY (ORIGINAL EVENT CODE: M2551); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |