US9398030B2 - Ascertaining domain contexts - Google Patents

Ascertaining domain contexts Download PDF

Info

Publication number
US9398030B2
US9398030B2 US14/035,430 US201314035430A US9398030B2 US 9398030 B2 US9398030 B2 US 9398030B2 US 201314035430 A US201314035430 A US 201314035430A US 9398030 B2 US9398030 B2 US 9398030B2
Authority
US
United States
Prior art keywords
domain context
party object
domain
context
call
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related, expires
Application number
US14/035,430
Other versions
US20140026219A1 (en
Inventor
Govind Varshney
Marc A. Silbey
Shankar Ganesh
Robert Impollonia
Venkatraman V. Kudallur
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Priority to US14/035,430 priority Critical patent/US9398030B2/en
Publication of US20140026219A1 publication Critical patent/US20140026219A1/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GANESH, SHANKAR, IMPOLLONIA, ROBERT, KUDALLUR, VENKATRAMAN V., SILBEY, MARC A., VARSHNEY, GOVIND
Application granted granted Critical
Publication of US9398030B2 publication Critical patent/US9398030B2/en
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • G06F16/9566URL specific, e.g. using aliases, detecting broken or misspelled links
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • G06F17/30887
    • G06F17/30902

Definitions

  • Ascertaining domain contexts can be useful for a number of reasons. For example, cross domain security issues can arise when a script (i.e. software code) executes in the wrong domain. Scripts can execute in the wrong domain for reasons that include, among others, architectural flaws in an application's code path. Cross domain exploits can allow malicious code to access and manipulate information that would otherwise be unavailable to the code.
  • a script i.e. software code
  • Scripts can execute in the wrong domain for reasons that include, among others, architectural flaws in an application's code path.
  • Cross domain exploits can allow malicious code to access and manipulate information that would otherwise be unavailable to the code.
  • a browser application browses to a web page, that particular web page can host other web pages and objects within it. That is, the web page can retrieve content from other web sites for use in conjunction with the web page. For example, an image or some other object on or associated with a web page may be downloaded from a web site which is different from the site from which the web page itself is downloaded.
  • a web site which is different from the site from which the web page itself is downloaded.
  • rogue content may maliciously attempt to interact with the web page with which it is associated, or with content presented in other windows that are open on the user's computer.
  • a rogue object may attempt to capture user information (as by recording the user's keystrokes) and provide the information to an unauthorized entity or person.
  • an application receives content that may contain a script (i.e. code) in the form of a URL.
  • the script is executed in the context of the domain associated with the received content, rather than requiring the application or some other component to attempt to navigate to a script URL, such as a web location, to attempt to ascertain the domain context of the script.
  • third party objects or code are required to provide their domain context to an application in order for the application to make a security-based decision.
  • FIG. 1 is a high level diagram of a system in accordance with one embodiment.
  • FIG. 2 is a flow diagram that describes steps in a method in accordance with one embodiment.
  • FIG. 3 is a high level system/method diagram that illustrates aspects of one embodiment.
  • FIG. 4 is a high level system/method diagram that illustrates aspects of one embodiment.
  • FIG. 5 illustrates an exemplary computing device that can be used to implement one or more embodiments.
  • an application receives content that may contain a script (i.e. code) in the form of a URL.
  • the script is executed in the context of the domain associated with the received content, rather than requiring the application or some other component to attempt to navigate to a script URL, such as a web location, to attempt to ascertain the domain context of the script.
  • an application such as a web browser application, causes script that it receives in connection with HTML for a web page, to execute and run in the context of the page from which it came, rather than attempting to navigate to a script or code URL location to ascertain the domain context of the script. This embodiment is discussed under the heading “Executing Script in the Context of the Page From Which it Comes” below.
  • third party objects or code are required to provide their domain context to an application in order for the application to make a security-based decision.
  • the objects or code itself can be aware that they need to provide the domain context and hence, when calls are made by the object, the domain context is passed as well.
  • the objects or code can be wrapped such that the objects or code are not necessarily aware that domain context needs to be passed. Yet, because of the wrapper, the domain context is passed whenever the objects or code makes a call to another component. This embodiment is discussed under the heading “Requiring Domain Context for Third Party Objects and Code” below.
  • content e.g. HTML content
  • an application e.g. a web browser application
  • the URL of the web page from where it came is identified to ascertain the domain context of the script portions. In the illustrated and described embodiment, this is done without employing a navigation activity in which an attempt is made to navigate to a location, such as a web location, to ascertain the domain context.
  • a navigation activity involves an application communicating with a handler object for a particular URL syntax. For example, to navigate to a script URL, the application would typically call a script URL handler and pass the handler the script. The handler would then attempt to ascertain the domain context. Thus, in this context, in at least one embodiment, not employing a navigation activity would mean not employing another handler object in the manner mentioned above.
  • the domain context is ascertained by contacting a script engine to ascertain the domain associated with the script portions. Once the domain associated with the script portions is ascertained, the script can be executed in the context of its domain. Put another way, the script can be executed in the context of the HTML from which it came. This is a departure from past approaches.
  • the HTML includes an anchor tag that contains script or code that is to be executed in connection with a web page that is presented to a user.
  • the script presents an alert dialog for the user.
  • a hyperlink “here” may be displayed on the page.
  • the web browser would attempt to navigate to a particular web location and ascertain the domain context associated with the script.
  • the browser would likely ascertain the domain context and hence, the script alert would be executed in the ascertained domain context.
  • a navigation would occur and the script would be executed in the domain context ascertained via the navigation.
  • FIG. 1 is a high level diagram that illustrates a system 100 that includes a computing device executing a web browser application 102 and a script engine 104 in accordance with one embodiment.
  • the computing device is communicatively linked via the Internet 106 with one or more web servers 108 from which the computing device can receive content, such as HTML, that defines web pages that are displayable by web browser.
  • content such as HTML
  • web browser 102 when web browser 102 receives HTML content, it processes the HTML content and identifies any scripts associated with the HTML content.
  • the HTML can also typically identify an associated script engine (i.e. an object that processes scripts) using, for example, a class identifier attribute of the HTML.
  • the web browser can then call an appropriate interface to instantiate the appropriate script engine.
  • the web browser would be considered as the scripting host and is said to “own” the scripting engine.
  • the host application in this case the web browser 102 —calls the script engine 104 and provides the script to the script engine for processing.
  • the web browser 102 now ascertains the domain context of the script. In this example, this is done by contacting the script engine 104 and ascertaining from the script engine which pages or domains the script engine attached to when it received the script from the web browser. Specifically, the domain context is taken from the page that contains the downloaded HTML including script code. The domain context is stored with the HTML when it gets downloaded.
  • the web browser can now take measures to ensure and enforce cross domain boundaries. That is, the web browser can now take steps to ensure that the script executes in the domain context in which it is intended to execute. For example, once the web browser ascertains the domain context of the script, it can ascertain the domain context of the target window—that is, the target window in which the script is to execute. If the domain contexts of the script and the target window match, then the web browser can call a method on the script engine 104 to execute the script in the target window. On the other hand, if the domain contexts do not match (for example, if the script were attempting to execute in a different target window for a malicious purpose), the application can disallow this by making an appropriate call to the script engine.
  • this process executes the script in the context of the actual HTML from which it came.
  • FIG. 2 is a flow diagram that describes steps in a method in accordance with one embodiment. The method can be implemented in connection with any suitable hardware, software, firmware or combination thereof.
  • Step 200 receives content that can contain a script.
  • the received content can comprise any suitable type of content.
  • content comprises HTML content that describes web page content, and this act is performed by a suitably configured web browser application.
  • Other types of content can include, by way of example and not limitation, email content, instant messaging content that includes code, content associated with file transfers and the like.
  • Step 202 evaluates the content to identify any scripts associated with the content.
  • This step can be performed in any suitable way. That is, various different types of script can have various identifying characteristics, such as syntax-based characteristics, that enable it to be identified in the context of the content of which it is a part. For example, in the context of HTML that is received by a web browser application, the script may be identified, at least in part, by looking for a URL that does not have an associated domain.
  • javascript can comprise part of the HTML that a web browser receives.
  • One way of representing javascript in HTML is in a URL-like fashion, except that the representation does not have an associated domain. Hence, this is one way of identifying a script.
  • this step can be executed to look for any code that that should be executed in a particular context.
  • C++ code may be meant to only run in a specific application or only on a particular server.
  • step 204 attempts to ascertain a context associated with the identified script(s) without attempting to navigate to a web location.
  • the context that is attempted to be ascertained is a domain context.
  • This step can be performed in any suitable way.
  • the domain context was able to be ascertained by contacting the associated script engine to ascertain domains or pages to which the script engine attached.
  • This step can, however, be performed in other ways without departing from the spirit and scope of the claimed subject matter.
  • the script or code could carry with it its own context.
  • Such context could, for example, reside in the form of a verifiable signature.
  • the application can make a domain context-based decision. For example, the application can take whatever steps are appropriate for enforcing cross domain security. For example, as in the example above, a check can be made to ascertain whether the script's domain context matches with the target window's domain context. If the domain contexts match, then the script is allowed to execute. Other types of decisions that might be made can include decisions that pertain to different types of functionality that may or may not be permitted. For example, an email client may only allow a special format to be received from specific servers, such as a Hotmail server. Alternately or additionally, an application which downloads content such as software updates may only download the content if it comes from a specific domain.
  • the above-described embodiment can enforce cross domain security by taking steps to ensure that scripts are identified and then executed in the proper domain context.
  • third party objects or code are required to provide their domain context to an application in order for the application to make a security-based decision.
  • the application can comprise any suitable application or type of application.
  • the application can comprise a web application, such as a web-based email application or web browser. Alternately or additionally, the application can comprise other types of applications.
  • the security-based decision can be one that allows the objects or code to perform a particular functionality or not.
  • third party objects or code are required to pass, in associated calls that they make to various applications, their domain context.
  • third party objects are wrapped or encapsulated in a manner in which various calls that the objects or code makes provide the domain context of the object or code. This particular approach can be utilized without requiring the objects or code to change their architecture. As such, this approach is useful in the context of supporting legacy objects or code.
  • objects or code are provided with a way of determining or ascertaining their domain context so that they can use that domain context in calls to various applications.
  • the applications can then make a decision, based on the passed-in domain context, as to whether to allow the object or code to execute whatever functionality it was intending to execute.
  • FIG. 3 illustrates a system and a related method in accordance with one embodiment.
  • a third party object 300 is provided and can constitute any suitable object.
  • third party object and “code” are used interchangeably.
  • third party object 300 can comprise an object that is instantiated as a result of application 302 receiving some type of content.
  • application 302 comprises a web browser application
  • third party object 300 might be instantiated or activated responsive to application 302 receiving HTML content that contains data intended to be processed by an instance of a particular object.
  • the HTML content may include data and an indication that the data is to be processed and rendered by a flash media object.
  • the object makes a call, at step 350 , to an application requesting its domain context.
  • this is represented by a call from object 300 to an interface IDomain requesting its domain context.
  • application 302 receives the call, at step 352 , from the third party object requesting its domain context.
  • Applications can ascertain domain context by asking the networking object which downloaded the content. Essentially, the application asks for the source identifier that the content came from. In the case of a web browser, this would be the server name.
  • Application 302 at step 354 , returns the domain context to the third party object. In the illustrated example, this is represented by a return from the application to the object with the domain context “xyz”.
  • the third party object receives, at step 356 , the domain context from the application and, at step 358 , makes one or more subsequent calls to the application (or other applications) and includes, along with the call, its domain context.
  • the domain context can be represented in a call parameter. In the illustrated example, this is represented by a call TakeAction ( . . . , xyz) that is made on the application 302 .
  • third party objects can be required to provide their domain context any time they make a call on another object or application.
  • application 302 receives the call(s), at step 360 , from the third party object, including the domain context.
  • Step 362 then ascertains the third party object's domain context and, in turn, step 364 makes a domain context-based decision. Any suitable decision can be made. For example, by knowing the domain context of the object that makes a call, the call recipient can decide whether to allow the call to proceed or not. As an example, consider the following.
  • third party object 300 receives its domain context “xyz” and calls an application that does not recognize the domain context, is otherwise configured to not allow any operations that are associated with the “xyz” context, or ascertains that the object's domain context does not match a target window domain context. In this case, the application can refuse to allow the call to execute. In this manner, cross domain security can be enforced.
  • objects or code are wrapped in a manner which enables the domain context of the object or code to be provided to an application when the application is called.
  • the object need not be aware of the necessity to provide its domain context when call applications.
  • third party object 400 can constitute any suitable object.
  • third party object 400 can comprise an object that is instantiated as a result of application 402 receiving some type of content.
  • application 402 comprises a web browser application
  • third party object 400 might be instantiated or activated responsive to application 402 receiving HTML content that contains data intended to be processed by an instance of a particular object.
  • the HTML content may include data and an indication that the data is to be processed and rendered by a flash media object.
  • application 402 creates or activates, at step 450 , the third party object.
  • Application 402 then wraps, at step 452 , the third party object. Wrapping of the object can take place in any suitable way and need not necessarily be considered as a step that is different from or in addition to step 450 .
  • application 402 can own the activation space in which the object is activated. In this case, by virtue of owning the activation space, application 402 can take steps to ensure that the domain context of third party object 400 is provided in subsequent calls.
  • a wrapper for third party object 400 is indicated at 404 .
  • third party object 400 makes a call to application 402 .
  • the call is illustrated as a TakeAction 0 call.
  • wrapper 404 appends a domain context to the call that is made by the third party object. In the illustrated example, this is represented as the domain context “xyz” which is illustrated as appended to the call that third party object 400 makes.
  • Application 402 receives, at step 458 , one or more calls from the third party object including the appended domain context and step 460 ascertains the third party object's domain context.
  • step 462 makes a domain context-based decision. Any suitable decision can be made. For example, by knowing the domain context of the object that makes a call, the call recipient can decide whether to allow the call to proceed or not. As an example, consider the following.
  • FIG. 5 shows an exemplary computer system having components that can be used to implement one or more of the embodiments described above.
  • Computer system 530 includes one or more processors or processing units 532 , a system memory 534 , and a bus 536 that couples various system components including the system memory 534 to processors 532 .
  • the bus 536 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
  • the system memory 534 includes read only memory (ROM) 538 and random access memory (RAM) 540 .
  • ROM read only memory
  • RAM random access memory
  • a basic input/output system (BIOS) 542 containing the basic routines that help to transfer information between elements within computer 530 , such as during start-up, is stored in ROM 538 .
  • Computer 530 further includes a hard disk drive 544 for reading from and writing to a hard disk (not shown), a magnetic disk drive 546 for reading from and writing to a removable magnetic disk 548 , and an optical disk drive 550 for reading from or writing to a removable optical disk 552 such as a CD ROM or other optical media.
  • the hard disk drive 544 , magnetic disk drive 546 , and optical disk drive 550 are connected to the bus 536 by an SCSI interface 554 or some other appropriate interface.
  • the drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for computer 530 .
  • exemplary environment described herein employs a hard disk, a removable magnetic disk 548 and a removable optical disk 552 , it should be appreciated by those skilled in the art that other types of computer-readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROMs), and the like, may also be used in the exemplary operating environment.
  • RAMs random access memories
  • ROMs read only memories
  • a number of program modules may be stored on the hard disk 544 , magnetic disk 548 , optical disk 552 , ROM 538 , or RAM 540 , including an operating system 558 , one or more application programs 560 , other program modules 562 , and program data 564 .
  • a user may enter commands and information into computer 530 through input devices such as a keyboard 566 and a pointing device 568 .
  • Other input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like.
  • These and other input devices are connected to the processing unit 532 through an interface 570 that is coupled to the bus 536 .
  • a monitor 572 or other type of display device is also connected to the bus 536 via an interface, such as a video adapter 574 .
  • personal computers typically include other peripheral output devices (not shown) such as speakers and printers.
  • Computer 530 commonly operates in a networked environment using logical connections to one or more remote computers, such as a remote computer 576 .
  • the remote computer 576 may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer 530 , although only a memory storage device 578 has been illustrated in FIG. 5 .
  • the logical connections depicted in FIG. 5 include a local area network (LAN) 580 and a wide area network (WAN) 582 .
  • LAN local area network
  • WAN wide area network
  • Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
  • computer 530 When used in a LAN networking environment, computer 530 is connected to the local network 580 through a network interface or adapter 584 .
  • computer 530 When used in a WAN networking environment, computer 530 typically includes a modem 586 or other means for establishing communications over the wide area network 582 , such as the Internet.
  • the modem 586 which may be internal or external, is connected to the bus 536 via a serial port interface 556 .
  • program modules depicted relative to the personal computer 530 may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
  • the data processors of computer 530 are programmed by means of instructions stored at different times in the various computer-readable storage media of the computer.
  • Programs and operating systems are typically distributed, for example, on floppy disks or CD-ROMs. From there, they are installed or loaded into the secondary memory of a computer. At execution, they are loaded at least partially into the computer's primary electronic memory.
  • the invention described herein includes these and other various types of computer-readable storage media when such media contain instructions or programs for implementing the steps described below in conjunction with a microprocessor or other data processor.
  • the invention also includes the computer itself when programmed according to the methods and techniques described below.
  • programs and other executable program components such as the operating system are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computer, and are executed by the data processor(s) of the computer.
  • an application receives content that may contain a script (i.e. code) in the form of a URL.
  • the script is executed in the context of the domain associated with the received content, rather than requiring the application or some other component to attempt to navigate to a script URL location, such as a web location, to attempt to ascertain the domain context of the script.
  • third party objects or code are required to provide their domain context to an application in order for the application to make a security-based decision.

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Various embodiments pertain to ascertaining domain contexts. In one embodiment, an application receives content that may contain a script (i.e. code). In this case, the domain context is ascertained and the script is executed in the context of the domain associated with the received content, rather than requiring the application or some other component to navigate to a location, such as a web location, to attempt to ascertain the domain context of the script. In another embodiment, third party objects or code are required to provide their domain context to an application in order for the application to make a security-based decision.

Description

RELATED APPLICATIONS
This application is a continuation of and claims priority to U.S. patent application Ser. No. 12/757,831 which is a divisional of and claims priority to U.S. patent application Ser. No. 11/150,869, filed on Jun. 10, 2005, the disclosure of which are incorporated herein by reference in their entirety.
BACKGROUND
Ascertaining domain contexts can be useful for a number of reasons. For example, cross domain security issues can arise when a script (i.e. software code) executes in the wrong domain. Scripts can execute in the wrong domain for reasons that include, among others, architectural flaws in an application's code path. Cross domain exploits can allow malicious code to access and manipulate information that would otherwise be unavailable to the code.
One type of application that can be susceptible to cross domain exploits is the web browser. In this context, consider the following. When a browser application browses to a web page, that particular web page can host other web pages and objects within it. That is, the web page can retrieve content from other web sites for use in conjunction with the web page. For example, an image or some other object on or associated with a web page may be downloaded from a web site which is different from the site from which the web page itself is downloaded. One of the problems with this scenario, as will be appreciated by the skilled artisan, is that while the site from which the web page is downloaded may be considered as “safe”, the site from which the image or object is downloaded may not be safe and, in fact, may constitute a rogue web site.
What can happen as a result of this situation is that rogue content may maliciously attempt to interact with the web page with which it is associated, or with content presented in other windows that are open on the user's computer. For example, a rogue object may attempt to capture user information (as by recording the user's keystrokes) and provide the information to an unauthorized entity or person.
Other cross domain boundary issues can arise from third party code or controls that are designed to execute in connection with an application. Again, in the context of a browser application, consider the following. When a web browser receives HTML content for a particular web page, the HTML may include code that identifies data that is intended to be processed by a third party control such as, for example, an ActiveX control, a browser helper object, or some other pluggable component. The browser application then typically takes steps to activate or instantiate the appropriate control and makes the data available for the control to process and render. One problem with this scenario, however, is that such controls and other third party code do not typically have to provide the application—in this case the browser application—with its domain context—that is, the context of the domain in connection with which the control or code is supposed to be running. By knowing the domain context associated with a particular control or piece of third party code, an intelligent decision could be made by the application as to whether to allow the control or code to execute. However, by not knowing the domain associated with the control or code, any such informed decision cannot be made.
SUMMARY
Various embodiments pertain to ascertaining domain contexts. In one embodiment, an application receives content that may contain a script (i.e. code) in the form of a URL. In this case, the script is executed in the context of the domain associated with the received content, rather than requiring the application or some other component to attempt to navigate to a script URL, such as a web location, to attempt to ascertain the domain context of the script.
In another embodiment, third party objects or code are required to provide their domain context to an application in order for the application to make a security-based decision.
BRIEF DESCRIPTION OF THE DRAWINGS
The disclosed embodiments will be described with reference to the accompanying drawings, which show important sample embodiments of the invention and which are incorporated in the specification hereof by reference, wherein:
FIG. 1 is a high level diagram of a system in accordance with one embodiment.
FIG. 2 is a flow diagram that describes steps in a method in accordance with one embodiment.
FIG. 3 is a high level system/method diagram that illustrates aspects of one embodiment.
FIG. 4 is a high level system/method diagram that illustrates aspects of one embodiment.
FIG. 5 illustrates an exemplary computing device that can be used to implement one or more embodiments.
DETAILED DESCRIPTION Overview
Various embodiments described below are directed to, among other things, dealing with and enforcing cross domain boundaries. In one embodiment, an application receives content that may contain a script (i.e. code) in the form of a URL. In this case, the script is executed in the context of the domain associated with the received content, rather than requiring the application or some other component to attempt to navigate to a script URL, such as a web location, to attempt to ascertain the domain context of the script. For example, in one embodiment, an application, such as a web browser application, causes script that it receives in connection with HTML for a web page, to execute and run in the context of the page from which it came, rather than attempting to navigate to a script or code URL location to ascertain the domain context of the script. This embodiment is discussed under the heading “Executing Script in the Context of the Page From Which it Comes” below.
In another embodiment, third party objects or code are required to provide their domain context to an application in order for the application to make a security-based decision. This can be done in a couple of different ways. For example, the objects or code itself can be aware that they need to provide the domain context and hence, when calls are made by the object, the domain context is passed as well. Additionally or alternately, the objects or code can be wrapped such that the objects or code are not necessarily aware that domain context needs to be passed. Yet, because of the wrapper, the domain context is passed whenever the objects or code makes a call to another component. This embodiment is discussed under the heading “Requiring Domain Context for Third Party Objects and Code” below.
Executing Script in the Context of the Page from which it Comes
In the example that follows, an application in the form of a web browser application, and content in the form of HTML is used to illustrate the utility of the inventive embodiments. It is to be appreciated and understood that applications other than web browsers, and content other than HTML can be utilized without departing from the spirit and scope of the claimed subject matter.
In this embodiment, content, e.g. HTML content, that is received by an application, e.g. a web browser application, is parsed to identify script portions. Once the script portions are identified, the URL of the web page from where it came is identified to ascertain the domain context of the script portions. In the illustrated and described embodiment, this is done without employing a navigation activity in which an attempt is made to navigate to a location, such as a web location, to ascertain the domain context.
With regard to a navigation activity, consider the following. In at least some systems, a navigation activity involves an application communicating with a handler object for a particular URL syntax. For example, to navigate to a script URL, the application would typically call a script URL handler and pass the handler the script. The handler would then attempt to ascertain the domain context. Thus, in this context, in at least one embodiment, not employing a navigation activity would mean not employing another handler object in the manner mentioned above.
In the particular embodiment described below, the domain context is ascertained by contacting a script engine to ascertain the domain associated with the script portions. Once the domain associated with the script portions is ascertained, the script can be executed in the context of its domain. Put another way, the script can be executed in the context of the HTML from which it came. This is a departure from past approaches.
In the past, at least some web browsers would treat a URL containing script as a URL and would attempt to navigate to this URL to ascertain the domain context of the script. As an example, consider the following HTML excerpt that might be received by a web browser:
    • <a href=“javascript:alert( )”>click here</a>
