US20140189499A1 - Obscuring digital content items - Google Patents

Obscuring digital content items Download PDF

Info

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
Application number
US14/201,705
Inventor
Samuel S. Gigliotti
Ryan J. Snodgrass
Charles P. Vaughn
Noah L. Callaway
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Priority to US14/201,705 priority Critical patent/US20140189499A1/en
Publication of US20140189499A1 publication Critical patent/US20140189499A1/en
Assigned to AMAZON TECHNOLOGIES, INC. reassignment AMAZON TECHNOLOGIES, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SNODGRASS, RYAN J., CALLAWAY, NOAH L., GIGLIOTTI, SAMUEL S., VAUGHN, CHARLES P.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • G06F17/2247
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/84Protecting input, output or interconnection devices output devices, e.g. displays or monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/032Protect 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.

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

    RELATED APPLICATIONS
  • 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.
  • BACKGROUND
  • 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.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • 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.
  • DETAILED DESCRIPTION
  • 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 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)).
  • 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 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. 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 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. 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 the item 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, 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. 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 the item providing system 102, the content obfuscation subsystem 108 provides a modified version of the requested content item to the web browser 110, along with the associated script. When the web browser 110 renders the modified version, 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. In one embodiment, 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.
  • 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 the web browser 110. When the item providing system 102 receives a browser request for a content item, 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. 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 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.
  • 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 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. In one embodiment, 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. The 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. In one embodiment, 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.
  • As discussed, in one embodiment, 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. 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, the content modifier 204 may create different obfuscated versions for different browsers and store them in the content item store 202. Alternatively, 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. 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 the content modifier 204 more difficult.
  • In one embodiment, the content modifier 204 selects a certain obfuscation algorithm 206 based on predefined parameters stored in the configuration 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 selects obfuscation 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 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.
  • 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 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. 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 obfuscated content store 212. 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. 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, 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, 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 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.
  • 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). At block 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. At block 310, the item providing system creates a script corresponding to the obfuscation algorithm. At block 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 with FIGS. 4 and 5.
  • At block 314, the item providing system receives a request for a content item from a web browser. At block 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 302, 304, 306 and 310, and then associate the content item with the script at block 312. In response to receiving a request for the content item at block 314, 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.
  • 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. At block 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. At block 354, the script stores the content item and style sheet in memory of the user device. At block 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 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). At block 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. At block 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_ID1 {display:none}” and “.RANDOM_ID2 {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 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). 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. At block 506, the item providing system creates a JavaScript, which when executed, updates the style sheet to add CSS rules that undo repositioning. At block 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 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).
  • 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 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. 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 a data storage device 716, which communicate with each other via a bus 706.
  • 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 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.
  • 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)

What is claimed is:
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.
US14/201,705 2011-07-19 2014-03-07 Obscuring digital content items Abandoned US20140189499A1 (en)

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)

* Cited by examiner, † Cited by third party
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 (8)

* Cited by examiner, † Cited by third party
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

Citations (16)

* Cited by examiner, † Cited by third party
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

Patent Citations (21)

* Cited by examiner, † Cited by third party
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
US20120117641A1 (en) * 2010-04-01 2012-05-10 Lee Hahn Holloway Methods and apparatuses for providing internet-based proxy services
US20120117239A1 (en) * 2010-04-01 2012-05-10 Lee Hahn Holloway Internet-based proxy service for responding to server offline errors
US20120117222A1 (en) * 2010-04-01 2012-05-10 Lee Hahn Holloway Recording internet visitor threat information through an internet-based proxy service
US20120116896A1 (en) * 2010-04-01 2012-05-10 Lee Hahn Holloway Internet-based proxy service to modify internet responses
US20120117649A1 (en) * 2010-04-01 2012-05-10 Lee Hahn Holloway Internet-based proxy security services
US20120117267A1 (en) * 2010-04-01 2012-05-10 Lee Hahn Holloway Internet-based proxy service to limit internet visitor connection speed
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)

* Cited by examiner, † Cited by third party
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 (20)

* Cited by examiner, † Cited by third party
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
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
US10567529B2 (en) Unified tracking data management
US11126671B2 (en) Serializing plug-in data in a web page
US10042951B2 (en) Contextual commenting on the web
US8977653B1 (en) Modifying web pages to reduce retrieval latency
US9996501B1 (en) Validating document content prior to format conversion based on a calculated threshold as a function of document size
EP3345114B1 (en) Disabling malicious browser extensions
US11662872B1 (en) Providing content presentation elements in conjunction with a media content item
WO2013178094A1 (en) Page display method and device
KR102344780B1 (en) Embeddable media content search widget
US10169304B1 (en) Providing different font hints based on device, text and font context
AU2020352890B2 (en) Dynamic typesetting
US20100257413A1 (en) Verification service for dynamic content update
Hejing et al. Application research of crawler and data analysis based on python
KR102042722B1 (en) Electronic Book Content Protection
US20140281916A1 (en) Supporting Font Character Kerning
US10289613B2 (en) Element identifier generation
WO2019040048A1 (en) Reducing remote procedure calls for multimedia content delivery
US9098228B2 (en) Determining content rendering capabilities for web browser optimization
US9842109B1 (en) Illustrating context sensitive text
Fielding et al. Introduction to Responsive Design
vanden Broucke et al. Examples
US10423701B1 (en) Web asset modification
Castelluccio Chrome wars.

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