IP Library Granted Patent US 8,250,178
Granted Patent B2
US 8,250,178 · App. 11/522,194 · Granted Aug 21, 2012

Protecting client-side code

Assignee: EMC Corporation
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 8,250,178
App. No.
11/522,194
Filed
Sep 15, 2006
Granted
Aug 21, 2012
Kind
B2
Art Unit
2457
USPC
709/219
Abstract

Protecting client-side code is disclosed. In some embodiments, when a request for a page is received from a client, an initial definition of the page is provided to the client wherein the initial definition includes a reference to a piece of client-side code not included in the initial definition and a code retrieval logic which, when executed at the client, results in the piece of client-side code being obtained dynamically from an associated server at runtime when the piece of client-side code is desired to be executed at the client. A client receives such an initial definition of a requested page from an associated server of the page. When an indication that the piece of client-side code is desired to be executed is received, the code retrieval logic is executed to obtain the piece of client-side code dynamically from the associated server.

Claims (55)

1. A method for protecting client-side code associated with a page, comprising:

receiving at a processor a request for the page from a client; and

providing to the client an initial definition associated with the page, the initial definition including a call to a dedicated function for facilitating obtaining a piece of client-side code not included in the initial definition and a client-side module configured to dynamically retrieve the piece of client-side code from an associated server at runtime when the piece of client-side code is desired to be executed at the client;

wherein the dedicated function is configured to facilitate obtaining client-side code from the server as needed at the client including by:

searching for at least a portion of the client-side code associated with a desired function at the client such that in the event code associated with the desired function is not present at the client, an error is generated or an exception is thrown that is configured to cause the client-side module to dynamically obtain at runtime the piece of client-side code from the server so that the dedicated function can execute the piece of client-side code at the client,

wherein the dedicated function includes arguments associated with the desired function and any parameters associated with the desired function.

2. A method as recited in claim 1 , wherein the dedicated function comprises a global function used to obtain any client-side code including the piece of client-side code.

3. A method as recited in claim 1 , wherein the dedicated function is invoked with respect to an object with respect to which the piece of client-side code is desired to be executed.

4. A method as recited in claim 1 , wherein the dedicated function includes one or more of the following arguments: an identifier associated with the piece of client-side code, an object type with respect to which the dedicated function is invoked, and one or more input parameters associated with the piece of client-side code.

5. A method as recited in claim 4 , wherein the identifier comprises a function name associated with the piece of client-side code.

6. A method as recited in claim 1 , wherein the dedicated function obtains the piece of client-side code from memory at the client if the piece of client-side code already exists at the client.

7. A method as recited in claim 1 , wherein the dedicated function comprises a “do function” in JavaScript.

8. A method as recited in claim 1 , wherein the piece of client-side code is obtained from the server in response to the generation of the error.

9. A method as recited in claim 1 , further comprising configuring the dedicated function to request the client-side module to obtain the piece of client-side code from the server in response to the generation of the error.

10. A method as recited in claim 9 , wherein configuring the dedicated function to request the client-side module to obtain the piece of client-side code from the server in response to the generation of the error comprises including custom exception handling logic.

11. A method as recited in claim 1 , wherein the dedicated function includes custom exception handling logic configured to obtain the piece of client-side code.

12. A method as recited in claim 11 , wherein the dedicated function causes the client-side module to obtain the piece of client-side code from the server if an exception associated with the piece of client-side code is thrown.

13. A method as recited in claim 12 , wherein the exception is thrown if the piece of client-side code does not already exist at the client and the piece of client-side code is attempted to be invoked at the client.

14. A method as recited in claim 1 , wherein the initial definition of the page comprises one or more of a user interface and an associated script.

15. A method as recited in claim 1 , wherein the initial definition of the page comprises a shell of the page.

16. A method for protecting client-side code associated with a page, comprising:

receiving at a processor of a client a definition of the page, the initial definition including a call to a dedicated function for facilitating obtaining a piece of client-side code not included in the definition and a client-side module configured to dynamically retrieve the piece of client-side code from an associated server at runtime when the piece of client-side code is desired to be executed;

receiving an indication that the piece of client-side code is desired to be executed; and

executing the call to the dedicated function to facilitate obtaining the piece of client-side code dynamically from the associated server;

wherein the dedicated function is configured to facilitate obtaining client-side code from the server as needed at the client including by:

searching for at least a portion of the client-side code associated with a desired function at the client such that in the event code associated with the desired function is not present at the client, an error is generated or an exception is thrown that is configured to cause the client-side module to dynamically obtain at runtime the piece of client-side code from the server so that the dedicated function can execute the piece of client-side code,

wherein the dedicated function includes arguments associated with the desired function and any parameters associated with the desired function.

17. A method as recited in claim 16 , further comprising receiving the piece of client-side code from the associated server and executing the piece of client-side code.

18. A method as recited in claim 16 , wherein the client side module is configured to connect to the server and interchange information with the server as needed at the client.

19. A system for protecting client-side code associated with a page, comprising:

a processor associated with a server and configured to:

receive from a client a request for the page; and

provide to the client an initial definition associated with the page, the initial definition including a call to a dedicated function for facilitating obtaining a piece of client-side code not included in the initial definition and a client-side module configured to dynamically retrieve the piece of client-side code from the server at runtime when the piece of client-side code is desired to be executed at the client;

wherein the dedicated function is configured to facilitate obtaining client-side code from the server as needed at the client including by:

searching for at least a portion of the client-side code associated with a desired function at the client such that in the event code associated with the desired function is not present at the client, an error is generated or an exception is thrown that is configured to cause the client-side module to dynamically obtain at runtime the piece of client-side code from the server so that the dedicated function can execute the piece of client-side code at the client,

wherein the dedicated function includes arguments associated with the desired function and any parameters associated with the desired function; and

a memory coupled to the processor and configured to provide instructions to the processor.

20. A system as recited in claim 19 , wherein the dedicated function comprises a global function used to obtain any client-side code including the piece of client-side code.

21. A system as recited in claim 19 , wherein the piece of client-side code is obtained from the server in response to the generation of the error.

22. A system as recited in claim 19 , wherein the dedicated function includes custom exception handling logic configured to obtain the piece of client-side code.

23. A system as recited in claim 22 , wherein the dedicated function causes the client-side module to obtain the piece of client-side code from the server if an exception associated with the piece of client-side code is thrown.

24. A system as recited in claim 19 , wherein the client side module is configured to connect to the server and interchange information with the server as needed at the client.

25. A computer program product for protecting client-side code associated with a page, the computer program product being embodied in a non-transitory computer readable medium and comprising computer instructions for:

receiving from a client a request for the page; and

providing to the client an initial definition associated with the page, the initial definition including a call to a dedicated function for facilitating obtaining a piece of client-side code not included in the initial definition and a client-side module configured to dynamically retrieve the piece of client-side code from an associated server at runtime when the piece of client-side code is desired to be executed at the client;

wherein the dedicated function is configured to facilitate obtaining client-side code from the server as needed at the client including by:

searching for at least a portion of the client-side code associated with a desired function at the client such that in the event code associated with the desired function is not present at the client, an error is generated or an exception is thrown that is configured to cause the client-side module to dynamically obtain at runtime the piece of client-side code from the server so that the dedicated function can execute the piece of client-side code at the client,

wherein the dedicated function includes arguments associated with the desired function and any parameters associated with the desired function.

26. A computer program product as recited in claim 25 , wherein the dedicated function comprises a global function used to obtain any client-side code including the piece of client-side code.

27. A computer program product as recited in claim 25 , wherein the dedicated function is invoked with respect to an object with respect to which the piece of client-side code is desired to be executed.

28. A computer program product as recited in claim 25 , wherein the dedicated function includes one or more of the following arguments: an identifier associated with the piece of client-side code, an object type with respect to which the dedicated function is invoked, and one or more input parameters associated with the piece of client-side code.

29. A computer program product as recited in claim 25 , wherein the dedicated function includes custom exception handling logic configured to obtain the piece of client-side code.

30. A computer program product as recited in claim 29 , wherein the dedicated function causes the client-side module to obtain the piece of client-side code from the server if an exception associated with the piece of client-side code is thrown.

31. A method as recited in claim 1 , wherein the client side module is configured to connect to the server and interchange information with the server as needed at the client.

32. A computer program product as recited in claim 25 , wherein the client side module is configured to connect to the server and interchange information with the server as needed at the client.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2006
From: HEITHCOCK, JEFFERY GORDON; BARRY, DAVID WILLIAM, II
To: EMC CORPORATION
Reel/Frame 018320/0072 →
Continuity (1)
Related Publication 20080071884A1 · Mar 20, 2008