Here, the HTML includes an anchor tag that contains script or code that is to be executed in connection with a web page that is presented to a user. In this example, assume that the script presents an alert dialog for the user. Along with the script and as part of the page that is displayed for the user, a hyperlink “here” may be displayed on the page. When the user clicks the “here” hyperlink, in the past, the web browser would attempt to navigate to a particular web location and ascertain the domain context associated with the script. In this simple case, the browser would likely ascertain the domain context and hence, the script alert would be executed in the ascertained domain context. Accordingly, in the past then, when the user clicked on the hyperlink, a navigation would occur and the script would be executed in the domain context ascertained via the navigation. It is to be appreciated, however, that this is but a simple example. Specifically, in this example, there is only one window or page, and therefore only one domain. In this case, it is not possible to find the wrong domain. There are complex asynchronous scenarios, however, in which problems can be encountered in finding the appropriate domain context. Hence, in many complex scenarios, problems in ascertaining the proper domain context via the induced navigation can lead to or at least make possible a script executing in a domain that is not proper. For example, if there were multiple windows or the script URL opened another window, then there would be multiple domains and a chance of getting the wrong domain context.
FIG. 1 is a high level diagram that illustrates a system 100 that includes a computing device executing a web browser application 102 and a script engine 104 in accordance with one embodiment. The computing device is communicatively linked via the Internet 106 with one or more web servers 108 from which the computing device can receive content, such as HTML, that defines web pages that are displayable by web browser.
In the illustrated and described embodiment, when web browser 102 receives HTML content, it processes the HTML content and identifies any scripts associated with the HTML content. The HTML can also typically identify an associated script engine (i.e. an object that processes scripts) using, for example, a class identifier attribute of the HTML. The web browser can then call an appropriate interface to instantiate the appropriate script engine. In this example, the web browser would be considered as the scripting host and is said to “own” the scripting engine. Typically then, the host application—in this case the web browser 102—calls the script engine 104 and provides the script to the script engine for processing.
Now, having identified that the HTML that it received contains a script, the web browser 102 now ascertains the domain context of the script. In this example, this is done by contacting the script engine 104 and ascertaining from the script engine which pages or domains the script engine attached to when it received the script from the web browser. Specifically, the domain context is taken from the page that contains the downloaded HTML including script code. The domain context is stored with the HTML when it gets downloaded.
Now that the browser has ascertained the domain context of the script that it received, the web browser can now take measures to ensure and enforce cross domain boundaries. That is, the web browser can now take steps to ensure that the script executes in the domain context in which it is intended to execute. For example, once the web browser ascertains the domain context of the script, it can ascertain the domain context of the target window—that is, the target window in which the script is to execute. If the domain contexts of the script and the target window match, then the web browser can call a method on the script engine 104 to execute the script in the target window. On the other hand, if the domain contexts do not match (for example, if the script were attempting to execute in a different target window for a malicious purpose), the application can disallow this by making an appropriate call to the script engine.
Accordingly, this process executes the script in the context of the actual HTML from which it came.
FIG. 2 is a flow diagram that describes steps in a method in accordance with one embodiment. The method can be implemented in connection with any suitable hardware, software, firmware or combination thereof.
Step 200 receives content that can contain a script. The received content can comprise any suitable type of content. In but one embodiment described above, such content comprises HTML content that describes web page content, and this act is performed by a suitably configured web browser application. Other types of content can include, by way of example and not limitation, email content, instant messaging content that includes code, content associated with file transfers and the like.
Step 202 evaluates the content to identify any scripts associated with the content. This step can be performed in any suitable way. That is, various different types of script can have various identifying characteristics, such as syntax-based characteristics, that enable it to be identified in the context of the content of which it is a part. For example, in the context of HTML that is received by a web browser application, the script may be identified, at least in part, by looking for a URL that does not have an associated domain. For example, javascript can comprise part of the HTML that a web browser receives. One way of representing javascript in HTML is in a URL-like fashion, except that the representation does not have an associated domain. Hence, this is one way of identifying a script. Other ways can be utilized without departing from the spirit and scope of the claimed subject matter. In addition, this step can be executed to look for any code that that should be executed in a particular context. For example, C++ code may be meant to only run in a specific application or only on a particular server.
If any scripts are identified in the content that is received, step 204 attempts to ascertain a context associated with the identified script(s) without attempting to navigate to a web location. In one embodiment, the context that is attempted to be ascertained is a domain context. This step can be performed in any suitable way. For example, in the web browser application example above, the domain context was able to be ascertained by contacting the associated script engine to ascertain domains or pages to which the script engine attached. This step can, however, be performed in other ways without departing from the spirit and scope of the claimed subject matter. For example, in some embodiments, the script or code could carry with it its own context. Such context could, for example, reside in the form of a verifiable signature.
Once the domain of the script has been ascertained, the application can make a domain context-based decision. For example, the application can take whatever steps are appropriate for enforcing cross domain security. For example, as in the example above, a check can be made to ascertain whether the script's domain context matches with the target window's domain context. If the domain contexts match, then the script is allowed to execute. Other types of decisions that might be made can include decisions that pertain to different types of functionality that may or may not be permitted. For example, an email client may only allow a special format to be received from specific servers, such as a Hotmail server. Alternately or additionally, an application which downloads content such as software updates may only download the content if it comes from a specific domain.
Accordingly, the above-described embodiment can enforce cross domain security by taking steps to ensure that scripts are identified and then executed in the proper domain context.
Requiring Domain Context for Third Party Objects and Code
In another embodiment, third party objects or code are required to provide their domain context to an application in order for the application to make a security-based decision. The application can comprise any suitable application or type of application. For example, the application can comprise a web application, such as a web-based email application or web browser. Alternately or additionally, the application can comprise other types of applications.
The security-based decision can be one that allows the objects or code to perform a particular functionality or not. In the examples described below, two different approaches are set forth. In a first approach, third party objects or code are required to pass, in associated calls that they make to various applications, their domain context. In a second approach, third party objects are wrapped or encapsulated in a manner in which various calls that the objects or code makes provide the domain context of the object or code. This particular approach can be utilized without requiring the objects or code to change their architecture. As such, this approach is useful in the context of supporting legacy objects or code.
First Approach—Objects/Code Pass Domain Context
In a first approach, objects or code are provided with a way of determining or ascertaining their domain context so that they can use that domain context in calls to various applications. The applications, in turn, can then make a decision, based on the passed-in domain context, as to whether to allow the object or code to execute whatever functionality it was intending to execute.
As an example, consider FIG. 3 which illustrates a system and a related method in accordance with one embodiment. In this example, a third party object 300 is provided and can constitute any suitable object. For purposes of this disclosure, “third party object” and “code” are used interchangeably.
For example, third party object 300 can comprise an object that is instantiated as a result of application 302 receiving some type of content. For example, in an event that application 302 comprises a web browser application, third party object 300 might be instantiated or activated responsive to application 302 receiving HTML content that contains data intended to be processed by an instance of a particular object. For example, the HTML content may include data and an indication that the data is to be processed and rendered by a flash media object.
Once object 300 is activated or instantiated, the object makes a call, at step 350, to an application requesting its domain context. In the illustrated example, this is represented by a call from object 300 to an interface IDomain requesting its domain context. Responsively, application 302 receives the call, at step 352, from the third party object requesting its domain context. Applications can ascertain domain context by asking the networking object which downloaded the content. Essentially, the application asks for the source identifier that the content came from. In the case of a web browser, this would be the server name. Application 302, at step 354, returns the domain context to the third party object. In the illustrated example, this is represented by a return from the application to the object with the domain context “xyz”. The third party object receives, at step 356, the domain context from the application and, at step 358, makes one or more subsequent calls to the application (or other applications) and includes, along with the call, its domain context. The domain context can be represented in a call parameter. In the illustrated example, this is represented by a call TakeAction ( . . . , xyz) that is made on the application 302. In the illustrated and described embodiment, third party objects can be required to provide their domain context any time they make a call on another object or application.
Responsively, application 302 receives the call(s), at step 360, from the third party object, including the domain context. Step 362 then ascertains the third party object's domain context and, in turn, step 364 makes a domain context-based decision. Any suitable decision can be made. For example, by knowing the domain context of the object that makes a call, the call recipient can decide whether to allow the call to proceed or not. As an example, consider the following.
Assume that third party object 300 receives its domain context “xyz” and calls an application that does not recognize the domain context, is otherwise configured to not allow any operations that are associated with the “xyz” context, or ascertains that the object's domain context does not match a target window domain context. In this case, the application can refuse to allow the call to execute. In this manner, cross domain security can be enforced.
Second Approach—Objects/Code Wrapped for Context Passing
In the second approach, objects or code are wrapped in a manner which enables the domain context of the object or code to be provided to an application when the application is called. In this embodiment, the object need not be aware of the necessity to provide its domain context when call applications.
As an example, consider FIG. 4 which illustrates a system that includes a third party object 400 and an application 402. In this example, third party object 400 can constitute any suitable object. For example, third party object 400 can comprise an object that is instantiated as a result of application 402 receiving some type of content. For example, in an event that application 402 comprises a web browser application, third party object 400 might be instantiated or activated responsive to application 402 receiving HTML content that contains data intended to be processed by an instance of a particular object. For example, the HTML content may include data and an indication that the data is to be processed and rendered by a flash media object. Accordingly, application 402 creates or activates, at step 450, the third party object. Application 402 then wraps, at step 452, the third party object. Wrapping of the object can take place in any suitable way and need not necessarily be considered as a step that is different from or in addition to step 450. For example, application 402 can own the activation space in which the object is activated. In this case, by virtue of owning the activation space, application 402 can take steps to ensure that the domain context of third party object 400 is provided in subsequent calls. A wrapper for third party object 400 is indicated at 404.
At step 454, third party object 400 makes a call to application 402. In this example, the call is illustrated as a TakeAction 0 call. At step 456, wrapper 404 appends a domain context to the call that is made by the third party object. In the illustrated example, this is represented as the domain context “xyz” which is illustrated as appended to the call that third party object 400 makes.
Application 402 receives, at step 458, one or more calls from the third party object including the appended domain context and step 460 ascertains the third party object's domain context. In turn, step 462 makes a domain context-based decision. Any suitable decision can be made. For example, by knowing the domain context of the object that makes a call, the call recipient can decide whether to allow the call to proceed or not. As an example, consider the following.
Exemplary Computing System
FIG. 5 shows an exemplary computer system having components that can be used to implement one or more of the embodiments described above.
Computer system 530 includes one or more processors or processing units 532, a system memory 534, and a bus 536 that couples various system components including the system memory 534 to processors 532. The bus 536 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. The system memory 534 includes read only memory (ROM) 538 and random access memory (RAM) 540. A basic input/output system (BIOS) 542, containing the basic routines that help to transfer information between elements within computer 530, such as during start-up, is stored in ROM 538.
Computer 530 further includes a hard disk drive 544 for reading from and writing to a hard disk (not shown), a magnetic disk drive 546 for reading from and writing to a removable magnetic disk 548, and an optical disk drive 550 for reading from or writing to a removable optical disk 552 such as a CD ROM or other optical media. The hard disk drive 544, magnetic disk drive 546, and optical disk drive 550 are connected to the bus 536 by an SCSI interface 554 or some other appropriate interface. The drives and their associated computer-readable media provide nonvolatile storage of computer-readable instructions, data structures, program modules and other data for computer 530. Although the exemplary environment described herein employs a hard disk, a removable magnetic disk 548 and a removable optical disk 552, it should be appreciated by those skilled in the art that other types of computer-readable media which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, random access memories (RAMs), read only memories (ROMs), and the like, may also be used in the exemplary operating environment.
A number of program modules may be stored on the hard disk 544, magnetic disk 548, optical disk 552, ROM 538, or RAM 540, including an operating system 558, one or more application programs 560, other program modules 562, and program data 564. A user may enter commands and information into computer 530 through input devices such as a keyboard 566 and a pointing device 568. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are connected to the processing unit 532 through an interface 570 that is coupled to the bus 536. A monitor 572 or other type of display device is also connected to the bus 536 via an interface, such as a video adapter 574. In addition to the monitor, personal computers typically include other peripheral output devices (not shown) such as speakers and printers.
Computer 530 commonly operates in a networked environment using logical connections to one or more remote computers, such as a remote computer 576. The remote computer 576 may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer 530, although only a memory storage device 578 has been illustrated in FIG. 5. The logical connections depicted in FIG. 5 include a local area network (LAN) 580 and a wide area network (WAN) 582. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
When used in a LAN networking environment, computer 530 is connected to the local network 580 through a network interface or adapter 584. When used in a WAN networking environment, computer 530 typically includes a modem 586 or other means for establishing communications over the wide area network 582, such as the Internet. The modem 586, which may be internal or external, is connected to the bus 536 via a serial port interface 556. In a networked environment, program modules depicted relative to the personal computer 530, or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
Generally, the data processors of computer 530 are programmed by means of instructions stored at different times in the various computer-readable storage media of the computer. Programs and operating systems are typically distributed, for example, on floppy disks or CD-ROMs. From there, they are installed or loaded into the secondary memory of a computer. At execution, they are loaded at least partially into the computer's primary electronic memory. The invention described herein includes these and other various types of computer-readable storage media when such media contain instructions or programs for implementing the steps described below in conjunction with a microprocessor or other data processor. The invention also includes the computer itself when programmed according to the methods and techniques described below.
For purposes of illustration, programs and other executable program components such as the operating system are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computer, and are executed by the data processor(s) of the computer.
CONCLUSION
The various embodiments described above can, among other things, enforce cross domain boundaries. In one embodiment, an application receives content that may contain a script (i.e. code) in the form of a URL. In this case, the script is executed in the context of the domain associated with the received content, rather than requiring the application or some other component to attempt to navigate to a script URL location, such as a web location, to attempt to ascertain the domain context of the script. In another embodiment, third party objects or code are required to provide their domain context to an application in order for the application to make a security-based decision.
Although the invention has been described in language specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or steps described. Rather, the specific features and steps are disclosed as preferred forms of implementing the claimed invention.

Claims (20)

The invention claimed is:
1. A computer-implemented method comprising:
receiving, at a computing device, a call from a third party object that requests a domain context;
ascertaining, by a web application implemented at the computing device, the domain context of the third party object;
returning, by the computing device, the domain context to the third party object;
requiring, by the computing device, the third party object to include its associated domain context in subsequent calls that the third party object makes;
receiving a subsequent call from the third party object;
ascertaining, from the subsequent call, the domain context of the third party object; and
making a domain context-based decision based on the ascertained domain context by refusing to allow the subsequent call to execute if the third party object's ascertained domain context does not match a target window domain context or allowing the subsequent call to execute if the third party object's ascertained domain context matches the target window domain context.
2. The computer-implemented method of claim 1, wherein the making the domain context-based decision comprises refusing to allow the subsequent call to execute.
3. The computer-implemented method of claim 1, wherein the making the domain context-based decision comprises allowing the subsequent call to execute.
4. The computer-implemented method of claim 1, wherein the receiving the call that requests the domain context is performed by a web application.
5. The computer-implemented method of claim 1, further comprising, prior to the receiving the call, receiving HTML content that contains a script that activates or instantiates the third party object.
6. The computer-implemented method of claim 5, wherein the ascertaining the domain context of the third party object comprises ascertaining a source identifier of the HTML content.
7. A system comprising:
at least a memory and a processor to implement a web application, the web application configured to perform operations comprising:
receiving a call from a third party object that requests a domain context;
ascertaining the domain context of the third party object;
returning the domain context to the third party object;
requiring the third party object to include its associated domain context in subsequent calls that the third party object makes;
receiving a subsequent call from the third party object;
ascertaining, from the subsequent call, the domain context of the third party object; and
making a domain context-based decision based on the ascertained domain context by refusing to allow the subsequent call to execute if the third party object's ascertained domain context does not match a target window domain context or allowing the subsequent call to execute if the third party object's ascertained domain context matches the target window domain context.
8. The one or more computer-readable storage media as recited in claim 7, wherein the operations further comprise, prior to the receiving the call, receiving HTML content that contains a script that activates or instantiates the third party object.
9. The one or more computer-readable storage media as recited in claim 8, wherein the ascertaining the domain context of the third party object comprises ascertaining a source identifier of the HTML content.
10. The one or more computer-readable storage media as recited in claim 7, wherein the making the domain context-based decision comprises refusing to allow the subsequent call to execute.
11. The one or more computer-readable storage media as recited in claim 7, wherein the making the domain context-based decision comprises allowing the subsequent call to execute.
12. The one or more computer-readable storage media as recited in claim 7, wherein the receiving the call that requests the domain context is performed by a web browser.
13. A computing device comprising:
one or more processors; and
one or more computer-readable storage media comprising computer executable instructions stored thereon that, responsive to execution by the one or more processors, cause the one or more processors to:
receive a call from a third party object that requests a domain context;
ascertain the domain context of the third party object;
return the domain context to the third party object;
require the third party object to include its associated domain context in subsequent calls that the third party object makes;
receive a subsequent call from the third party object;
ascertain, from the subsequent call, the domain context of the third party object; and
make a domain context-based decision based on the ascertained domain context by refusing to allow the subsequent call to execute if the third party object's ascertained domain context does not match a target window domain context or allowing the subsequent call to execute if the third party object's ascertained domain context matches the target window domain context.
14. The computing device as recited in claim 13, wherein prior to receiving the call, the computer executable instructions, responsive to execution by the one or more processors, cause the one or more processors to receive HTML content that contains a script that activates or instantiates the third party object.
15. The computing device as recited in claim 14, wherein the computer executable instructions, responsive to execution by the one or more processors, cause the one or more processors to ascertain the domain context of the third party object by ascertaining a source identifier of the HTML content.
16. The computing device as recited in claim 13, wherein the computer executable instructions, responsive to execution by the one or more processors, cause the one or more processors to make the domain context-based decision by refusing to allow the subsequent call to execute.
17. The computing device as recited in claim 13, wherein the computer executable instructions, responsive to execution by the one or more processors, cause the one or more processors to make the domain context-based decision by allowing the subsequent call to execute.
18. The computing device as recited in claim 13, wherein the receiving the call that requests the domain context is performed by a web application.
19. The computing device as recited in claim 13, wherein the receiving the call that requests the domain context is performed by a web-based email application.
20. The computing device as recited in claim 13, wherein the receiving the call that requests the domain context is performed by a web browser.
US14/035,430 2005-06-10 2013-09-24 Ascertaining domain contexts Expired - Fee Related US9398030B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/035,430 US9398030B2 (en) 2005-06-10 2013-09-24 Ascertaining domain contexts

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/150,869 US7735094B2 (en) 2005-06-10 2005-06-10 Ascertaining domain contexts
US12/757,831 US8572634B2 (en) 2005-06-10 2010-04-09 Ascertaining domain contexts
US14/035,430 US9398030B2 (en) 2005-06-10 2013-09-24 Ascertaining domain contexts

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US12/757,831 Division US8572634B2 (en) 2005-06-10 2010-04-09 Ascertaining domain contexts

Publications (2)

Publication Number Publication Date
US20140026219A1 US20140026219A1 (en) 2014-01-23
US9398030B2 true US9398030B2 (en) 2016-07-19

Family

ID=37591358

Family Applications (3)

Application Number Title Priority Date Filing Date
US11/150,869 Active 2029-04-08 US7735094B2 (en) 2005-06-10 2005-06-10 Ascertaining domain contexts
US12/757,831 Active 2026-07-10 US8572634B2 (en) 2005-06-10 2010-04-09 Ascertaining domain contexts
US14/035,430 Expired - Fee Related US9398030B2 (en) 2005-06-10 2013-09-24 Ascertaining domain contexts

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US11/150,869 Active 2029-04-08 US7735094B2 (en) 2005-06-10 2005-06-10 Ascertaining domain contexts
US12/757,831 Active 2026-07-10 US8572634B2 (en) 2005-06-10 2010-04-09 Ascertaining domain contexts

Country Status (1)

Country Link
US (3) US7735094B2 (en)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8245049B2 (en) 2004-06-14 2012-08-14 Microsoft Corporation Method and system for validating access to a group of related elements
US7735094B2 (en) * 2005-06-10 2010-06-08 Microsoft Corporation Ascertaining domain contexts
CN100527144C (en) * 2005-11-21 2009-08-12 华为技术有限公司 Method and device for accurate charging in digital copyright management
US9906549B2 (en) * 2007-09-06 2018-02-27 Microsoft Technology Licensing, Llc Proxy engine for custom handling of web content
US20090132713A1 (en) * 2007-11-20 2009-05-21 Microsoft Corporation Single-roundtrip exchange for cross-domain data access
US8527868B2 (en) 2008-02-22 2013-09-03 International Business Machines Corporation Systems and methods for document annotation
US8291475B2 (en) 2008-04-30 2012-10-16 Microsoft Corporation Secure cross-domain communication for web mashups
US8214903B2 (en) * 2009-10-02 2012-07-03 International Business Machines Corporation Analysis of scripts
US8984409B2 (en) * 2010-03-12 2015-03-17 Salesforce.Com, Inc. Service cloud console
US9342274B2 (en) 2011-05-19 2016-05-17 Microsoft Technology Licensing, Llc Dynamic code generation and memory management for component object model data constructs
US8881101B2 (en) 2011-05-24 2014-11-04 Microsoft Corporation Binding between a layout engine and a scripting engine
US9215096B2 (en) 2011-08-26 2015-12-15 Salesforce.Com, Inc. Computer implemented methods and apparatus for providing communication between network domains in a service cloud
US9430452B2 (en) 2013-06-06 2016-08-30 Microsoft Technology Licensing, Llc Memory model for a layout engine and scripting engine

