US20140189499A1 - Obscuring digital content items - Google Patents
Obscuring digital content items Download PDFInfo
- Publication number
- US20140189499A1 US20140189499A1 US14/201,705 US201414201705A US2014189499A1 US 20140189499 A1 US20140189499 A1 US 20140189499A1 US 201414201705 A US201414201705 A US 201414201705A US 2014189499 A1 US2014189499 A1 US 2014189499A1
- Authority
- US
- United States
- Prior art keywords
- content item
- obfuscation
- script
- content
- obfuscated
- 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.)
- Abandoned
Links
Images
Classifications
-
- G06F17/2247—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/84—Protecting input, output or interconnection devices output devices, e.g. displays or monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
- G06F40/143—Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
- G06F40/154—Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/032—Protect output to user by software means
Definitions
- a large and growing population of users is enjoying entertainment through the consumption of digital content items, such as electronic books or “eBooks.”
- the users employ various electronic devices to read eBooks.
- electronic book readers electronic book readers, cellular telephones, personal digital assistants (PDAs), portable media players, tablet computers, netbooks, personal computers, and the like.
- PDAs personal digital assistants
- a user can obtain access to an eBook by downloading it from a content provider or by accessing a content provider website via a web browser.
- modern web browsers allow users to save the displayed content to a disk using the “Save As” option in the web browser's toolbar, which can lead to unauthorized distribution of eBooks.
- FIG. 1 is a block diagram of an exemplary network architecture in which embodiments of the invention may operate.
- FIG. 2 is a block diagram of one embodiment of a content obfuscation subsystem.
- FIG. 3A is a flow diagram of one embodiment of a method for protecting content presented in a web browser.
- FIG. 3B is a flow diagram of another embodiment of a method for protecting content presented in a web browser.
- FIG. 3C is a flow diagram of one embodiment of a method performed by a script executed in a web browser.
- FIG. 4 is a flow diagram of one embodiment of a method for obfuscating content using random text.
- FIG. 5 is a flow diagram of one embodiment of a method for obfuscating content using text repositioning.
- FIG. 6 is a flow diagram of one embodiment of a method for determining the identity of a user involved in unauthorized distribution of content.
- FIG. 7 illustrates an exemplary item providing system.
- a user device may be any computing device that can connect to a network. Examples of such user devices include electronic book readers, cellular telephones, personal digital assistants (PDAs), portable media players, tablet computers, netbooks, and the like.
- PDAs personal digital assistants
- a user device may connect to a network to obtain content items from an item providing system or to perform other activities.
- Content items may include electronic books (e-books), newspaper articles, journal articles, magazine articles, news feeds and blog feeds, or any other documents that contain textual content.
- the item providing system modifies content items to obfuscate content and stores the modified content items.
- a content item may be obfuscated by adding random words at random locations within the content item, repositioning words within the content item, or performing any other modifications to create an obfuscated version of the content item.
- the web browser sends a request for the requested content item to the item providing system.
- the item providing system sends a modified version of the requested content item to the web browser, along with a script that causes obfuscation to be dynamically removed from the modified content item at the user device when the content item is presented in the web browser on the user device.
- the item providing system creates a script that is intended to obfuscate the content at the client before the content is presented in the web browser and to cause the obfuscation to be removed from the modified content when the content is presented in the web browser.
- the item providing system receives a browser request for a content item, the item providing system sends the requested content item to the web browser, along with a script that performs obfuscation at the client and causes the obfuscation to be dynamically removed from the modified content item when it is presented in the web browser.
- the item providing system performs some obfuscation of a content item, and then when the content item is requested by a web browser, the content item is provided to the web browser with a script that performs additional obfuscation of the content item and then causes all the obfuscation to be removed from the content item when the content item is presented in the web browser.
- the user can view the unobfuscated content in the web browser but the user cannot save the unobfuscated content when viewing it in the web browser.
- the web browser saves the modified version of the requested content item that was provided by the item providing system.
- an efficient mechanism that prevents users from saving unobfuscated content displayed in a web browser to a persistent storage medium, thus preventing unauthorized use and distribution of the original content.
- FIG. 1 is a block diagram of exemplary network architecture 100 in which embodiments of the invention may operate.
- the network architecture 100 may include an item providing system 102 and multiple user devices 106 coupled to the item providing system 102 via a network 104 (e.g., a public network such as the Internet, a private network such as a local area network (LAN), or a virtual private network (VPN)).
- a network 104 e.g., a public network such as the Internet, a private network such as a local area network (LAN), or a virtual private network (VPN)).
- a public network such as the Internet
- LAN local area network
- VPN virtual private network
- the user devices 106 are variously configured with different functionality to enable consumption of content items.
- the content items may include e-books, newspaper articles, journal articles, magazine articles, news feeds, and blog feeds, and other documents that contain textual content.
- the user devices 106 may include any type of content rendering devices such as electronic book readers, portable digital assistants, mobile phones, laptop computers, portable media players, tablet computers, cameras, video cameras, netbooks, notebooks, personal computers, desktop computers, gaming consoles, DVD players, media centers, or any other computing device.
- Each user device 106 may host a web browser 110 that allows a user to access and view various content items provided via the network 104 .
- Web browser 110 may be Internet Explorer®, Firefox®, Chrome®, Safari®, or any other browser allowing a user to save the displayed content to a persistent storage medium (e.g., via the “Save As” option on the browser toolbar).
- the above web browsers allow a content item to be dynamically modified when it is being rendered. However, the web browsers are unable to store the dynamically changed state of the content. Hence, if a user attempts to save the content displayed in the web browser, the web browser 110 saves the content version that existed prior to the dynamic modification and not the dynamically modified content displayed in the web browser.
- the item providing system 102 provides items, upgrades, and/or other information to the user devices 106 registered with the item providing system 102 via the network 104 .
- the item providing system 102 also receives various requests, instructions and other data from the user devices 106 via the network 104 .
- the item providing system 102 may include one or more machines (e.g., one or more server computer systems, routers, gateways) that have processing and storage capabilities to provide the above functionality.
- Communication between the item providing system 102 and a user device 106 may be enabled via any communication infrastructure.
- an infrastructure includes a combination of a wide area network (WAN) or a VPN and wireless infrastructure, which allows a user to use the user device 106 to purchase items and consume items without being tethered to the item providing system 102 via hardwired links.
- the wireless infrastructure may be provided by a wireless carrier system that can be implemented using various data processing equipment, communication towers, etc. Alternatively, or in addition, the wireless carrier system may rely on satellite technology to exchange information with the user device 106 .
- the wireless infrastructure may be provided by an access point (e.g., WiFi access point) provider system.
- the communication infrastructure may also include a communication-enabling system that serves as an intermediary in passing information between the item providing system 102 and the wireless carrier.
- the communication-enabling system may communicate with the wireless carrier via a dedicated channel, and may communicate with the item providing system 102 via a non-dedicated communication mechanism, e.g., a public network such as the Internet.
- the item providing system 102 includes a content obfuscation subsystem 108 that modifies content items using an obfuscation algorithm to create obfuscated versions of the original content items.
- the obfuscation algorithm may modify content items by, for example, adding random text at random locations within the content items, by repositioning words within the content items, or by using any other obfuscation techniques.
- the content obfuscation subsystem 108 may create a script (e.g., JavaScript) intended to undo content modifications produced by the obfuscation algorithm.
- the content obfuscation subsystem 108 may associate the script with each content item modified using the obfuscation algorithm and store this association in a data store.
- the content obfuscation subsystem 108 provides a modified version of the requested content item to the web browser 110 , along with the associated script.
- the script (shown as script 112 ) executes in the web browser 110 to cause obfuscation to be dynamically removed from the modified content item, resulting in the display of the unobfuscated content.
- the script 112 dynamically updates a style sheet associated with the content item by adding cascading style sheet (CSS) rules that remove obfuscation from the modified version when the content is rendered in the web browser.
- CSS cascading style sheet
- the content obfuscation subsystem 108 creates a script that is intended to obfuscate the content at the user device 106 before the content is presented in the web browser 110 and to cause the obfuscation to be removed from the modified content when the content is presented in the web browser 110 .
- the content obfuscation subsystem 108 sends the requested content item to the web browser 110 , along with the script 112 , which when executed in the web browser 110 , performs obfuscation of the content item stored in memory of the user device 106 and then causes the obfuscation to be dynamically removed from the modified content item when it is presented in the web browser 110 .
- the content obfuscation subsystem 108 performs some obfuscation of a content item, and then when the content item is requested by the web browser 110 , the content item is provided to the web browser 110 with the script 112 that performs additional obfuscation of the content item stored in memory of the user device 108 and then causes all the obfuscation to be dynamically removed from the content item when the content item is presented in the web browser 110 .
- web browsers do not store the dynamically modified content state.
- the web browser 110 uses the static version of the displayed content (i.e., the modified content item received from the item providing system 102 or the content item modified by the script 112 ) when creating a copy and saving it to a storage device specified by the user. Due to obfuscation, the saved content is hard to understand and has no practical usage.
- FIG. 2 is a block diagram of one embodiment of a content obfuscation subsystem 200 .
- the content obfuscation subsystem 200 may be the same as the content obfuscation subsystem 108 of FIG. 1 .
- the content obfuscation subsystem 200 includes a content modifier 204 , one or more obfuscation algorithms 206 , a script creator 210 , a user device interface 214 , a user identity detector 216 , a content item store 202 , a configuration store 208 , and an obfuscated content store 212 .
- the components of the content obfuscation subsystem 200 may represent modules that can be combined together or separated into further modules, according to some embodiments.
- Any of the content item store 202 , configuration store 208 , and obfuscated content store 212 may be local or remote and may represent a single data structure or multiple data structures (databases, repositories, files, etc.) residing on one or more mass storage devices, such as magnetic or optical storage based disks, solid-state drives (SSDs) or hard drives.
- the content modifier 204 modifies content items stored in the content item store 202 to create obfuscated versions of these content items.
- the content item store 202 may include content items such as e-books, newspaper articles, journal articles, magazine articles, news feeds and blog feeds provided by various publishers and/or authors.
- the content items stored in the content item store 202 may be documents or web pages (e.g., HTML documents) having any format understandable by web browsers. Such documents may be associated with style sheets (e.g., cascading style sheets (CSS)) that define content presentation characteristics.
- style sheets may be provided by content publishers and authors or may be created by the item providing system 102 .
- the content modifier 204 may modify all content items in the content item store 202 or only content items having specific characteristics (e.g., specific content item types, copyrighted content items, content items identified as requiring additional protection, and the like).
- the content modifier 204 may store the modified content items in the obfuscated content store 212 .
- the content modifier 204 links each modified content item to a style sheet, which may be a separate file or part of the same document.
- the content modifier 204 obfuscates content items in advance and stores the obfuscated content items in the obfuscated content store 212 . In another embodiment, the content modifier 204 obfuscates a content item upon receiving a request for the content item from a user device.
- the content modifier 204 may use one or more obfuscation algorithms 206 to modify the content items from the content item store 202 .
- One exemplary obfuscation algorithm may insert random text from one or more external sources (e.g., online dictionaries or other content repositories) at random locations within a content item.
- Another exemplary obfuscation algorithm may insert random text from a content item at random locations within the content item.
- Yet another exemplary obfuscation algorithm may reposition words within a content item.
- Configuration algorithms 206 may be configured using configuration data in the configuration store 208 .
- the configuration data may specify an external source to be used for obfuscation, the size of each inserted portion, the obfuscation percentage and the like.
- the configuration data may vary depending on different content characteristics. For example, the obfuscation percentage may be higher for e-books and lower for scientific magazines.
- the configuration data may be different for various browsers (e.g., the obfuscation percentage may vary depending on the rendering capabilities of different web browsers).
- the content modifier 204 may create different obfuscated versions for different browsers and store them in the content item store 202 .
- the content modifier 204 may create an obfuscated version on the fly upon receiving a request for a content item from a specific web browser.
- the configuration data may vary depending on an entity associated with a content item, such as a publisher or an author.
- the configuration is changed randomly in order to make reverse engineering of content obfuscation performed by the content modifier 204 more difficult.
- the content modifier 204 selects a certain obfuscation algorithm 206 based on predefined parameters stored in the configuration store 208 .
- the predefined parameters may be content item characteristics (e.g., content type, content item size and the like), web browser characteristics, or preferences of an entity associated with a content item (e.g., a content item publisher or author).
- the content modifier selects obfuscation algorithms 206 randomly to make reverse engineering more difficult.
- the content modifier 204 adds to an obfuscation portion of the content item a variable parameter for capturing user identifying information known to a web browser.
- the user identifying information may be a user name, a user login ID or the like.
- the variable parameter may require that the user identifier provided by the web browser be hidden (e.g., by transforming it into a corresponding set of characters and then adding this set of characters as the value of the variable parameter).
- the user identifying information may later be used by the user identity detector 216 to determine which user has distributed the obfuscated content.
- the script creator 210 creates scripts (e.g., JavaScripts) intended to undo content modifications produced by individual obfuscation algorithms, associates each content item modified using a specific obfuscation algorithm 206 with a script corresponding to this obfuscation algorithm 206 , and stores these associations in the obfuscated content store 212 .
- scripts e.g., JavaScripts
- the script creator 210 creates a script that dynamically updates a style sheet associated with a content item by adding CSS rules that remove obfuscation from the modified version of the content item when the content item is rendered in the web browser.
- the CSS rules may require that the random text inserted into the modified content item as part of obfuscation be invisible when this content item is displayed in the web browser.
- the CSS rules may require that repositioning of text portions in the modified content item be undone when this content item is displayed in the web browser.
- the user device interface 214 facilitates communication with user devices.
- a web browser hosted by a user device sends a request for a specific content item to the item providing system 102
- the user device interface 214 provides a modified version of the requested content item and the associated script to the web browser.
- the script dynamically updates the style sheet of the modified content item to add corresponding CSS rules that remove obfuscation from the modified version.
- the content modifier 204 does not perform obfuscation of the content item or performs only partial obfuscation of the content item. Instead, the entire obfuscation or partial obfuscation is performed at the user device.
- the script creator 10 creates a script that is intended to obfuscate the content item at the user device before the content is presented in the web browser and to cause the obfuscation to be removed from the modified content item when the content item is presented in the web browser.
- Original or partially modified content items are associated with respective scripts and these associations are stored in the obfuscated content store 212 .
- the user device interface 214 When the user device interface 214 receives a browser request for a content item, it sends the requested content item to the web browser, along with a corresponding script.
- the script performs obfuscation or additional obfuscation of the content item, and stores the content item with a corresponding style sheet (created by the script or provided to the user device by the content obfuscation subsystem 200 ) in memory of the user device.
- the script then dynamically updates the style sheet stored in memory of the user device to add CSS rules that remove the obfuscation when the content item is presented in the web browser.
- web browsers do not store the dynamically modified content state. Hence, if the user attempts to save the displayed content, the web browser uses the obfuscated content item when creating a copy and saving it to a specified storage device as a web page archive file (e.g., .mht or .mhtml file).
- a web page archive file e.g., .mht or .mhtml file
- the user may share it with others, thus facilitating unauthorized distribution of content.
- a publisher or an author of the content or an entity associated with the item providing system 102 may become aware of this unauthorized distribution and may send the distributed content item to the content obfuscation subsystem 200 .
- the user identity detector 216 may analyze the distributed content item to determine whether it includes user identifying information. If so, the user identity detector 216 may extract the user identifying information and use it to determine the identity of the user. This may be especially useful if the user was able to remove obfuscation from content before saving the content and sharing it with others.
- FIGS. 3A , 3 B, 4 , 5 and 6 are flow diagrams of various embodiments of server-side methods.
- the methods are performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both.
- the methods are performed by the item providing system 102 of FIG. 1 .
- FIG. 3A is a flow diagram of one embodiment of a method 300 for protecting content presented in a web browser.
- Method 300 may begin with the item providing system identifying a content item to be rendered by a web browser (block 302 ).
- the content item may be provided by a publisher or an author or created by the item providing system.
- the content item may be an HTML document or any other document that can be accessed via a web browser.
- the item providing system identifies an obfuscation algorithm for the content item.
- the item providing system may select an obfuscation algorithm based on characteristics of the content item (e.g., content item type, content item size), characteristics of a web browser that will present the content item (e.g., browser rendering capability), or a preference of an entity associated with the content item (e.g., a publisher or an author).
- the item providing system configures the obfuscation algorithm based on configuration data (e.g., obfuscation percentage, maximum size of a resulting content item, source of random text to be added for obfuscation).
- configuration data e.g., obfuscation percentage, maximum size of a resulting content item, source of random text to be added for obfuscation.
- the selection of an obfuscation algorithm and/or the configuration of the obfuscation algorithm is changed randomly to make reverse engineering more difficult.
- the item providing system modifies the content item using the obfuscation algorithm.
- the item providing system creates a script corresponding to the obfuscation algorithm.
- the item providing system associates the obfuscated content with the script and stores the association in a data store. Exemplary embodiments of content obfuscation methods will be discussed in more detail below in conjunction with FIGS. 4 and 5 .
- the item providing system receives a request for a content item from a web browser.
- the item providing system identifies a modified version of the content item and provides the modified version and the associated script to the web browser.
- the item providing system also provides a style sheet of the content item.
- the item providing system does not obfuscate a content item until receiving a web browser request for this content item.
- the item providing system may perform blocks 302 , 304 , 306 and 310 , and then associate the content item with the script at block 312 .
- the item providing system may perform block 308 , and then provide the resulting obfuscated content with a corresponding script to the web browser at block 316 .
- the script When the web browser renders the modified content item, the script is dynamically executed to cause the obfuscation to be removed from the modified content item.
- the script dynamically updates the style sheet of the content item to add CSS rules that undo the obfuscation.
- FIG. 3B is a flow diagram of another embodiment of a method for protecting content presented in a web browser.
- Method 320 may begin with the item providing system identifying a content item to be rendered by a web browser (block 322 ), identifying an obfuscation algorithm for the content item (block 324 ), and configuring the obfuscation algorithm based on configuration data (block 326 ).
- the item providing system creates a script corresponding to the obfuscation algorithm.
- the script is intended to perform obfuscation of the content item and then to cause the obfuscation to be dynamically removed when the content item is presented in the web browser.
- the item providing system associates the content item with the script and stores the association in a data store.
- the item providing system receives a request for a content item from a web browser.
- the item providing system provides the content item and the associated script to the web browser. In one embodiment, the item providing system also provides a style sheet of the content item.
- the script obfuscates the content item, creates or updates the style sheet and stores the content item and the style sheet in memory of the user device.
- the script then dynamically updates the style sheet of the content item to add CSS rules that undo the obfuscation.
- FIG. 3C is a flow diagram of one embodiment of a method 350 performed by a script that is executed in a web browser.
- the script obfuscates a content item and creates a style sheet for the content item.
- the script updates an existing style sheet provided by the item providing system with the content item.
- the script stores the content item and style sheet in memory of the user device.
- the script dynamically updates the style sheet to add CSS rules that remove obfuscation when the content is displayed in the web browser.
- FIG. 4 is a flow diagram of one embodiment of a method 400 for obfuscating a content item using random text.
- Method 400 may be performed by the item providing system or a JavaScript executing on the user device.
- Method 400 may begin with selecting one or more tags (e.g., HTML tags) to be used for obfuscation.
- the tags may include a paragraph tag, a bold tag, an italic tag, and so on (block 402 ).
- random text is inserted at multiple random locations within the content item.
- the random text may include characters selected from different places in the content item or characters selected from various external sources (e.g., online dictionaries, content provider websites, or any other content repository).
- one of the selected tags is assigned to one or more inserted text portions.
- a CSS class e.g., span class
- a CSS class ID are associated with each inserted text portion.
- a paragraph tag ⁇ p> may be assigned to the content portion “this is a test” and the resulting text may be converted into the following fragment:
- the added CSS rules for the above example may include “.RANDOM_ID — 1 ⁇ display:none ⁇ ” and “.RANDOM_ID — 2 ⁇ display:none ⁇ .”
- the saved file will include the following text: “thRANDOM_TEXTis is aMORE_RANDOM_TEXT test.”
- FIG. 5 is a flow diagram of one embodiment of a method 500 for obfuscating content using text repositioning.
- Method 500 may begin with the item providing system repositioning words in a content item (block 502 ).
- words may be repositioned using CSS positioning.
- the item providing system stores the obfuscated content item in a data store.
- the item providing system creates a JavaScript, which when executed, updates the style sheet to add CSS rules that undo repositioning.
- the item providing system associates the JavaScript with the obfuscated content.
- the repositioning is performed by the JavaScript to obfuscate the content when the JavaScript is executed in the web browser.
- the JavaScript then dynamically updates a corresponding style sheet to add CSS rules to undo the repositioning.
- FIG. 6 is a flow diagram of one embodiment of a method 600 for determining the identity of a user involved in unauthorized distribution of content.
- Method 600 may begin when the item providing system modifies a content item to obfuscate it and adds a variable parameter for capturing user identifying information (block 602 ).
- the item providing system receives an indication of unauthorized distribution of a content item.
- the item providing system may detect that a content item is distributed to or from an authorized user.
- the item providing system may receive a content item from a publisher or author with a message indicating unauthorized distribution of the content item.
- the item providing system analyzes the content item to extract the value of the user identifier parameter (block 606 ).
- the item providing system determines the user identity based on the extracted value (block 608 ).
- FIG. 7 illustrates an exemplary item providing system 700 in the form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.
- the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the Internet.
- the machine may operate in the capacity of a server machine in client-server network environment.
- the machine may be a personal computer (PC), a set-top box (STB), a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.
- PC personal computer
- STB set-top box
- server a server
- network router switch or bridge
- the exemplary computer system 700 includes a processing system (processor) 702 , a main memory 704 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM)), a static memory 706 (e.g., flash memory, static random access memory (SRAM)), and a data storage device 716 , which communicate with each other via a bus 706 .
- processor processing system
- main memory 704 e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM)
- DRAM dynamic random access memory
- SDRAM synchronous DRAM
- static memory 706 e.g., flash memory, static random access memory (SRAM)
- SRAM static random access memory
- Processor 702 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processor 702 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets.
- the processor 702 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like.
- the processor 702 is configured to execute the server text illustration subsystem 108 for performing the operations and steps discussed herein.
- the computer system 700 may further include a network interface device 722 .
- the computer system 700 also may include a video display unit 710 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 712 (e.g., a keyboard), a cursor control device 714 (e.g., a mouse), and a signal generation device 720 (e.g., a speaker).
- a video display unit 710 e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)
- an alphanumeric input device 712 e.g., a keyboard
- a cursor control device 714 e.g., a mouse
- a signal generation device 720 e.g., a speaker
- a drive unit 716 may include a computer-readable medium 724 on which is stored one or more sets of instructions (e.g., instructions of server text illustration subsystem 108 ) embodying any one or more of the methodologies or functions described herein.
- the instructions of the server text illustration subsystem 108 may also reside, completely or at least partially, within the main memory 704 and/or within the processor 702 during execution thereof by the computer system 700 , the main memory 704 and the processor 702 also constituting computer-readable media.
- the instructions of the server text illustration subsystem 108 may further be transmitted or received over a network via the network interface device 722 .
- While the computer-readable storage medium 724 is shown in an exemplary embodiment to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions.
- the term “computer-readable storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present invention.
- the term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media.
- Embodiments of the invention also relate to an apparatus for performing the operations herein.
- This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer.
- a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Information Transfer Between Computers (AREA)
Abstract
A user device receives a content item and a script associated with the content item. The user device stores an obfuscated version of the content item and an associated style sheet in memory. The user device dynamically updates the style sheet stored in the memory using the script to remove the obfuscation from the obfuscated version of the content item when the content item is presented in a web browser running on the user device.
Description
- This application is a continuation of U.S. patent application Ser. No. 13/186,340, filed Jul. 19, 2011, which is herein incorporated by reference.
- A large and growing population of users is enjoying entertainment through the consumption of digital content items, such as electronic books or “eBooks.” The users employ various electronic devices to read eBooks. Among these electronic devices are electronic book readers, cellular telephones, personal digital assistants (PDAs), portable media players, tablet computers, netbooks, personal computers, and the like. A user can obtain access to an eBook by downloading it from a content provider or by accessing a content provider website via a web browser. However, modern web browsers allow users to save the displayed content to a disk using the “Save As” option in the web browser's toolbar, which can lead to unauthorized distribution of eBooks.
-
FIG. 1 is a block diagram of an exemplary network architecture in which embodiments of the invention may operate. -
FIG. 2 is a block diagram of one embodiment of a content obfuscation subsystem. -
FIG. 3A is a flow diagram of one embodiment of a method for protecting content presented in a web browser. -
FIG. 3B is a flow diagram of another embodiment of a method for protecting content presented in a web browser. -
FIG. 3C is a flow diagram of one embodiment of a method performed by a script executed in a web browser. -
FIG. 4 is a flow diagram of one embodiment of a method for obfuscating content using random text. -
FIG. 5 is a flow diagram of one embodiment of a method for obfuscating content using text repositioning. -
FIG. 6 is a flow diagram of one embodiment of a method for determining the identity of a user involved in unauthorized distribution of content. -
FIG. 7 illustrates an exemplary item providing system. - Methods and systems for protecting content presented in a web browser on a user device are described. A user device may be any computing device that can connect to a network. Examples of such user devices include electronic book readers, cellular telephones, personal digital assistants (PDAs), portable media players, tablet computers, netbooks, and the like. A user device may connect to a network to obtain content items from an item providing system or to perform other activities. Content items may include electronic books (e-books), newspaper articles, journal articles, magazine articles, news feeds and blog feeds, or any other documents that contain textual content.
- In one embodiment, the item providing system modifies content items to obfuscate content and stores the modified content items. A content item may be obfuscated by adding random words at random locations within the content item, repositioning words within the content item, or performing any other modifications to create an obfuscated version of the content item. When a user requests a specific content item via a web browser, the web browser sends a request for the requested content item to the item providing system. In response, the item providing system sends a modified version of the requested content item to the web browser, along with a script that causes obfuscation to be dynamically removed from the modified content item at the user device when the content item is presented in the web browser on the user device.
- In another embodiment, the item providing system creates a script that is intended to obfuscate the content at the client before the content is presented in the web browser and to cause the obfuscation to be removed from the modified content when the content is presented in the web browser. When the item providing system receives a browser request for a content item, the item providing system sends the requested content item to the web browser, along with a script that performs obfuscation at the client and causes the obfuscation to be dynamically removed from the modified content item when it is presented in the web browser. In yet another embodiment, the item providing system performs some obfuscation of a content item, and then when the content item is requested by a web browser, the content item is provided to the web browser with a script that performs additional obfuscation of the content item and then causes all the obfuscation to be removed from the content item when the content item is presented in the web browser.
- In each of the above-mentioned embodiments, the user can view the unobfuscated content in the web browser but the user cannot save the unobfuscated content when viewing it in the web browser. In particular, when the user tries to save the displayed content (e.g., via the “Save As” option in the browser toolbar), the web browser saves the modified version of the requested content item that was provided by the item providing system.
- Accordingly, an efficient mechanism is provided that prevents users from saving unobfuscated content displayed in a web browser to a persistent storage medium, thus preventing unauthorized use and distribution of the original content.
-
FIG. 1 is a block diagram ofexemplary network architecture 100 in which embodiments of the invention may operate. Thenetwork architecture 100 may include anitem providing system 102 and multiple user devices 106 coupled to theitem providing system 102 via a network 104 (e.g., a public network such as the Internet, a private network such as a local area network (LAN), or a virtual private network (VPN)). - The user devices 106 are variously configured with different functionality to enable consumption of content items. As discussed above, the content items may include e-books, newspaper articles, journal articles, magazine articles, news feeds, and blog feeds, and other documents that contain textual content. The user devices 106 may include any type of content rendering devices such as electronic book readers, portable digital assistants, mobile phones, laptop computers, portable media players, tablet computers, cameras, video cameras, netbooks, notebooks, personal computers, desktop computers, gaming consoles, DVD players, media centers, or any other computing device. Each user device 106 may host a
web browser 110 that allows a user to access and view various content items provided via thenetwork 104.Web browser 110 may be Internet Explorer®, Firefox®, Chrome®, Safari®, or any other browser allowing a user to save the displayed content to a persistent storage medium (e.g., via the “Save As” option on the browser toolbar). The above web browsers allow a content item to be dynamically modified when it is being rendered. However, the web browsers are unable to store the dynamically changed state of the content. Hence, if a user attempts to save the content displayed in the web browser, theweb browser 110 saves the content version that existed prior to the dynamic modification and not the dynamically modified content displayed in the web browser. - The
item providing system 102 provides items, upgrades, and/or other information to the user devices 106 registered with theitem providing system 102 via thenetwork 104. Theitem providing system 102 also receives various requests, instructions and other data from the user devices 106 via thenetwork 104. Theitem providing system 102 may include one or more machines (e.g., one or more server computer systems, routers, gateways) that have processing and storage capabilities to provide the above functionality. - Communication between the
item providing system 102 and a user device 106 may be enabled via any communication infrastructure. One example of such an infrastructure includes a combination of a wide area network (WAN) or a VPN and wireless infrastructure, which allows a user to use the user device 106 to purchase items and consume items without being tethered to theitem providing system 102 via hardwired links. The wireless infrastructure may be provided by a wireless carrier system that can be implemented using various data processing equipment, communication towers, etc. Alternatively, or in addition, the wireless carrier system may rely on satellite technology to exchange information with the user device 106. Yet alternatively, or in combination, the wireless infrastructure may be provided by an access point (e.g., WiFi access point) provider system. - The communication infrastructure may also include a communication-enabling system that serves as an intermediary in passing information between the
item providing system 102 and the wireless carrier. The communication-enabling system may communicate with the wireless carrier via a dedicated channel, and may communicate with theitem providing system 102 via a non-dedicated communication mechanism, e.g., a public network such as the Internet. - Users of the user devices 106 can register with the
item providing system 102 to receive various content items that may include, for example, e-books, articles and other documents. In one embodiment, theitem providing system 102 includes a content obfuscation subsystem 108 that modifies content items using an obfuscation algorithm to create obfuscated versions of the original content items. The obfuscation algorithm may modify content items by, for example, adding random text at random locations within the content items, by repositioning words within the content items, or by using any other obfuscation techniques. In addition, the content obfuscation subsystem 108 may create a script (e.g., JavaScript) intended to undo content modifications produced by the obfuscation algorithm. The content obfuscation subsystem 108 may associate the script with each content item modified using the obfuscation algorithm and store this association in a data store. - When
web browser 110 sends a request for a specific content item to theitem providing system 102, the content obfuscation subsystem 108 provides a modified version of the requested content item to theweb browser 110, along with the associated script. When theweb browser 110 renders the modified version, the script (shown as script 112) executes in theweb browser 110 to cause obfuscation to be dynamically removed from the modified content item, resulting in the display of the unobfuscated content. In one embodiment, thescript 112 dynamically updates a style sheet associated with the content item by adding cascading style sheet (CSS) rules that remove obfuscation from the modified version when the content is rendered in the web browser. - In another embodiment, the content obfuscation subsystem 108 creates a script that is intended to obfuscate the content at the user device 106 before the content is presented in the
web browser 110 and to cause the obfuscation to be removed from the modified content when the content is presented in theweb browser 110. When theitem providing system 102 receives a browser request for a content item, the content obfuscation subsystem 108 sends the requested content item to theweb browser 110, along with thescript 112, which when executed in theweb browser 110, performs obfuscation of the content item stored in memory of the user device 106 and then causes the obfuscation to be dynamically removed from the modified content item when it is presented in theweb browser 110. In yet another embodiment, the content obfuscation subsystem 108 performs some obfuscation of a content item, and then when the content item is requested by theweb browser 110, the content item is provided to theweb browser 110 with thescript 112 that performs additional obfuscation of the content item stored in memory of the user device 108 and then causes all the obfuscation to be dynamically removed from the content item when the content item is presented in theweb browser 110. - As discussed above, web browsers do not store the dynamically modified content state. Hence, if the user attempts to save the displayed content, the
web browser 110 uses the static version of the displayed content (i.e., the modified content item received from theitem providing system 102 or the content item modified by the script 112) when creating a copy and saving it to a storage device specified by the user. Due to obfuscation, the saved content is hard to understand and has no practical usage. -
FIG. 2 is a block diagram of one embodiment of a content obfuscation subsystem 200. The content obfuscation subsystem 200 may be the same as the content obfuscation subsystem 108 ofFIG. 1 . In one embodiment, the content obfuscation subsystem 200 includes acontent modifier 204, one ormore obfuscation algorithms 206, ascript creator 210, auser device interface 214, auser identity detector 216, acontent item store 202, aconfiguration store 208, and an obfuscatedcontent store 212. The components of the content obfuscation subsystem 200 may represent modules that can be combined together or separated into further modules, according to some embodiments. Any of thecontent item store 202,configuration store 208, and obfuscatedcontent store 212 may be local or remote and may represent a single data structure or multiple data structures (databases, repositories, files, etc.) residing on one or more mass storage devices, such as magnetic or optical storage based disks, solid-state drives (SSDs) or hard drives. - The
content modifier 204 modifies content items stored in thecontent item store 202 to create obfuscated versions of these content items. Thecontent item store 202 may include content items such as e-books, newspaper articles, journal articles, magazine articles, news feeds and blog feeds provided by various publishers and/or authors. The content items stored in thecontent item store 202 may be documents or web pages (e.g., HTML documents) having any format understandable by web browsers. Such documents may be associated with style sheets (e.g., cascading style sheets (CSS)) that define content presentation characteristics. The style sheets may be provided by content publishers and authors or may be created by theitem providing system 102. Thecontent modifier 204 may modify all content items in thecontent item store 202 or only content items having specific characteristics (e.g., specific content item types, copyrighted content items, content items identified as requiring additional protection, and the like). Thecontent modifier 204 may store the modified content items in the obfuscatedcontent store 212. In one embodiment, thecontent modifier 204 links each modified content item to a style sheet, which may be a separate file or part of the same document. - As discussed, in one embodiment, the
content modifier 204 obfuscates content items in advance and stores the obfuscated content items in the obfuscatedcontent store 212. In another embodiment, thecontent modifier 204 obfuscates a content item upon receiving a request for the content item from a user device. - The
content modifier 204 may use one ormore obfuscation algorithms 206 to modify the content items from thecontent item store 202. One exemplary obfuscation algorithm may insert random text from one or more external sources (e.g., online dictionaries or other content repositories) at random locations within a content item. Another exemplary obfuscation algorithm may insert random text from a content item at random locations within the content item. Yet another exemplary obfuscation algorithm may reposition words within a content item. -
Configuration algorithms 206 may be configured using configuration data in theconfiguration store 208. For example, the configuration data may specify an external source to be used for obfuscation, the size of each inserted portion, the obfuscation percentage and the like. The configuration data may vary depending on different content characteristics. For example, the obfuscation percentage may be higher for e-books and lower for scientific magazines. In addition, the configuration data may be different for various browsers (e.g., the obfuscation percentage may vary depending on the rendering capabilities of different web browsers). When the configuration data varies depending on a web browser, thecontent modifier 204 may create different obfuscated versions for different browsers and store them in thecontent item store 202. Alternatively, thecontent modifier 204 may create an obfuscated version on the fly upon receiving a request for a content item from a specific web browser. Further, the configuration data may vary depending on an entity associated with a content item, such as a publisher or an author. In one embodiment, the configuration is changed randomly in order to make reverse engineering of content obfuscation performed by thecontent modifier 204 more difficult. - In one embodiment, the
content modifier 204 selects acertain obfuscation algorithm 206 based on predefined parameters stored in theconfiguration store 208. For example, the predefined parameters may be content item characteristics (e.g., content type, content item size and the like), web browser characteristics, or preferences of an entity associated with a content item (e.g., a content item publisher or author). In one embodiment, the content modifier selectsobfuscation algorithms 206 randomly to make reverse engineering more difficult. - In one embodiment, the
content modifier 204 adds to an obfuscation portion of the content item a variable parameter for capturing user identifying information known to a web browser. The user identifying information may be a user name, a user login ID or the like. In one embodiment, the variable parameter may require that the user identifier provided by the web browser be hidden (e.g., by transforming it into a corresponding set of characters and then adding this set of characters as the value of the variable parameter). As will be discussed in more detail below, the user identifying information may later be used by theuser identity detector 216 to determine which user has distributed the obfuscated content. - The
script creator 210 creates scripts (e.g., JavaScripts) intended to undo content modifications produced by individual obfuscation algorithms, associates each content item modified using aspecific obfuscation algorithm 206 with a script corresponding to thisobfuscation algorithm 206, and stores these associations in the obfuscatedcontent store 212. - In one embodiment, the
script creator 210 creates a script that dynamically updates a style sheet associated with a content item by adding CSS rules that remove obfuscation from the modified version of the content item when the content item is rendered in the web browser. For example, the CSS rules may require that the random text inserted into the modified content item as part of obfuscation be invisible when this content item is displayed in the web browser. In another example, the CSS rules may require that repositioning of text portions in the modified content item be undone when this content item is displayed in the web browser. - The
user device interface 214 facilitates communication with user devices. In particular, when a web browser hosted by a user device sends a request for a specific content item to theitem providing system 102, theuser device interface 214 provides a modified version of the requested content item and the associated script to the web browser. When the web browser renders the modified version, the script dynamically updates the style sheet of the modified content item to add corresponding CSS rules that remove obfuscation from the modified version. - In another embodiment, the
content modifier 204 does not perform obfuscation of the content item or performs only partial obfuscation of the content item. Instead, the entire obfuscation or partial obfuscation is performed at the user device. In this other embodiment, the script creator 10 creates a script that is intended to obfuscate the content item at the user device before the content is presented in the web browser and to cause the obfuscation to be removed from the modified content item when the content item is presented in the web browser. Original or partially modified content items are associated with respective scripts and these associations are stored in the obfuscatedcontent store 212. When theuser device interface 214 receives a browser request for a content item, it sends the requested content item to the web browser, along with a corresponding script. At the web browser, the script performs obfuscation or additional obfuscation of the content item, and stores the content item with a corresponding style sheet (created by the script or provided to the user device by the content obfuscation subsystem 200) in memory of the user device. The script then dynamically updates the style sheet stored in memory of the user device to add CSS rules that remove the obfuscation when the content item is presented in the web browser. - As discussed above, web browsers do not store the dynamically modified content state. Hence, if the user attempts to save the displayed content, the web browser uses the obfuscated content item when creating a copy and saving it to a specified storage device as a web page archive file (e.g., .mht or .mhtml file).
- Once the user creates a web page archive file, the user may share it with others, thus facilitating unauthorized distribution of content. A publisher or an author of the content or an entity associated with the
item providing system 102 may become aware of this unauthorized distribution and may send the distributed content item to the content obfuscation subsystem 200. In this case, theuser identity detector 216 may analyze the distributed content item to determine whether it includes user identifying information. If so, theuser identity detector 216 may extract the user identifying information and use it to determine the identity of the user. This may be especially useful if the user was able to remove obfuscation from content before saving the content and sharing it with others. -
FIGS. 3A , 3B, 4, 5 and 6 are flow diagrams of various embodiments of server-side methods. The methods are performed by processing logic that may comprise hardware (circuitry, dedicated logic, etc.), software (such as is run on a general purpose computer system or a dedicated machine), or a combination of both. In one embodiment, the methods are performed by theitem providing system 102 ofFIG. 1 . -
FIG. 3A is a flow diagram of one embodiment of amethod 300 for protecting content presented in a web browser.Method 300 may begin with the item providing system identifying a content item to be rendered by a web browser (block 302). The content item may be provided by a publisher or an author or created by the item providing system. The content item may be an HTML document or any other document that can be accessed via a web browser. - At
block 304, the item providing system identifies an obfuscation algorithm for the content item. The item providing system may select an obfuscation algorithm based on characteristics of the content item (e.g., content item type, content item size), characteristics of a web browser that will present the content item (e.g., browser rendering capability), or a preference of an entity associated with the content item (e.g., a publisher or an author). Atblock 306, the item providing system configures the obfuscation algorithm based on configuration data (e.g., obfuscation percentage, maximum size of a resulting content item, source of random text to be added for obfuscation). In one embodiment, the selection of an obfuscation algorithm and/or the configuration of the obfuscation algorithm is changed randomly to make reverse engineering more difficult. - At
block 308, the item providing system modifies the content item using the obfuscation algorithm. Atblock 310, the item providing system creates a script corresponding to the obfuscation algorithm. Atblock 312, the item providing system associates the obfuscated content with the script and stores the association in a data store. Exemplary embodiments of content obfuscation methods will be discussed in more detail below in conjunction withFIGS. 4 and 5 . - At
block 314, the item providing system receives a request for a content item from a web browser. Atblock 316, the item providing system identifies a modified version of the content item and provides the modified version and the associated script to the web browser. In one embodiment, the item providing system also provides a style sheet of the content item. - In another embodiment, the item providing system does not obfuscate a content item until receiving a web browser request for this content item. In particular, the item providing system may perform
blocks block 312. In response to receiving a request for the content item atblock 314, the item providing system may perform block 308, and then provide the resulting obfuscated content with a corresponding script to the web browser atblock 316. - When the web browser renders the modified content item, the script is dynamically executed to cause the obfuscation to be removed from the modified content item. In one embodiment, the script dynamically updates the style sheet of the content item to add CSS rules that undo the obfuscation.
-
FIG. 3B is a flow diagram of another embodiment of a method for protecting content presented in a web browser. Method 320 may begin with the item providing system identifying a content item to be rendered by a web browser (block 322), identifying an obfuscation algorithm for the content item (block 324), and configuring the obfuscation algorithm based on configuration data (block 326). - At block 328, the item providing system creates a script corresponding to the obfuscation algorithm. The script is intended to perform obfuscation of the content item and then to cause the obfuscation to be dynamically removed when the content item is presented in the web browser. At block 330, the item providing system associates the content item with the script and stores the association in a data store. At block 332, the item providing system receives a request for a content item from a web browser. At
block 316, the item providing system provides the content item and the associated script to the web browser. In one embodiment, the item providing system also provides a style sheet of the content item. - When the web browser receives the content item and the script (and optionally the style sheet), the script obfuscates the content item, creates or updates the style sheet and stores the content item and the style sheet in memory of the user device. The script then dynamically updates the style sheet of the content item to add CSS rules that undo the obfuscation.
-
FIG. 3C is a flow diagram of one embodiment of a method 350 performed by a script that is executed in a web browser. Atblock 352, the script obfuscates a content item and creates a style sheet for the content item. Alternatively, the script updates an existing style sheet provided by the item providing system with the content item. Atblock 354, the script stores the content item and style sheet in memory of the user device. Atblock 356, the script dynamically updates the style sheet to add CSS rules that remove obfuscation when the content is displayed in the web browser. -
FIG. 4 is a flow diagram of one embodiment of amethod 400 for obfuscating a content item using random text.Method 400 may be performed by the item providing system or a JavaScript executing on the user device.Method 400 may begin with selecting one or more tags (e.g., HTML tags) to be used for obfuscation. The tags may include a paragraph tag, a bold tag, an italic tag, and so on (block 402). Atblock 404, random text is inserted at multiple random locations within the content item. The random text may include characters selected from different places in the content item or characters selected from various external sources (e.g., online dictionaries, content provider websites, or any other content repository). - At
block 406, one of the selected tags is assigned to one or more inserted text portions. Atblock 408, a CSS class (e.g., span class) and a CSS class ID are associated with each inserted text portion. - For example, a paragraph tag <p> may be assigned to the content portion “this is a test” and the resulting text may be converted into the following fragment:
-
<p> th<span class=“RANDOM_ID_1”><b>RANDOM_TEXT</b></span>is is a <span class=“RANDOM_ID_2”><i>MORE_RANDOM_TEXT</i> </span> test </p> - When the style sheet is updated to add CSS rules that prevent display of inserted text, the added CSS rules for the above example may include “.RANDOM_ID—1 {display:none}” and “.RANDOM_ID—2 {display:none}.”
- In the above example, if a user attempts to save the displayed content item, the saved file will include the following text: “thRANDOM_TEXTis is aMORE_RANDOM_TEXT test.”
-
FIG. 5 is a flow diagram of one embodiment of amethod 500 for obfuscating content using text repositioning.Method 500 may begin with the item providing system repositioning words in a content item (block 502). In one embodiment, words may be repositioned using CSS positioning. - At
block 504, the item providing system stores the obfuscated content item in a data store. Atblock 506, the item providing system creates a JavaScript, which when executed, updates the style sheet to add CSS rules that undo repositioning. Atblock 508, the item providing system associates the JavaScript with the obfuscated content. - In another embodiment, the repositioning is performed by the JavaScript to obfuscate the content when the JavaScript is executed in the web browser. The JavaScript then dynamically updates a corresponding style sheet to add CSS rules to undo the repositioning.
-
FIG. 6 is a flow diagram of one embodiment of amethod 600 for determining the identity of a user involved in unauthorized distribution of content.Method 600 may begin when the item providing system modifies a content item to obfuscate it and adds a variable parameter for capturing user identifying information (block 602). - Subsequently, at
block 604, the item providing system receives an indication of unauthorized distribution of a content item. For example, the item providing system may detect that a content item is distributed to or from an authorized user. In another example, the item providing system may receive a content item from a publisher or author with a message indicating unauthorized distribution of the content item. - In response, the item providing system analyzes the content item to extract the value of the user identifier parameter (block 606). At
block 608, the item providing system determines the user identity based on the extracted value (block 608). -
FIG. 7 illustrates an exemplaryitem providing system 700 in the form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed. In some embodiments, the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the Internet. The machine may operate in the capacity of a server machine in client-server network environment. The machine may be a personal computer (PC), a set-top box (STB), a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein. - The
exemplary computer system 700 includes a processing system (processor) 702, a main memory 704 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM)), a static memory 706 (e.g., flash memory, static random access memory (SRAM)), and adata storage device 716, which communicate with each other via abus 706. -
Processor 702 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, theprocessor 702 may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets or processors implementing a combination of instruction sets. Theprocessor 702 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. Theprocessor 702 is configured to execute the server text illustration subsystem 108 for performing the operations and steps discussed herein. - The
computer system 700 may further include anetwork interface device 722. Thecomputer system 700 also may include a video display unit 710 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 712 (e.g., a keyboard), a cursor control device 714 (e.g., a mouse), and a signal generation device 720 (e.g., a speaker). - A
drive unit 716 may include a computer-readable medium 724 on which is stored one or more sets of instructions (e.g., instructions of server text illustration subsystem 108) embodying any one or more of the methodologies or functions described herein. The instructions of the server text illustration subsystem 108 may also reside, completely or at least partially, within themain memory 704 and/or within theprocessor 702 during execution thereof by thecomputer system 700, themain memory 704 and theprocessor 702 also constituting computer-readable media. The instructions of the server text illustration subsystem 108 may further be transmitted or received over a network via thenetwork interface device 722. - While the computer-
readable storage medium 724 is shown in an exemplary embodiment to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “computer-readable storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present invention. The term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, optical media, and magnetic media. - In the above description, numerous details are set forth. It will be apparent, however, to one of ordinary skill in the art having the benefit of this disclosure, that embodiments of the invention may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the description.
- Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
- It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the above discussion, it is appreciated that throughout the description, discussions utilizing terms such as “identifying”, “creating”, “notifying”, “allowing” or the like, refer to the actions and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (e.g., electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
- Embodiments of the invention also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions.
- The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
- It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other embodiments will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
Claims (20)
1. A method comprising:
sending a request for a content item to a server by a user device;
receiving the content item and a script associated with the content item by the user device;
using the script by the user device to perform obfuscation of the content item and generate an obfuscated version of the content item;
storing the obfuscated version of the content item and an associated style sheet in memory of the user device; and
dynamically updating the style sheet stored in the memory using the script to remove the obfuscation from the obfuscated version of the content item when the content item is presented in a web browser running on the user device.
2. The method of claim 1 , wherein performing the obfuscation of the content item comprises:
selecting one or more HTML tags;
inserting a plurality of random text portions at a plurality of random locations in the content item;
assigning the selected HTML tags to the plurality of random text portions; and
associating a cascading style sheet (CSS) class and an identifier with each random text portion.
3. The method of claim 1 , wherein:
the content item is a partially obfuscated content item that has undergone initial obfuscation;
using the script by the user device to perform the obfuscation of the content item comprises performing further obfuscation of the partially obfuscated content item; and
removing the obfuscation from the obfuscated version of the content item comprises removing the initial obfuscation and the further obfuscation from the obfuscated version of the content item.
4. The method of claim 1 , wherein the content item is modified without user input using the script, wherein the script comprises an obfuscation algorithm that obfuscates the content item based on at least one of inserting a plurality of new text portions at a plurality of locations in the content item or repositioning one or more existing text portions within the content item.
5. The method of claim 1 , wherein the script dynamically updates the style sheet by adding one or more style sheet rules that remove the obfuscation from the obfuscated version of the content item.
6. A user device, comprising:
a memory; and
a processing device, coupled to the memory, to:
receive a content item and a script associated with the content item;
store an obfuscated version of the content item and an associated style sheet in the memory; and
dynamically update the style sheet stored in the memory using the script to remove the obfuscation from the obfuscated version of the content item when the content item is presented in a web browser running on the processing device.
7. The system of claim 6 , wherein the processing device is further to:
perform obfuscation of the content item to generate the obfuscated version of the content item based on modifying the content item using an obfuscation algorithm included in the script.
8. The system of claim 7 , wherein performing the obfuscation of the content item comprises:
selecting one or more HTML tags;
inserting a plurality of random text portions at a plurality of random locations in the content item;
assigning the selected HTML tags to the plurality of random text portions; and
associating a cascading style sheet (CSS) class and an identifier with each random text portion.
9. The system of claim 6 , wherein the received content item comprises the obfuscated version of the content item.
10. The system of claim 6 , wherein the received content item is a partially obfuscated content item that has undergone initial obfuscation, and wherein the processing device is further to;
use the received script to perform additional obfuscation of the partially obfuscated content item;
wherein removing the obfuscation from the obfuscated version of the content item comprises removing the initial obfuscation and the further obfuscation from the obfuscated version of the content item.
11. The system of claim 6 , wherein the content item has been modified without user input and wherein the obfuscation comprises at least one of a plurality of new text portions inserted at a plurality of locations in the content item or a repositioning of one or more existing text portions within the content item.
12. The system of claim 6 , wherein the script dynamically updates the style sheet by adding one or more style sheet rules that remove the obfuscation from the obfuscated version of the content item.
13. The system of claim 6 , wherein the processing device is further to:
receive a request to store the content item to a persistent storage; and
store the obfuscated version of the content item to the persistent storage.
14. A non-transitory computer readable storage medium including instructions that, when executed by a processing device, cause the processing device to perform operations comprising:
receiving a content item and a script associated with the content item;
storing an obfuscated version of the content item and an associated style sheet in the memory; and
dynamically updating the style sheet stored in the memory using the script to remove the obfuscation from the obfuscated version of the content item when the content item is presented in a web browser running on the processing device.
15. The non-transitory computer readable storage medium of claim 14 , the operations further comprising:
performing obfuscation of the content item to generate the obfuscated version of the content item based on modifying the content item using an obfuscation algorithm included in the script.
16. The non-transitory computer readable storage medium of claim 14 , wherein the received content item comprises the obfuscated version of the content item.
17. The non-transitory computer readable storage medium of claim 14 , wherein the received content item is a partially obfuscated content item that has undergone initial obfuscation, the operations further comprising:
using the received script to perform additional obfuscation of the partially obfuscated content item;
wherein removing the obfuscation from the obfuscated version of the content item comprises removing the initial obfuscation and the further obfuscation from the obfuscated version of the content item.
18. The non-transitory computer readable storage medium of claim 14 , wherein the content item has been modified without user input and wherein the obfuscation comprises at least one of a plurality of new text portions inserted at a plurality of locations in the content item or a repositioning of one or more existing text portions within the content item.
19. The non-transitory computer readable storage medium of claim 14 , wherein the script dynamically updates the style sheet by adding one or more style sheet rules that remove the obfuscation from the obfuscated version of the content item.
20. The non-transitory computer readable storage medium of claim 14 , the operations further comprising:
receiving a request to store the content item to a persistent storage; and
storing the obfuscated version of the content item to the persistent storage.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/201,705 US20140189499A1 (en) | 2011-07-19 | 2014-03-07 | Obscuring digital content items |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/186,340 US8700991B1 (en) | 2011-07-19 | 2011-07-19 | Protecting content presented in a web browser |
US14/201,705 US20140189499A1 (en) | 2011-07-19 | 2014-03-07 | Obscuring digital content items |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/186,340 Continuation US8700991B1 (en) | 2011-07-19 | 2011-07-19 | Protecting content presented in a web browser |
Publications (1)
Publication Number | Publication Date |
---|---|
US20140189499A1 true US20140189499A1 (en) | 2014-07-03 |
Family
ID=50441610
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/186,340 Expired - Fee Related US8700991B1 (en) | 2011-07-19 | 2011-07-19 | Protecting content presented in a web browser |
US14/201,705 Abandoned US20140189499A1 (en) | 2011-07-19 | 2014-03-07 | Obscuring digital content items |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/186,340 Expired - Fee Related US8700991B1 (en) | 2011-07-19 | 2011-07-19 | Protecting content presented in a web browser |
Country Status (1)
Country | Link |
---|---|
US (2) | US8700991B1 (en) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140223290A1 (en) * | 2013-02-01 | 2014-08-07 | Qualcomm Incorporated | Creating a transposed document defined by transposed markup language including transposed text |
US8949660B1 (en) * | 2011-12-14 | 2015-02-03 | Google Inc. | Remote deobfuscation of compressed code |
US9270647B2 (en) | 2013-12-06 | 2016-02-23 | Shape Security, Inc. | Client/server security by an intermediary rendering modified in-memory objects |
US9356954B2 (en) | 2014-01-20 | 2016-05-31 | Shape Security, Inc. | Intercepting and supervising calls to transformed operations and objects |
US9438625B1 (en) * | 2014-09-09 | 2016-09-06 | Shape Security, Inc. | Mitigating scripted attacks using dynamic polymorphism |
US9479529B2 (en) | 2014-07-22 | 2016-10-25 | Shape Security, Inc. | Polymorphic security policy action |
US9529994B2 (en) | 2014-11-24 | 2016-12-27 | Shape Security, Inc. | Call stack integrity check on client/server systems |
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 |
US9582666B1 (en) | 2015-05-07 | 2017-02-28 | Shape Security, Inc. | Computer system for improved security of server computers interacting with client computers |
US9602543B2 (en) | 2014-09-09 | 2017-03-21 | Shape Security, Inc. | Client/server polymorphism using polymorphic hooks |
US9621583B2 (en) | 2014-05-29 | 2017-04-11 | Shape Security, Inc. | Selectively protecting valid links to pages of a web site |
CN106649215A (en) * | 2015-10-23 | 2017-05-10 | 甲骨文国际公司 | Generating style sheets during runtime |
US9800602B2 (en) | 2014-09-30 | 2017-10-24 | Shape Security, Inc. | Automated hardening of web page content |
US9807113B2 (en) * | 2015-08-31 | 2017-10-31 | Shape Security, Inc. | Polymorphic obfuscation of executable code |
US10216488B1 (en) | 2016-03-14 | 2019-02-26 | Shape Security, Inc. | Intercepting and injecting calls into operations and objects |
US10230718B2 (en) | 2015-07-07 | 2019-03-12 | Shape Security, Inc. | Split serving of computer code |
US11281803B2 (en) * | 2019-12-11 | 2022-03-22 | Sap Se | Obfuscating content based on requesting user roles |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9502003B2 (en) | 2014-01-05 | 2016-11-22 | Spatial Cam Llc | Apparatus and methods to display a modified image |
US9489526B1 (en) * | 2014-01-21 | 2016-11-08 | Shape Security, Inc. | Pre-analyzing served content |
US9444797B2 (en) * | 2014-07-10 | 2016-09-13 | Empire Technology Development Llc | Protection of private data |
US11061991B2 (en) | 2014-09-05 | 2021-07-13 | Airwatch, Llc | Secure document sharing |
EP3588329A1 (en) * | 2018-06-27 | 2020-01-01 | Unify Patente GmbH & Co. KG | Computer-implemented method and system for providing a review process of a document |
US20200218970A1 (en) * | 2019-01-07 | 2020-07-09 | Gyrfalcon Technology Inc. | Artificial Intelligence Devices For Keywords Detection |
US11328123B2 (en) * | 2019-03-14 | 2022-05-10 | International Business Machines Corporation | Dynamic text correction based upon a second communication containing a correction command |
US11562134B2 (en) * | 2019-04-02 | 2023-01-24 | Genpact Luxembourg S.à r.l. II | Method and system for advanced document redaction |
US12099622B2 (en) * | 2020-12-21 | 2024-09-24 | Cryptography Research, Inc | Protection of neural networks by obfuscation of activation functions |
Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6125186A (en) * | 1996-11-28 | 2000-09-26 | Fujitsu Limited | Encryption communication system using an agent and a storage medium for storing that agent |
US7073199B1 (en) * | 2000-08-28 | 2006-07-04 | Contentguard Holdings, Inc. | Document distribution management method and apparatus using a standard rendering engine and a method and apparatus for controlling a standard rendering engine |
US7177814B2 (en) * | 2002-02-07 | 2007-02-13 | Sap Aktiengesellschaft | Dynamic grammar for voice-enabled applications |
US7237010B2 (en) * | 2004-03-18 | 2007-06-26 | International Business Machines Corporation | Method, system and computer program product for generating and processing a disposable email address |
US20070200851A1 (en) * | 2006-02-27 | 2007-08-30 | Said Yasmin H | Policy Analysis and Action Decision Tool |
US7325196B1 (en) * | 2003-06-16 | 2008-01-29 | Microsoft Corporation | Method and system for manipulating page control content |
US20080222736A1 (en) * | 2007-03-07 | 2008-09-11 | Trusteer Ltd. | Scrambling HTML to prevent CSRF attacks and transactional crimeware attacks |
US20090144829A1 (en) * | 2007-11-30 | 2009-06-04 | Grigsby Travis M | Method and apparatus to protect sensitive content for human-only consumption |
US20090287988A1 (en) * | 2008-05-19 | 2009-11-19 | Zachary Cohen | Methods, systems, and computer readable media for automatically and securely citing and transferring electronically formatted information and for maintaining association between the cited or transferred information and back-end information |
US20090292930A1 (en) * | 2008-04-24 | 2009-11-26 | Marano Robert F | System, method and apparatus for assuring authenticity and permissible use of electronic documents |
US20100185862A1 (en) * | 2009-01-20 | 2010-07-22 | International Business Machines Corporation | Method and System for Encrypting JavaScript Object Notation (JSON) Messages |
US20110173534A1 (en) * | 2009-08-21 | 2011-07-14 | Peerspin, Inc | Notification system for increasing user engagement |
US20110246880A1 (en) * | 2010-04-06 | 2011-10-06 | Microsoft Corporation | Interactive application assistance, such as for web applications |
US20120117458A1 (en) * | 2010-04-01 | 2012-05-10 | Lee Hahn Holloway | Internet-based proxy service to modify internet responses |
US20120117239A1 (en) * | 2010-04-01 | 2012-05-10 | Lee Hahn Holloway | Internet-based proxy service for responding to server offline errors |
US8473740B2 (en) * | 2011-05-09 | 2013-06-25 | Xerox Corporation | Method and system for secured management of online XML document services through structure-preserving asymmetric encryption |
-
2011
- 2011-07-19 US US13/186,340 patent/US8700991B1/en not_active Expired - Fee Related
-
2014
- 2014-03-07 US US14/201,705 patent/US20140189499A1/en not_active Abandoned
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6125186A (en) * | 1996-11-28 | 2000-09-26 | Fujitsu Limited | Encryption communication system using an agent and a storage medium for storing that agent |
US7073199B1 (en) * | 2000-08-28 | 2006-07-04 | Contentguard Holdings, Inc. | Document distribution management method and apparatus using a standard rendering engine and a method and apparatus for controlling a standard rendering engine |
US7177814B2 (en) * | 2002-02-07 | 2007-02-13 | Sap Aktiengesellschaft | Dynamic grammar for voice-enabled applications |
US7325196B1 (en) * | 2003-06-16 | 2008-01-29 | Microsoft Corporation | Method and system for manipulating page control content |
US7237010B2 (en) * | 2004-03-18 | 2007-06-26 | International Business Machines Corporation | Method, system and computer program product for generating and processing a disposable email address |
US20070200851A1 (en) * | 2006-02-27 | 2007-08-30 | Said Yasmin H | Policy Analysis and Action Decision Tool |
US20080222736A1 (en) * | 2007-03-07 | 2008-09-11 | Trusteer Ltd. | Scrambling HTML to prevent CSRF attacks and transactional crimeware attacks |
US20090144829A1 (en) * | 2007-11-30 | 2009-06-04 | Grigsby Travis M | Method and apparatus to protect sensitive content for human-only consumption |
US20090292930A1 (en) * | 2008-04-24 | 2009-11-26 | Marano Robert F | System, method and apparatus for assuring authenticity and permissible use of electronic documents |
US20090287988A1 (en) * | 2008-05-19 | 2009-11-19 | Zachary Cohen | Methods, systems, and computer readable media for automatically and securely citing and transferring electronically formatted information and for maintaining association between the cited or transferred information and back-end information |
US20100185862A1 (en) * | 2009-01-20 | 2010-07-22 | International Business Machines Corporation | Method and System for Encrypting JavaScript Object Notation (JSON) Messages |
US20110173534A1 (en) * | 2009-08-21 | 2011-07-14 | Peerspin, Inc | Notification system for increasing user engagement |
US20120117458A1 (en) * | 2010-04-01 | 2012-05-10 | Lee Hahn Holloway | Internet-based proxy service to modify internet responses |
US20120117239A1 (en) * | 2010-04-01 | 2012-05-10 | Lee Hahn Holloway | Internet-based proxy service for responding to server offline errors |
US20120117267A1 (en) * | 2010-04-01 | 2012-05-10 | Lee Hahn Holloway | Internet-based proxy service to limit internet visitor connection speed |
US20120117649A1 (en) * | 2010-04-01 | 2012-05-10 | Lee Hahn Holloway | Internet-based proxy security services |
US20120116896A1 (en) * | 2010-04-01 | 2012-05-10 | Lee Hahn Holloway | Internet-based proxy service to modify internet responses |
US20120117641A1 (en) * | 2010-04-01 | 2012-05-10 | Lee Hahn Holloway | Methods and apparatuses for providing internet-based proxy services |
US20120117222A1 (en) * | 2010-04-01 | 2012-05-10 | Lee Hahn Holloway | Recording internet visitor threat information through an internet-based proxy service |
US20110246880A1 (en) * | 2010-04-06 | 2011-10-06 | Microsoft Corporation | Interactive application assistance, such as for web applications |
US8473740B2 (en) * | 2011-05-09 | 2013-06-25 | Xerox Corporation | Method and system for secured management of online XML document services through structure-preserving asymmetric encryption |
Non-Patent Citations (5)
Title |
---|
"script;" Microsoft Computer Dictionary; May 1, 2002; Fifth Edition; Microsoft Press; Page 586. * |
Doctorow, Corey; Fiendish CSS-based technique for obfuscating text; February 11, 2011; BoingBoing.net; 1 Page. * |
Lance Norskog; Unique Key; February 3, 2009; Solr Wiki; Pages 1-2. * |
Raskin, Aza; How to Phish, Protect Your Email, and Defeat Copy-and-Paste with CSS; 2010; Pages 1-2. * |
Saving Ebooks with Internet Explorer; June 20, 2004; ibiblio.org; Pages 1-2. * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949660B1 (en) * | 2011-12-14 | 2015-02-03 | Google Inc. | Remote deobfuscation of compressed code |
US20140223290A1 (en) * | 2013-02-01 | 2014-08-07 | Qualcomm Incorporated | Creating a transposed document defined by transposed markup language including transposed text |
US9270647B2 (en) | 2013-12-06 | 2016-02-23 | Shape Security, Inc. | Client/server security by an intermediary rendering modified in-memory objects |
US10027628B2 (en) | 2013-12-06 | 2018-07-17 | Shape Security, Inc. | Client/server security by an intermediary rendering modified in-memory objects |
US9356954B2 (en) | 2014-01-20 | 2016-05-31 | Shape Security, Inc. | Intercepting and supervising calls to transformed operations and objects |
US9712561B2 (en) | 2014-01-20 | 2017-07-18 | Shape Security, Inc. | Intercepting and supervising, in a runtime environment, calls to one or more objects in a web page |
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 |
US9621583B2 (en) | 2014-05-29 | 2017-04-11 | Shape Security, Inc. | Selectively protecting valid links to pages of a web site |
US9479529B2 (en) | 2014-07-22 | 2016-10-25 | Shape Security, Inc. | Polymorphic security policy action |
US9602543B2 (en) | 2014-09-09 | 2017-03-21 | Shape Security, Inc. | Client/server polymorphism using polymorphic hooks |
US9438625B1 (en) * | 2014-09-09 | 2016-09-06 | Shape Security, Inc. | Mitigating scripted attacks using dynamic polymorphism |
US9800602B2 (en) | 2014-09-30 | 2017-10-24 | Shape Security, Inc. | Automated hardening of web page content |
US9529994B2 (en) | 2014-11-24 | 2016-12-27 | Shape Security, Inc. | Call stack integrity check on client/server systems |
USRE50024E1 (en) | 2014-11-24 | 2024-06-25 | Shape Security, Inc. | Call stack integrity check on client/server systems |
US9582666B1 (en) | 2015-05-07 | 2017-02-28 | Shape Security, Inc. | Computer system for improved security of server computers interacting with client computers |
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 |
US10382482B2 (en) * | 2015-08-31 | 2019-08-13 | Shape Security, Inc. | Polymorphic obfuscation of executable code |
CN106649215A (en) * | 2015-10-23 | 2017-05-10 | 甲骨文国际公司 | Generating style sheets during runtime |
US10216488B1 (en) | 2016-03-14 | 2019-02-26 | Shape Security, Inc. | Intercepting and injecting calls into operations and objects |
US11281803B2 (en) * | 2019-12-11 | 2022-03-22 | Sap Se | Obfuscating content based on requesting user roles |
Also Published As
Publication number | Publication date |
---|---|
US8700991B1 (en) | 2014-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8700991B1 (en) | Protecting content presented in a web browser | |
US11126671B2 (en) | Serializing plug-in data in a web page | |
US10042951B2 (en) | Contextual commenting on the web | |
US9247016B2 (en) | Unified tracking data management | |
US8977653B1 (en) | Modifying web pages to reduce retrieval latency | |
EP3345114B1 (en) | Disabling malicious browser extensions | |
US9954880B2 (en) | Protection via webpage manipulation | |
WO2018106974A1 (en) | Content validation and coding for search engine optimization | |
WO2013178094A1 (en) | Page display method and device | |
KR102344780B1 (en) | Embeddable media content search widget | |
AU2020352890B2 (en) | Dynamic typesetting | |
US20100257413A1 (en) | Verification service for dynamic content update | |
US11914700B2 (en) | Reducing remote procedure calls for multimedia content delivery | |
US10169304B1 (en) | Providing different font hints based on device, text and font context | |
Hejing et al. | Application research of crawler and data analysis based on python | |
US10289613B2 (en) | Element identifier generation | |
KR102042722B1 (en) | Electronic Book Content Protection | |
US20140281916A1 (en) | Supporting Font Character Kerning | |
US20180054652A1 (en) | Embeddable media content search widget | |
US9098228B2 (en) | Determining content rendering capabilities for web browser optimization | |
Krawczyk et al. | Best practices for creating websites optimized for mobile devices | |
Fielding et al. | Introduction to Responsive Design | |
vanden Broucke et al. | Examples | |
Castelluccio | Chrome wars. | |
Casario et al. | Multidevice Development |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: AMAZON TECHNOLOGIES, INC., NEVADA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GIGLIOTTI, SAMUEL S.;SNODGRASS, RYAN J.;VAUGHN, CHARLES P.;AND OTHERS;SIGNING DATES FROM 20111017 TO 20111025;REEL/FRAME:044527/0616 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |