IP Library Granted Patent US 9,411,958
Granted Patent B2
US 9,411,958 · App. 14/286,733 · Granted Aug 9, 2016

Polymorphic treatment of data entered at clients

Inventors: Xinran Wang (San Ramon, CA); Yao Zhao (Fremont, CA)
Assignee: Shape Security, Inc.
G06F21/556G06F17/243G06F21/14H04L63/14H04L63/0281H04L2463/144
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,411,958
App. No.
14/286,733
Granted
Aug 9, 2016
Kind
B2
Abstract

A computer-implemented method includes identifying, in web code to be served to a client, presence of code for generating a form; generating additional, executable code to be run on the client device, the additional, executable code being arranged to identify user input on the client device and modify the form so that data from the user input is received into one or more alternative fields of the form other than a first field to which a user performing the input directed the input; receiving a request from the client device based on completion of input into the form; and converting data from the received request so that data for the one or more alternative fields of the form is directed to the first field of the form for processing by a web server system that initially generated the web code.

Claims (57)

1. A computer-implemented method, comprising:

identifying, in web code to be served to a client device, presence of code for generating a form;

generating additional, executable code to be run on the client device, the additional, executable code being arranged, when executed on the client device, to:

(i) identify user input on the client device that is directed to a first field of the form, and

(ii) re-direct user-entered characters indicated by the user input into a plurality of alternative fields of the form, including at least one field other than the first field, so as to cause at least some of the user-entered characters indicated by the user input to be received in different ones of the plurality of alternative fields, including causing at least one of the user-entered characters to be received, not in the first field, but instead in the at least one field other than the first field;

providing, to the client device, the web code and the additional, executable code that is to be run on the client device;

receiving a request from the client device based on completion of first user input into the form; and

combining separate pieces of data in the received request, that respectively indicate the respective user-entered characters that were re-directed into respective fields among the plurality of alternative fields, into a single piece of data that is associated with the first field of the form for processing by a web server system that initially generated the web code.

2. The computer-implemented method of claim 1 , wherein the additional, executable code is generated by an intermediary security server system located between the web server system and the Internet, and that intercepts data served from and requests provided to the web server system.

3. The computer-implemented method of claim 1 , wherein identifying the presence of code for generating the form comprises parsing HTML code generated by the web server system.

4. The computer-implemented method of claim 1 , wherein identifying the presence of code for generating the form comprises at least partially rendering a web page represented by the web code, and analyzing a document object model (DOM) generated by the at least partial rendering of the web page.

5. The computer-implemented method of claim 1 , wherein the plurality of alternative fields includes a hidden field that is not visible to a user of the client device when the web code is executed for presentation to the user of the client device.

6. The computer-implemented method of claim 5 , wherein the additional, executable code is further arranged to encrypt the user-entered characters received in the plurality of alternative fields before transmitting the request.

7. The computer-implemented method of claim 1 , wherein combining the separate pieces of data in the received request comprises identifying data for performing a reverse transformation on the separate pieces of data in the received request, wherein the reverse transformation corresponds to a transformation that was dictated by the additional, executable code.

8. The computer-implemented method of claim 1 , wherein:

the client device is a first client device, and

the method further comprises serving code for generating the form and additional, executable code to a second client device, wherein the additional executable code served to the second client device is arranged to modify the form in a different manner than was the additional, executable code that was served to the first client device.

9. The computer-implemented method of claim 1 , wherein the additional, executable code is further arranged, when executed on the client device, to dynamically generate the plurality of alternative fields at the client device in response to identifying that the user input is directed to the first field of the form.

10. The computer-implemented method of claim 1 , wherein none of the plurality of alternative fields includes the first field.

11. The computer-implemented method of claim 1 , wherein the additional, executable code is further arranged to re-direct the user-entered characters indicated by the user input into the plurality of alternative fields by directing characters from different portions of the user input into different ones of the plurality of alternative fields.

12. The computer-implemented method of claim 1 , further comprising, for each of a plurality of client devices, receiving an indication that the web code is to be served to the respective client device, and generating a respective instance of the additional, executable code to be run on the respective client device,

wherein the respective instances of the additional, executable code are each arranged when executed on a respective client device, to re-direct user-entered characters indicated by respective user inputs at the respective client devices into alternative fields in a different manner, including at least one of

(i) generating different combinations of alternative fields for the first field of the form at each of the plurality of client devices,

(ii) splitting user input directed to the first field into alternative fields differently at each of the plurality of client devices, or

(iii) encrypting user input that is re-directed to alternative fields differently at each of the plurality of client devices.

13. The computer-implemented method of claim 1 , wherein the additional, executable code is further arranged to determine whether input at the client device is likely user input or is likely automated input, and to re-direct characters indicated by the input into the plurality of alternative fields in response to determining that the input is likely user input, but to not re-direct characters indicated by the input into the plurality of alternative fields in response to determining that the input is likely automated input.

14. The computer-implemented method of claim 1 , further comprising inserting into the web code the additional, executable code to create modified web code,

wherein providing the web code and the additional, executable code to the client device comprises providing the modified web code to the client device.

15. The computer-implemented method of claim 1 , wherein:

the plurality of alternative fields do not include the first field of the form; and

the additional, executable code is further arranged, when executed on the client device, to insert dummy characters into the first field of the form in response to identifying the user input on the client device that is directed to the first field of the form.

16. The computer-implemented method of claim 15 , wherein the dummy characters comprise a series of randomly generated characters that do not match the user-entered characters indicated by the user input.

17. A computer-implemented system, comprising:

one or more computer processors; and

one or more tangible storage devices accessible by the one or more processors and storing instructions that, when executed, perform operations that include:

identifying, in web code to be served to a client device, presence of code for generating a form;

generating additional, executable code to be run on the client device, the additional, executable code being arranged, when executed on the client device, to:

(i) identify user input on the client device that is directed to a first field of the form, and

(ii) re-direct user-entered characters indicated by the user input into a plurality of alternative fields of the form, including at least one field other than the first field, so as to cause at least some of the user-entered characters indicated by the user input to be received in different ones of the plurality of alternative fields, including causing at least one of the user-entered characters to be received, not in the first field, but instead in the at least one field other than the first field;

providing, to the client device, the web code and the additional, executable code that is to be run on the client device;

receiving a request from the client device based on completion of first user input into the form; and

combining separate pieces of data in the received request, that respectively indicate the respective user-entered characters that were re-directed into respective fields among the plurality of alternative fields, into a single piece of data that is associated with the first field of the form for processing by a web server system that initially generated the web code.

18. The computer-implemented system of claim 17 , wherein the additional, executable code is generated by an intermediary security server system located between the web server system and the Internet, and that intercepts data served from and requests provided to the web server system.

19. The computer-implemented system of claim 17 , wherein the plurality of alternative fields includes a hidden field that is not visible to a user of the client device when the web code is executed for presentation to the user of the client device.

20. The computer-implemented system of claim 19 , wherein the additional, executable code is further arranged to encrypt the user-entered characters received in the plurality of alternative fields before transmitting the request.

21. The computer-implemented system of claim 17 , wherein combining the separate pieces of data in the received request comprises identifying data for performing a reverse transformation on the separate pieces of data in the received request, wherein the reverse transformation corresponds to a transformation that was dictated by the additional, executable code.

22. The computer-implemented system of claim 17 , wherein:

the client device is a first client device, and

the operations further comprise serving code for generating the form and additional, executable code to a second client device, wherein the additional executable code served to the second client device is arranged to modify the form in a different manner than was the additional, executable code that was served to the first client device.

23. One or more non-transitory computer-readable devices having instructions stored thereon that, when executed by one or more processors, cause performance of operations comprising:

identifying, in web code to be served to a client device, presence of code for generating a form;

generating additional, executable code to be run on the client device, the additional, executable code being arranged, when executed on the client device, to:

(i) identify user input on the client device that is directed to a first field of the form, and

(ii) re-direct user-entered characters indicated by the user input into a plurality of alternative fields of the form, including at least one field other than the first field, so as to cause at least some of the user-entered characters indicated by the user input to be received in different ones of the plurality of alternative fields, including causing at least one of the user-entered characters to be received, not in the first field, but instead in the at least one field other than the first field;

providing, to the client device, the web code and the additional, executable code that is to be run on the client device;

receiving a request from the client device based on completion of first user input into the form; and

combining separate pieces of data in the received request, that respectively indicate the respective user-entered characters that were re-directed into respective fields among the plurality of alternative fields, into a single piece of data that is associated with the first field of the form for processing by a web server system that initially generated the web code.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2019
From: SILICON VALLEY BANK
To: SHAPE SECURITY, INC.
Reel/Frame 048501/0115 →
SECURITY INTEREST Recorded May 25, 2018
From: SHAPE SECURITY, INC.
To: SILICON VALLEY BANK
Reel/Frame 046243/0254 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 033028 FRAME: 0384. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 16, 2015
From: WANG, XINRAN; ZHAO, YAO
To: SHAPE SECURITY, INC.
Reel/Frame 034779/0190 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 4, 2014
From: WANG, XINRAN; ZHAO, YAO
To: SHAPE SECURITY INC.
Reel/Frame 033028/0384 →
Continuity (1)
Related Publication 20150339479A1 · Nov 26, 2015