Citations (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805884A (en) 1995-05-12 1998-09-08 Bull, S.A. Process for monitoring execution of a command script
US6170081B1 (en) 1998-09-17 2001-01-02 Unisys Coporation Method and system for interfacing to a variety of software development tools
US6202159B1 (en) * 1999-06-30 2001-03-13 International Business Machines Corporation Vault controller dispatcher and methods of operation for handling interaction between browser sessions and vault processes in electronic business systems
US6272485B1 (en) 1999-02-18 2001-08-07 Creative Internet Applications, Inc. Transferring selected formatted documents over a computer network using interface script
US6327608B1 (en) 1998-09-25 2001-12-04 Microsoft Corporation Server administration tool using remote file browser
US20020116407A1 (en) 2001-01-17 2002-08-22 Shinji Negishi Conversion apparatus and method, accounting method, and script conversion system and method
US6442602B1 (en) 1999-06-14 2002-08-27 Web And Net Computing System and method for dynamic creation and management of virtual subdomain addresses
US6442620B1 (en) 1998-08-17 2002-08-27 Microsoft Corporation Environment extensibility and automatic services for component applications using contexts, policies and activators
US20020124172A1 (en) 2001-03-05 2002-09-05 Brian Manahan Method and apparatus for signing and validating web pages
US20020184491A1 (en) 2001-06-01 2002-12-05 International Business Machines Corporation Internet authentication with multiple independent certificate authorities
US20030028762A1 (en) 2001-07-31 2003-02-06 Kevin Trilli Entity authentication in a shared hosting computer network environment
US20030177274A1 (en) 2002-03-12 2003-09-18 Chen Sun Virtual subdomain address file suffix
US6647381B1 (en) 1999-10-27 2003-11-11 Nec Usa, Inc. Method of defining and utilizing logical domains to partition and to reorganize physical domains
US6748418B1 (en) 1999-06-18 2004-06-08 International Business Machines Corporation Technique for permitting collaboration between web browsers and adding content to HTTP messages bound for web browsers
US6754829B1 (en) * 1999-12-14 2004-06-22 Intel Corporation Certificate-based authentication system for heterogeneous environments
US6792459B2 (en) 2000-12-14 2004-09-14 International Business Machines Corporation Verification of service level agreement contracts in a client server environment
US20040193885A1 (en) 1999-06-30 2004-09-30 International Business Machines Corporation Vault controller context manager and methods of operation for securely maintaining state information between successive browser connections in an electronic business system
US20050050547A1 (en) 2003-08-29 2005-03-03 Whittle Derrick W. Method and apparatus for providing desktop application functionality in a client/server architecture
US6874084B1 (en) 2000-05-02 2005-03-29 International Business Machines Corporation Method and apparatus for establishing a secure communication connection between a java application and secure server
US6904453B2 (en) 1998-10-30 2005-06-07 Ideaflood, Inc. Method, apparatus and system for directing access to content on a computer network
US6961929B1 (en) 1999-06-25 2005-11-01 Sun Microsystems, Inc. Mechanism for automatic synchronization of scripting variables
US20050268100A1 (en) 2002-05-10 2005-12-01 Gasparini Louis A System and method for authenticating entities to users
US20050278792A1 (en) 2004-06-14 2005-12-15 Microsoft Corporation Method and system for validating access to a group of related elements
US6990528B1 (en) * 2000-10-19 2006-01-24 International Business Machines Corporation System area network of end-to-end context via reliable datagram domains
US20060053293A1 (en) 2004-09-07 2006-03-09 Zager Robert P User interface and anti-phishing functions for an anti-spam micropayments system
US7039699B1 (en) 2000-05-02 2006-05-02 Microsoft Corporation Tracking usage behavior in computer systems
US7076786B2 (en) 2000-05-18 2006-07-11 Microsoft Corporation State management of server-side control objects
US20060218403A1 (en) 2005-03-23 2006-09-28 Microsoft Corporation Visualization of trust in an address bar
US7159111B1 (en) * 2001-01-29 2007-01-02 Microsoft Corporation Isolation of communication contexts to facilitate communication of data
US20070006148A1 (en) 2005-06-10 2007-01-04 Microsoft Corporation Ascertaining domain contexts
US7469302B2 (en) 2003-08-29 2008-12-23 Yahoo! Inc. System and method for ensuring consistent web display by multiple independent client programs with a server that is not persistently connected to client computer systems

Patent Citations (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805884A (en) 1995-05-12 1998-09-08 Bull, S.A. Process for monitoring execution of a command script
US6442620B1 (en) 1998-08-17 2002-08-27 Microsoft Corporation Environment extensibility and automatic services for component applications using contexts, policies and activators
US6170081B1 (en) 1998-09-17 2001-01-02 Unisys Coporation Method and system for interfacing to a variety of software development tools
US6327608B1 (en) 1998-09-25 2001-12-04 Microsoft Corporation Server administration tool using remote file browser
US6904453B2 (en) 1998-10-30 2005-06-07 Ideaflood, Inc. Method, apparatus and system for directing access to content on a computer network
US6272485B1 (en) 1999-02-18 2001-08-07 Creative Internet Applications, Inc. Transferring selected formatted documents over a computer network using interface script
US6442602B1 (en) 1999-06-14 2002-08-27 Web And Net Computing System and method for dynamic creation and management of virtual subdomain addresses
US6748418B1 (en) 1999-06-18 2004-06-08 International Business Machines Corporation Technique for permitting collaboration between web browsers and adding content to HTTP messages bound for web browsers
US6961929B1 (en) 1999-06-25 2005-11-01 Sun Microsystems, Inc. Mechanism for automatic synchronization of scripting variables
US6202159B1 (en) * 1999-06-30 2001-03-13 International Business Machines Corporation Vault controller dispatcher and methods of operation for handling interaction between browser sessions and vault processes in electronic business systems
US20040193885A1 (en) 1999-06-30 2004-09-30 International Business Machines Corporation Vault controller context manager and methods of operation for securely maintaining state information between successive browser connections in an electronic business system
US7013388B2 (en) 1999-06-30 2006-03-14 International Business Machines Corporation Vault controller context manager and methods of operation for securely maintaining state information between successive browser connections in an electronic business system
US6647381B1 (en) 1999-10-27 2003-11-11 Nec Usa, Inc. Method of defining and utilizing logical domains to partition and to reorganize physical domains
US6754829B1 (en) * 1999-12-14 2004-06-22 Intel Corporation Certificate-based authentication system for heterogeneous environments
US7039699B1 (en) 2000-05-02 2006-05-02 Microsoft Corporation Tracking usage behavior in computer systems
US6874084B1 (en) 2000-05-02 2005-03-29 International Business Machines Corporation Method and apparatus for establishing a secure communication connection between a java application and secure server
US7076786B2 (en) 2000-05-18 2006-07-11 Microsoft Corporation State management of server-side control objects
US6990528B1 (en) * 2000-10-19 2006-01-24 International Business Machines Corporation System area network of end-to-end context via reliable datagram domains
US6792459B2 (en) 2000-12-14 2004-09-14 International Business Machines Corporation Verification of service level agreement contracts in a client server environment
US20020116407A1 (en) 2001-01-17 2002-08-22 Shinji Negishi Conversion apparatus and method, accounting method, and script conversion system and method
US7159111B1 (en) * 2001-01-29 2007-01-02 Microsoft Corporation Isolation of communication contexts to facilitate communication of data
US20020124172A1 (en) 2001-03-05 2002-09-05 Brian Manahan Method and apparatus for signing and validating web pages
US20020184491A1 (en) 2001-06-01 2002-12-05 International Business Machines Corporation Internet authentication with multiple independent certificate authorities
US20030028762A1 (en) 2001-07-31 2003-02-06 Kevin Trilli Entity authentication in a shared hosting computer network environment
US20030177274A1 (en) 2002-03-12 2003-09-18 Chen Sun Virtual subdomain address file suffix
US20050268100A1 (en) 2002-05-10 2005-12-01 Gasparini Louis A System and method for authenticating entities to users
US7469302B2 (en) 2003-08-29 2008-12-23 Yahoo! Inc. System and method for ensuring consistent web display by multiple independent client programs with a server that is not persistently connected to client computer systems
US20050050547A1 (en) 2003-08-29 2005-03-03 Whittle Derrick W. Method and apparatus for providing desktop application functionality in a client/server architecture
US20050278792A1 (en) 2004-06-14 2005-12-15 Microsoft Corporation Method and system for validating access to a group of related elements
US20060053293A1 (en) 2004-09-07 2006-03-09 Zager Robert P User interface and anti-phishing functions for an anti-spam micropayments system
US20060218403A1 (en) 2005-03-23 2006-09-28 Microsoft Corporation Visualization of trust in an address bar
US20070006148A1 (en) 2005-06-10 2007-01-04 Microsoft Corporation Ascertaining domain contexts
US7735094B2 (en) 2005-06-10 2010-06-08 Microsoft Corporation Ascertaining domain contexts
US20100192165A1 (en) 2005-06-10 2010-07-29 Microsoft Corporation Ascertaining domain contexts
US8572634B2 (en) 2005-06-10 2013-10-29 Microsoft Corporation Ascertaining domain contexts

Non-Patent Citations (18)

* Cited by examiner, † Cited by third party
Title
"Corrected Notice of Allowance", U.S. Appl. No. 12/757,831, (Sep. 30, 2013), 4 pages.
"Final Office Action", U.S. Appl. No. 12/757,831, (Feb. 11, 2013), 9 pages.
"Non-Final Office Action", U.S. Appl. No. 11/150,869, (Sep. 3, 2009), 9 pages.
"Non-Final Office Action", U.S. Appl. No. 12/757,831, (Aug. 22, 2012),10 pages.
"Notice of Allowance", U.S. Appl. No. 11/150,869, (Feb. 9, 2010), 8 pages.
"Notice of Allowance", U.S. Appl. No. 12/757,831, (Jun. 19, 2013), 7 pages.
"Protecting Commercial Secure Web Servers from Key-Finding Threats", nCipher, Inc., Available at ,(1999),12 pages.
"Protecting Commercial Secure Web Servers from Key-Finding Threats", nCipher, Inc., Available at <www.nciphercom/uploads/resources/pcws.pdf>,(1999),12 pages.
"Restriction Requirement", U.S. Appl. No. 11/150,869, (May 20, 2009), 6 pages.
"Restriction Requirement", U.S. Appl. No. 12/757,831, (Jun. 7, 2012), 6 pages.
Anupam, et al., "Secure Web Scripting", 1998 IEEE, (1998), pp. 46-55.
Herzberg, Amir et al., "Protecting (even) Naive Web Users, or: Preventing Spoofing and Establishing Credentials of Web Sites", Bar Ilan University, Available at ,(Jul. 18, 2004), 26 pages.
Herzberg, Amir et al., "Protecting (even) Naive Web Users, or: Preventing Spoofing and Establishing Credentials of Web Sites", Bar Ilan University, Available at <www.cs.bu.ac.il/˜herzea/papers/ecommerce/trusted credentials area.pdf>,(Jul. 18, 2004), 26 pages.
Radosevic, Danijel et al., "Development of a Higher-Level Multimedia Scripting Language", 23rd Int. Conf. Information Technology Interfaces ITI 2001, (Jun. 19, 2001), pp. 201-208.
Spanias, Andreas et al., "Development of New Functions and Scripting Capabilities in Javaa-DSP for Easy Creation and Seamless Integration of Animated DSP Simulations in Web Courses", 2001 IEEE, (2001), pp. 2717-2720.
Tam, et al., "A Fast and Flexible Framework of Scripting for Web Application Development: A Preliminary Experience Report", 2000 IEEE, (2000), pp. 450-455.
Verisign Inc., "Licensing VeriSign Certificates: Securing Multiple Web Server and Domain Configurations", White Paper, Available at ,(Nov. 2, 2001),15 pages.
Verisign Inc., "Licensing VeriSign Certificates: Securing Multiple Web Server and Domain Configurations", White Paper, Available at <www.msctrustgate.com/pdf/licensing.pdf>,(Nov. 2, 2001),15 pages.

Also Published As

Publication number Publication date
US20140026219A1 (en) 2014-01-23
US20100192165A1 (en) 2010-07-29
US7735094B2 (en) 2010-06-08
US8572634B2 (en) 2013-10-29
US20070006148A1 (en) 2007-01-04

Similar Documents

Publication Publication Date Title
US9398030B2 (en) Ascertaining domain contexts
US20190260773A1 (en) Tiered object-related trust decisions
EP1716480B1 (en) User interface accorded to tiered object related trust decisions
US9607093B2 (en) Method and system for operating multiple web pages with anti-spoofing protection
JP4912400B2 (en) Immunization from known vulnerabilities in HTML browsers and extensions
US9798446B2 (en) Standard commands for native commands
WO2016086767A1 (en) Method, browser client, and device for achieving browser security
US20100192224A1 (en) Sandbox web navigation
US7831611B2 (en) Automatically verifying that anti-phishing URL signatures do not fire on legitimate web sites
US20110106948A1 (en) Running Internet Applications with Low Rights
US8271995B1 (en) System services for native code modules
US20070294256A1 (en) Online Service For Program Lookup
KR100379915B1 (en) Method and apparatus for analyzing a client computer

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034544/0541

Effective date: 20141014

AS Assignment

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:VARSHNEY, GOVIND;SILBEY, MARC A.;GANESH, SHANKAR;AND OTHERS;SIGNING DATES FROM 20050610 TO 20050728;REEL/FRAME:037881/0667

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

FEPP Fee payment procedure

Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

LAPS Lapse for failure to pay maintenance fees

Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20240719