Preparing your result...
Loading...
Press Esc to dismiss this message

Executing applications at appropriate trust levels (09-Mar-2010)

Thumbnail
US Patent Publication (Source: USPTO)
Publication No. US 7676843 B1 published on 09-Mar-2010
Application No. US 10/876433 filed on 24-Jun-2004
Abstract (English)
Systems and methods that enable execution of applications at appropriate trust levels are described. These systems and methods can determine appropriate trust levels by comparing applications' permitted trust levels with their requested trust levels. These systems and method can determine applications' permitted trust levels by comparing applications' execution locations with their published locations. Applications can also be executed at a restricted trust level at which potentially dangerous operations are prohibited.
Inventors/Applicants
Stott, Nathaniel W. [+6] [-6]
Redmond, WA, US
Kelkar, Amol S
Redmond, WA, US
O'Connor, Brian G.
Seattle, WA, US
Rosenberg, Lee B
Seattle, WA, US
Catorcini, Alessandro
Redmond, WA, US
Narendran, Arungundram
Bellevue, WA, US
Sikchi, Prakash
Issaquah, WA, US
Assignees
Microsoft Corporation
Redmond, WA, US
Classifications
International (2006.01): G06F 7/04; G06F 17/30; H04L 9/32; G06F 11/00; G06F 12/14; G06F 12/16; G08B 23/00 [+4] [-4]
National: 726/26; 726/2; 726/22
Field of Search: Non/e
Patent References
US 4201978 A Document processing system May-1980
US 4498147 A Methodology for transforming a first editable document form prepared with a batch text processing system to a second editable document form usable by an interactive or batch text processing system Feb-1985
US 4514800 A Digital computer system including apparatus for resolving names representing data items and capable of executing instructions belonging to general instruction sets Apr-1985 [+797] [-797]
US 4564752 A Concurrent, image-based, reject-re-entry system and method Jan-1986
US 4641274 A Method for communicating changes made to text form a text processor to a remote host Feb-1987
US 4674040 A Merging of documents Jun-1987
US 4723211 A Editing of a superblock data structure Feb-1988
US 4739477 A Implicit creation of a superblock data structure Apr-1988
US 4815029 A In-line dynamic editor for mixed object documents Mar-1989
US 4847749 A Job interrupt at predetermined boundary for enhanced recovery Jul-1989
US 4910663 A System for measuring program execution by replacing an executable instruction with interrupt causing instruction Mar-1990
US 4926476 A Method and apparatus for secure execution of untrusted software May-1990
US 4933880 A Method for dynamically processing non-text components in compound documents Jun-1990
US 4962475 A Method for generating a document utilizing a plurality of windows associated with different data objects Oct-1990
US 5025484 A Character reader device Jun-1991
US 5072412 A User interface with multiple workspaces for sharing display system objects Dec-1991
US 5140563 A Multimode electronic timepiece having a mutually exclusive submode display Aug-1992
US 5179703 A Dynamically adaptive environment for computer programs Jan-1993
US 5182709 A System for parsing multidimensional and multidirectional text into encoded units and storing each encoded unit as a separate data structure Jan-1993
US 5187786 A Method for apparatus for implementing a class hierarchy of objects in a hierarchical file system Feb-1993
US 5191645 A Digital signal processing system employing icon displays Mar-1993
US 5195183 A Data communication system with communicating and recharging docking apparatus for hand-held data terminal Mar-1993
US 5204947 A Application independent (open) hypermedia enablement services Apr-1993
US 5206951 A Integration of data between typed objects by mutual, direct invocation between object managers corresponding to object types Apr-1993
US 5218672 A Offline editing system with user interface for controlling edit list generation Jun-1993
US 5220649 A Script/binary-encoded-character processing method and system with moving space insertion mode Jun-1993
US 5222160 A Document revising system for use with document reading and translating system Jun-1993
US 5228100 A Method and system for producing from document image a form display with blank fields and a program to input data to the blank fields Jul-1993
US 5237680 A Method for incremental rename propagation between hierarchical file name spaces Aug-1993
US 5249275 A Apparatus and method enabling a compiled program to exactly recreate its source code Sep-1993
US 5251273 A Data processing system and method for sequentially repairing character recognition errors for scanned images of document forms Oct-1993
US 5274803 A Method and apparatus for aligning a restored parent environment to its child environments with minimal data loss Dec-1993
US 5297249 A Hypermedia link marker abstract and search services Mar-1994
US 5297283 A Object transferring system and method in an object based computer operating system Mar-1994
US 5313631 A Dual threshold system for immediate or delayed scheduled migration of computer data files May-1994
US 5313646 A Method and apparatus for translucent file system May-1994
US 5317686 A Data processing apparatus and method for a reformattable multidimensional spreadsheet May-1994
US 5333317 A Name resolution in a directory database Jul-1994
US 5339423 A System for accessing objects external to an application using tables containing path definitions Aug-1994
US 5339424 A System and method for compiling and executing a computer program written in more than one programming language Aug-1994
US 5341478 A Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment Aug-1994
US 5369766 A Object-oriented loader system with support for different load formats Nov-1994
US 5369778 A Data processor that customizes program behavior by using a resource retrieval capability Nov-1994
US 5371675 A Spreadsheet program which implements alternative range references Dec-1994
US 5377323 A Apparatus and method for a federated naming system which can resolve a composite name composed of names from any number of disparate naming systems Dec-1994
US 5379419 A Methods and apparatus for accesssing non-relational data files using relational queries Jan-1995
US 5381547 A Method for dynamically linking definable program elements of an interactive data processing system Jan-1995
US 5390325 A Automated testing system Feb-1995
US 5396623 A Method for editing the contents of a DB2 table using an editproc manager Mar-1995
US 5408665 A System and methods for linking compiled code with extended dictionary support Apr-1995
US 5410646 A System and method for creating, processing, and storing forms electronically Apr-1995
US 5410688 A Distributed object based systems for communicating object data among different storage domains Apr-1995
US 5412772 A System for permitting a view of an object or a user interface to be exchanged between operating system environments May-1995
US 5434975 A System for interconnecting a synchronous path having semaphores and an asynchronous path having message queuing for interprocess communications Jul-1995
US 5436637 A Graphical user interface system and methods for improved user feedback Jul-1995
US 5438659 A Object-action user interface management system Aug-1995
US 5440744 A Methods and apparatus for implementing server functions in a distributed heterogeneous environment Aug-1995
US 5446842 A Object-oriented collaboration system Aug-1995
US 5455875 A System and method for correction of optical character recognition with display of image segments according to character data Oct-1995
US 5459865 A Runtime loader Oct-1995
US 5481722 A Method and apparatus for merging change control delta structure files of a source module from a parent and a child development environment Jan-1996
US 5497489 A Data storage and retrieval systems having labelling for data Mar-1996
US 5504898 A Threaded environment for AS/400 Apr-1996
US 5517655 A Method for monitoring transactions in an object-oriented environment May-1996
US 5535389 A Business process objects with associated attributes such as version identifier Jul-1996
US 5542070 A Method for rapid development of software systems Jul-1996
US 5550976 A Decentralized distributed asynchronous object oriented system and method for electronic data management, storage, and communication Aug-1996
US 5551035 A Method and apparatus for inter-object communication in an object-oriented program controlled system Aug-1996
US 5555325 A Data capture variable priority method and system for managing varying processing capacities Sep-1996
US 5566330 A Method for forming a reusable and modifiable database interface object Oct-1996
US 5572643 A Web browser with dynamic display of information objects during linking Nov-1996
US 5572648 A System for simultaneously displaying a static tool palette having predefined windowing tool functions and a dynamic tool palette which changes windowing tool functons in accordance with a context of an executed application program Nov-1996
US 5577252 A Methods and apparatus for implementing secure name servers in an object-oriented system Nov-1996
US 5581686 A Method and system for in-place interaction with contained objects Dec-1996
US 5581760 A Method and system for referring to and binding to objects using identifier objects Dec-1996
US 5600789 A Automated GUI interface testing Feb-1997
US 5602996 A Method and apparatus for determining window order when one of multiple displayed windows is selected Feb-1997
US 5608720 A Control system and operations system interface for a network element in an access system Mar-1997
US 5625783 A Automated system and method for dynamic menu construction in a graphical user interface Apr-1997
US 5627979 A System and method for providing a graphical user interface for mapping and accessing objects in data stores May-1997
US 5630126 A Systems and methods for integrating computations into compound documents May-1997
US 5634121 A System for identifying and linking domain information using a parsing process to identify keywords and phrases May-1997
US 5634124 A Data integration by object management May-1997
US 5640544 A Computer network having an asynchronous document data management system Jun-1997
US 5644738 A System and method using context identifiers for menu customization in a window Jul-1997
US 5649099 A Method for delegating access rights through executable access control program without delegating access rights not in a specification to any intermediary nor comprising server security Jul-1997
US 5659729 A Method and system for implementing hypertext scroll attributes Aug-1997
US 5664133 A Context sensitive menu system/menu behavior Sep-1997
US 5664178 A Method and system for organizing internal structure of a file Sep-1997
US 5668966 A System and method for direct manipulation of search predicates using a graphical user interface Sep-1997
US 5669005 A System for automatically embedding or incorporating contents added to a document Sep-1997
US 5682536 A Method and system for referring to and binding to objects using identifier objects Oct-1997
US 5689667 A Methods and system of controlling menus with radial and linear portions Nov-1997
US 5689703 A Method and system for referring to and binding to objects using identifier objects Nov-1997
US 5704029 A System and method for completing an electronic form Dec-1997
US 5706501 A Apparatus and method for managing resources in a network combining operations with name resolution functions Jan-1998
US 5717939 A Method and apparatus for entering and manipulating spreadsheet cell data Feb-1998
US 5721824 A Multiple-package installation with package dependencies Feb-1998
US 5740439 A Method and system for referring to and binding to objects using identifier objects Apr-1998
US 5742504 A Method and system for quickly developing application software for use in a machine vision system Apr-1998
US 5745683 A System and method for allowing disparate naming service providers to dynamically join a naming federation Apr-1998
US 5745712 A Graphical programming system and methods for assisting a user with creating screen objects on a screen device Apr-1998
US 5748807 A Method and means for enhancing optical character recognition of printed documents May-1998
US 5758184 A System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads May-1998
US 5758358 A Method and system for reconciling sections of documents May-1998
US 5761408 A Method and system for generating a computer program test suite using dynamic symbolic execution Jun-1998
US 5761683 A Techniques for changing the behavior of a link in a hypertext document Jun-1998 715/206
US 5764984 A System for multiple co-existing operating system personalities on a microkernel Jun-1998
US 5764985 A Notification mechanism for coordinating software extensions Jun-1998
US 5778372 A Remote retrieval and display management of electronic document with incorporated images Jul-1998
US 5778402 A Method and system for auto-formatting a document using an event-based rule engine to format a document as the user types Jul-1998
US 5784555 A Automation and dial-time checking of system configuration for internet Jul-1998
US 5790796 A Polymorphic package files to update software components Aug-1998
US 5798757 A Methods and interface for building command expressions in a computer system Aug-1998
US 5801701 A Method and system for in-place interaction with contained objects Sep-1998
US 5802304 A Automatic dialer responsive to network programming interface access Sep-1998
US 5806079 A System, method, and computer program product for using intelligent notes to organize, link, and manipulate disparate data objects Sep-1998
US 5815830 A Automatic generation of hypertext links to multimedia topic objects Sep-1998
US 5826031 A Method and system for prioritized downloading of embedded web objects Oct-1998
US 5826265 A Data management system having shared libraries Oct-1998
US 5835777 A Method of automatically generating a software installation package Nov-1998
US 5838906 A Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document Nov-1998
US 5842018 A Method and system for referring to and binding to objects using identifier objects Nov-1998
US 5845077 A Method and system for identifying and obtaining computer software from a remote computer Dec-1998
US 5845090 A System for software distribution in a digital computer network Dec-1998
US 5845122 A Method and apparatus for allowing a user to select from a set of mutually exclusive options Dec-1998
US 5854630 A Prospective view for web backtrack Dec-1998
US 5859973 A Methods, system and computer program products for delayed message generation and encoding in an intermittently connected data communication system Jan-1999
US 5862372 A Visually oriented computer implemented application development system utilizing standardized objects and multiple views Jan-1999
US 5862379 A Visual programming tool for developing software applications Jan-1999
US 5864819 A Internal window object tree method for representing graphical user interface applications for speech navigation Jan-1999
US 5873088 A Derived data base processing system enabling one program to access a plurality of data basis Feb-1999
US 5905492 A Dynamically updating themes for an operating system shell May-1999
US 5907621 A System and method for session management May-1999
US 5907704 A Hierarchical encapsulation of instantiated objects in a multimedia authoring system including internet accessible objects May-1999
US 5910895 A Low cost, easy to use automatic test system software Jun-1999
US 5911776 A Automatic format conversion system and publishing methodology for multi-user network Jun-1999
US 5915112 A Remote procedure interface with support for multiple versions Jun-1999
US 5922072 A Method and apparatus for creating alternate boot environments in a computer Jul-1999
US 5928363 A Method and means for preventing unauthorized resumption of suspended authenticated internet sessions using locking and trapping measures Jul-1999 726/22
US 5929858 A Device for aiding analysis of infeasible solution and unbounded solution Jul-1999
US 5940075 A Method for extending the hypertext markup language (HTML) to support enterprise application data binding Aug-1999
US 5950010 A System and method for customized application package building and installation Sep-1999
US 5953731 A HTML integration utility for a program development environment Sep-1999
US 5956481 A Method and apparatus for protecting data files on a computer from virus infection Sep-1999
US 5960199 A Model trace view for object-oriented systems Sep-1999
US 5963964 A Method, apparatus and program product for updating visual bookmarks Oct-1999
US 5973696 A Embedded web server Oct-1999
US 5974454 A Method and system for installing and updating program module components Oct-1999
US 5982370 A Highlighting tool for search specification in a user interface of a computer system Nov-1999
US 5983348 A Computer network malicious code scanner Nov-1999 726/13
US 5987480 A Method and system for delivering documents customized for a particular user over the internet using imbedded dynamic content Nov-1999
US 5991710 A Statistical translation system with features based on phrases or groups of words Nov-1999
US 5991731 A Method and system for interactive prescription and distribution of prescriptions in conducting clinical studies Nov-1999
US 5991877 A Object-oriented trusted application framework Nov-1999
US 5995103 A Window grouping mechanism for creating, manipulating and displaying windows and window groups on a display screen of a computer system Nov-1999
US 5999740 A Updating mechanism for software Dec-1999
US 6005570 A Graphical user interface system and methods for improved user feedback Dec-1999
US 6012066 A Computerized work flow system Jan-2000
US 6014135 A Collaboration centric document processing environment using an information centric visual user interface and information presentation method Jan-2000
US 6016520 A Method of viewing at a client viewing station a multiple media title stored at a server and containing a plurality of topics utilizing anticipatory caching Jan-2000
US 6018743 A Framework for object-oriented interface to record file data Jan-2000
US 6021403 A Intelligent user assistance facility Feb-2000
US 6026379 A System, method and article of manufacture for managing transactions in a high availability system Feb-2000
US 6026416 A System and method for storing, viewing, editing, and processing ordered sections having different file formats Feb-2000
US 6031989 A Method of formatting and displaying nested documents Feb-2000
US 6035297 A Data management system for concurrent engineering Mar-2000
US 6035309 A System and method for editing and viewing a very wide flat file Mar-2000
US 6044205 A Communications system for transferring information between memories according to processes transferred with the information Mar-2000
US 6052531 A Multi-tiered incremental software updating Apr-2000
US 6052710 A System and method for making function calls over a distributed network Apr-2000
US 6054987 A Method of dynamically creating nodal views of a managed network Apr-2000
US 6057837 A On-screen indentification and manipulation of sources that an object depends upon May-2000
US 6058413 A Method and apparatus for utilizing a standard transaction format to provide application platform and a medium independent representation and transfer of data for the management of business process and their workflows May-2000
US 6065043 A Systems and methods for executing application programs from a memory device linked to a server May-2000
US 6069626 A Method and apparatus for improved scrolling functionality in a graphical user interface utilizing a transparent scroll bar icon May-2000
US 6070184 A Server-side asynchronous form management May-2000
US 6072870 A System, method and article of manufacture for a gateway payment architecture utilizing a multichannel, extensible, flexible architecture Jun-2000
US 6078326 A System and method providing centricity user environment Jun-2000
US 6078327 A Navigating applications and objects in a graphical user interface Jun-2000
US 6078924 A Method and apparatus for performing data collection, interpretation and analysis, in an information platform Jun-2000
US 6081610 A System and method for verifying signatures on documents Jun-2000
US 6084585 A System for directly accessing fields on electronic forms Jul-2000
US 6088679 A Workflow management employing role-based access control Jul-2000
US 6088708 A System and method for creating an online table from a layout of objects Jul-2000
US 6091417 A Graphical user interface Jul-2000
US 6094657 A Apparatus and method for dynamic meta-tagging of compound documents Jul-2000
US 6096096 A Web-site delivery Aug-2000
US 6097382 A Method and apparatus for building an application interface Aug-2000
US 6098081 A Hypermedia navigation using soft hyperlinks Aug-2000
US 6105012 A Security system and method for financial institution server and client web browser Aug-2000
US 6108637 A Content display monitor Aug-2000
US 6108783 A Chameleon hashing and signatures Aug-2000
US 6115646 A Dynamic and generic process automation system Sep-2000
US 6121965 A User interface for graphical application tool Sep-2000
US 6122647 A Dynamic generation of contextual links in hypertext documents Sep-2000
US 6144969 A File name conversion Nov-2000
US 6151624 A Navigating network resources based on metadata Nov-2000
US 6154128 A Automatic building and distribution of alerts in a remote monitoring system Nov-2000
US 6163772 A Virtual point of sale processing using gateway-initiated messages Dec-2000
US 6167521 A Securely downloading and executing code from mutually suspicious authorities Dec-2000
US 6167523 A Method and apparatus for forms data validation and processing control Dec-2000
US 6182094 B1 Programming tool for home networks with an HTML page for a plurality of home devices Jan-2001
US 6182095 B1 Document generator Jan-2001
US 6188401 B1 Script-based user interface implementation defining components using a text markup language Feb-2001
US 6191797 B1 Expression tree optimization for processing obscured graphical objects Feb-2001
US 6192367 B1 Data file editor presenting semi-formatted view Feb-2001
US 6195661 B1 Method for locating application records in an interactive-services database Feb-2001
US 6199204 B1 Distribution of software updates via a computer network Mar-2001
US 6209128 B1 Apparatus and method for providing access to multiple object versions Mar-2001
US 6216152 B1 Method and apparatus for providing plug in media decoders Apr-2001
US 6219423 B1 System and method for digitally signing a digital agreement between remotely located nodes Apr-2001
US 6219698 B1 Configuring client software using remote notification Apr-2001
US 6225996 B1 System and method for displaying a current value of a cell of a document May-2001
US 6235027 B1 Thermal cautery surgical forceps May-2001
US 6243088 B1 User defined extensible visual integration Jun-2001
US 6253366 B1 Method and system for generating a compact document type definition for data interchange among software tools Jun-2001
US 6253374 B1 Method for validating a signed program prior to execution time or an unsigned program at execution time Jun-2001
US 6263313 B1 Method and apparatus to create encoded digital content Jul-2001
US 6266810 B1 Remote program downloading system and apparatus Jul-2001
US 6268852 B1 System and method for facilitating generation and editing of event handlers Jul-2001
US 6272506 B1 Computerized verification form processing system and method Aug-2001
US 6275227 B1 Computer system and method for controlling the same utilizing a user interface control integrated with multiple sets of instructional material therefor Aug-2001
US 6275599 B1 Compressed image authentication and verification Aug-2001
US 6279042 B1 Methods of performing an interdependent task on a document Aug-2001
US 6281896 B1 Data processor controlled interface with multiple tree of elements views expandable into individual detail views Aug-2001
US 6282709 B1 Software update manager Aug-2001
US 6282711 B1 Method for more efficiently installing software components from a remote server source Aug-2001
US 6286033 B1 Method and apparatus for distributing computer integrated telephony (CTI) scripts using extensible mark-up language (XML) for mixed platform distribution and third party manipulation Sep-2001
US 6292897 B1 Undeniable certificates for digital signature verification Sep-2001
US 6292941 B1 Operating system installation Sep-2001
US 6297819 B1 Parallel web sites Oct-2001
US 6300948 B1 Methods and systems for user interfaces and constraint handling in configuration software Oct-2001
US 6307955 B1 Electronic signature management system Oct-2001
US 6308179 B1 User level controlled mechanism inter-positioned in a read/write path of a property-based document management system Oct-2001
US 6308273 B1 Method and system of security location discrimination Oct-2001
US 6311221 B1 Streaming modules Oct-2001
US 6311271 B1 How to sign digital streams Oct-2001
US 6314415 B1 Automated forms publishing system and method using a rule-based expert system to dynamically generate a graphical user interface Nov-2001
US 6321259 B1 Attribute inheritance schema for network switches Nov-2001
US 6321334 B1 Administering permissions associated with a security zone in a computer system security model Nov-2001 726/1
US 6327628 B1 Portal server that provides a customizable user Interface for access to computer networks Dec-2001
US 6331864 B1 Real-time multimedia visual programming system Dec-2001
US 6336214 B1 System and method for automatically generating browsable language grammars Jan-2002
US 6342907 B1 Specification language for defining user interface panels that are platform-independent Jan-2002
US 6343149 B1 Document character reading system Jan-2002
US 6343302 B1 Remote web site authoring system and method Jan-2002
US 6343377 B1 System and method for rendering content received via the internet and world wide web via delegation of rendering processes Jan-2002
US 6344862 B1 User interface mechanism for manipulating context in computer management applications Feb-2002
US 6345256 B1 Automated method and apparatus to package digital content for electronic distribution using the identity of the source content Feb-2002
US 6345278 B1 Universal forms engine Feb-2002
US 6345361 B1 Directional set operations for permission based security in a computer system Feb-2002
US 6347323 B1 Robust modification of persistent objects while preserving formatting and other attributes Feb-2002
US 6349408 B1 Techniques for implementing a framework for extensible applications Feb-2002
US 6351574 B1 Interactive verification of OCRed characters Feb-2002
US 6353851 B1 Method and apparatus for sharing asymmetric information and services in simultaneously viewed documents on a communication system Mar-2002
US 6353926 B1 Software update notification Mar-2002
US 6356906 B1 Standard database queries within standard request-response protocols Mar-2002
US 6357038 B1 Cross platform and cross operating system macros Mar-2002
US 6366907 B1 Real-time search engine Apr-2002
US 6366912 B1 Network security zones Apr-2002
US 6367013 B1 System and method for electronic transmission, storage, and retrieval of authenticated electronic original documents Apr-2002
US 6369840 B1 Multi-layered online calendaring and purchasing Apr-2002
US 6369841 B1 Graphical user interface for the programming of programmable controllers Apr-2002
US 6374402 B1 Method and apparatus for installation abstraction in a secure content delivery system Apr-2002
US 6381742 B2 Software package management Apr-2002
US 6381743 B1 Method and system for generating a hierarchial document type definition for data interchange among software tools Apr-2002
US 6389434 B1 System, method, and computer program product for creating subnotes linked to portions of data objects after entering an annotation mode May-2002
US 6393456 B1 System, method, and computer program product for workflow processing using internet interoperable electronic messaging with mime multiple content type May-2002
US 6393469 B1 Method and apparatus for publishing hypermedia documents over wide area networks May-2002
US 6396488 B1 System and method for determining a path in a graphical diagram May-2002
US 6397264 B1 Multi-browser client architecture for managing multiple applications having a history list May-2002
US 6405221 B1 Method and apparatus for creating the appearance of multiple embedded pages of information in a single web browser display Jun-2002
US 6405238 B1 Quick navigation upon demand to main areas of web site Jun-2002
US 6408311 B1 Method for identifying UML objects in a repository with objects in XML content Jun-2002
US 6414700 B1 System for accessing a large number of menu items using a zoned menu bar Jul-2002
US 6421070 B1 Smart images and image bookmarking for an internet browser Jul-2002
US 6421656 B1 Method and apparatus for creating structure indexes for a data base extender Jul-2002
US 6421777 B1 Method and apparatus for managing boot images in a distributed data processing system Jul-2002
US 6425125 B1 System and method for upgrading client software Jul-2002
US 6429885 B1 GUI resource editor for an embedded system Aug-2002
US 6434563 B1 WWW browser configured to provide a windowed content manifestation environment Aug-2002
US 6434564 B2 Browser for hierarchical structures Aug-2002
US 6442563 B1 Workflow management system, method, and medium that morphs work items Aug-2002
US 6442755 B1 Electronic program guide using markup language Aug-2002
US 6446110 B1 Method and apparatus for representing host datastream screen image information using markup languages Sep-2002
US 6449617 B1 Edit command delegation program for editing electronic files Sep-2002 707/100
US 6457009 B1 Method of searching multiples internet resident databases using search fields in a generic form Sep-2002
US 6460058 B2 Object-oriented framework for hyperlink navigation Oct-2002
US 6463419 B1 Internet system for exchanging and organizing vessel transport information Oct-2002
US 6470349 B1 Server-side scripting language and programming tool Oct-2002
US 6473800 B1 Declarative permission requests in a computer system Oct-2002
US 6476828 B1 Systems, methods and computer program products for building and displaying dynamic graphical user interfaces Nov-2002
US 6476833 B1 Method and apparatus for controlling browser functionality in the context of an application Nov-2002
US 6477544 B1 Single instance store for file systems Nov-2002
US 6480860 B1 Tagged markup language interface with document type definition to access data in object oriented database Nov-2002
US 6487566 B1 Transforming documents using pattern matching and a replacement language Nov-2002
US 6490601 B1 Server for enabling the automatic insertion of data into electronic forms on a user computer Dec-2002
US 6493702 B1 System and method for searching and recommending documents in a collection using share bookmarks Dec-2002
US 6501864 B1 Data medium handling apparatus and data medium handling method Dec-2002
US 6502101 B1 Converting a hierarchical data structure into a flat data structure Dec-2002
US 6502103 B1 Providing composed containers and data objects to support multiple resources Dec-2002
US 6505200 B1 Application-independent data synchronization technique Jan-2003
US 6505230 B1 Client-server independent intermediary mechanism Jan-2003
US 6505300 B2 Method and system for secure running of untrusted content Jan-2003
US 6507856 B1 Dynamic business process automation system using XML documents Jan-2003
US 6516322 B1 XML-based representation of mobile process calculi Feb-2003
US 6519617 B1 Automated creation of an XML dialect and dynamic generation of a corresponding DTD Feb-2003
US 6535229 B1 Graphical user interface for selection of options within mutually exclusive subsets Mar-2003
US RE38070 E Cryptography system and method for providing cryptographic services for a computer application Apr-2003
US 6546546 B1 Integrating operating systems and run-time systems Apr-2003
US 6546554 B1 Browser-independent and automatic apparatus and method for receiving, installing and launching applications from a browser on a client computer Apr-2003
US 6549221 B1 User interface management through branch isolation Apr-2003
US 6549878 B1 System and method for editing a spreadsheet via an improved editing and cell selection model Apr-2003
US 6549922 B1 System for collecting, transforming and managing media metadata Apr-2003
US 6553402 B1 Method for coordinating activities and sharing information using a data definition language Apr-2003
US 6560616 B1 Robust modification of persistent objects while preserving formatting and other attributes May-2003
US 6560620 B1 Hierarchical document comparison system and method May-2003
US 6560640 B2 Remote bookmarking for wireless client devices May-2003
US 6563514 B1 System and method for providing contextual and dynamic information retrieval May-2003
US 6571253 B1 Hierarchical view of data binding between display elements that are organized in a hierarchical structure to a data store that is also organized in a hierarchical structure May-2003
US 6578144 B1 Secure hash-and-sign signatures Jun-2003
US 6581061 B2 Remote web site authoring system and method Jun-2003
US 6584469 B1 Automatically initiating a knowledge portal query from within a displayed document Jun-2003
US 6584548 B1 Method and apparatus for invalidating data in a cache Jun-2003
US 6585778 B1 Enforcing data policy using style sheet processing Jul-2003
US 6589290 B1 Method and apparatus for populating a form with data Jul-2003
US 6594686 B1 Obtaining user responses in a virtual execution environment Jul-2003 709/203
US 6598219 B1 Method and mechanism for a task oriented XML data model Jul-2003
US 6603489 B1 Electronic calendaring system that automatically predicts calendar entries based upon previous activities Aug-2003
US 6604099 B1 Majority schema in semi-structured data Aug-2003
US 6606606 B2 Systems and methods for performing integrated financial transaction Aug-2003
US 6609200 B2 Method and system for processing electronic documents Aug-2003
US 6611822 B1 System method and article of manufacture for creating collaborative application sharing Aug-2003
US 6611840 B1 Method and system for removing content entity object in a hierarchically structured content object stored in a database Aug-2003
US 6611843 B1 Specification of sub-elements and attributes in an XML sub-tree and method for extracting data values therefrom Aug-2003
US 6613098 B1 Storage of application specific data in HTML Sep-2003
US 6615276 B1 Method and apparatus for a centralized facility for administering and performing connectivity and information management tasks for a mobile user Sep-2003
US 6629109 B1 System and method of enabling file revision management of application software Sep-2003
US 6631357 B1 Method of and system for finding consumer product related information on the internet using automatic registration solicitation techniques to help create upn/Tm/Pd/Url data links stored in an internet-based relational database server Oct-2003
US 6631379 B2 Parallel loading of markup language data files and documents into a computer database Oct-2003
US 6631497 B1 Binding data from data source to cells in a spreadsheet Oct-2003
US 6631519 B1 Automated schema and interface generation Oct-2003
US 6632251 B1 Document producing support system Oct-2003
US 6633315 B1 Context-based dynamic user interface elements Oct-2003
US 6635089 B1 Method for producing composite XML document object model trees using dynamic data retrievals Oct-2003
US 6636845 B2 Generating one or more XML documents from a single SQL query Oct-2003
US 6643633 B2 Storing fragmented XML data into a relational database by decomposing XML documents with application specific mappings Nov-2003
US 6643652 B2 Method and apparatus for managing data exchange among systems in a network Nov-2003
US 6643684 B1 Sender- specified delivery customization Nov-2003
US 6651217 B1 System and method for populating forms with previously used data values Nov-2003
US 6654737 B1 Hypertext-based database architecture Nov-2003
US 6654932 B1 Validating data within container objects handled by view controllers Nov-2003
US 6658417 B1 Term-based methods and apparatus for access to files on shared storage devices Dec-2003
US 6658622 B1 Self-diagnosing and self-correcting data entry components with dependency behavior Dec-2003
US 6661920 B1 Method and apparatus for multiple simultaneously active data entry mechanisms on a computer system Dec-2003
US 6668369 B1 Software debugging tool for displaying dynamically written software code Dec-2003
US 6671805 B1 System and method for document-driven processing of digitally-signed electronic documents Dec-2003
US 6675202 B1 Methods, articles and apparatus for providing a browsing session Jan-2004
US 6678717 B1 Method, product, and apparatus for requesting a network resource Jan-2004
US 6681370 B2 HTML/XML tree synchronization Jan-2004
US 6691230 B1 Method and system for extending Java applets sand box with public client storage Feb-2004
US 6691281 B1 Publishing/republishing data tables in HTML documents while maintaining formatting and functionality for restoring back the data tables Feb-2004
US 6697944 B1 Digital content distribution, transmission and protection system and method, and portable device for use therewith Feb-2004
US 6701434 B1 Efficient hybrid public key signature scheme Mar-2004
US 6701486 B1 Method, apparatus, and computer program product for automatic page suppression in forms Mar-2004
US 6704906 B1 Self-directed routable electronic form system and method Mar-2004
US 6711679 B1 Public key infrastructure delegation Mar-2004
US 6720985 B1 Method and system for object selection Apr-2004
US 6725426 B1 Mechanism for translating between word processing documents and XML documents Apr-2004
US 6728755 B1 Dynamic user profiling for usability Apr-2004
US 6735721 B1 System and method for message handling May-2004
US 6745367 B1 Method and computer program product for implementing parental supervision for internet browsing Jun-2004 715/205
US 6748385 B1 Dynamic insertion and updating of hypertext links for internet servers Jun-2004
US 6748569 B1 XML server pages language Jun-2004
US 6751777 B2 Multi-target links for navigating between hypertext documents and the like Jun-2004
US 6754874 B1 Computer-aided system and method for evaluating employees Jun-2004
US 6757826 B1 Digital graphic signature system Jun-2004
US 6757868 B1 Programmatic switching of arbitrary HTML forms Jun-2004
US 6760723 B2 Storage management across multiple time zones Jul-2004
US 6763343 B1 Preventing duplication of the data in reference resource for XML page generation Jul-2004
US 6772139 B1 Method and apparatus for facilitating use of hypertext links on the world wide web Aug-2004
US 6772165 B2 Electronic document processing system and method for merging source documents on a node-by-node basis to generate a target document Aug-2004
US 6774926 B1 Personal television channel system Aug-2004
US 6779154 B1 Arrangement for reversibly converting extensible markup language documents to hypertext markup language documents Aug-2004
US 6781609 B1 Technique for flexible inclusion of information items and various media types in a user interface Aug-2004
US 6782144 B2 Document scanner, system and method Aug-2004
US 6799299 B1 Method and apparatus for creating stylesheets in a data processing system Sep-2004
US 6801929 B1 Relevance clause for computed relevance messaging Oct-2004
US 6816849 B1 Advanced internet interface Nov-2004
US 6828992 B1 User interface with dynamic menu option organization Dec-2004
US 6845380 B2 Method and system of valuing transformation between extensible markup language (XML) documents Jan-2005
US 6845499 B2 System and method for developing software applications using an extended XML-based framework Jan-2005
US 6847387 B2 Menu management mechanism that displays menu items based on multiple heuristic factors Jan-2005
US 6848078 B1 Comparison of hierarchical structures and merging of differences Jan-2005
US 6850895 B2 Assignment manager Feb-2005
US 6862689 B2 Method and apparatus for managing session information Mar-2005
US 6871220 B1 System and method for distributed storage and retrieval of personal information Mar-2005
US 6871345 B1 Self managing software agents with introspection Mar-2005
US 6874130 B1 Copy/move graphical user interface apparatus and method Mar-2005
US 6876996 B2 Method and apparatus for using a shared library mechanism to facilitate sharing of metadata Apr-2005
US 6883168 B1 Methods, systems, architectures and data structures for delivering software via a network Apr-2005
US 6889359 B1 Method for providing a visual representation of dynamic HTML table attributes May-2005
US 6901403 B1 XML presentation of general-purpose data sources May-2005
US 6915454 B1 Web controls validation Jul-2005
US 6925609 B1 Hybrid task and file oriented user interface Aug-2005
US 6931532 B1 Selective data encryption using style sheet processing Aug-2005
US 6941510 B1 Method and apparatus for efficient management of XML documents Sep-2005
US 6941511 B1 High-performance extensible document transformation Sep-2005
US 6941521 B2 Method for dynamically generating a user interface from XML-based documents Sep-2005
US 6948129 B1 Multi-modal, multi-path user interface for simultaneous access to internet data over multiple media Sep-2005
US 6948133 B2 System for dynamically configuring a user interface display Sep-2005
US 6948135 B1 Method and systems of providing information to computer users Sep-2005
US 6950980 B1 System, method, and program product for saving a submitted form of a web page Sep-2005
US 6957395 B1 Computer interface having a single window mode of operation Oct-2005
US 6961897 B1 System and method for interactive electronic media extraction for web page generation Nov-2005
US 6963875 B2 Persistent archives Nov-2005
US 6968503 B1 XML user interface for a workflow server Nov-2005
US 6968505 B2 Use of conceptual diagrams to support relationships between launchpads and its wizards Nov-2005
US 6993714 B2 Grouping and nesting hierarchical namespaces Jan-2006
US 6993722 B1 User interface system methods and computer program products for multi-function consumer entertainment appliances Jan-2006
US 6996776 B1 Method and system for SGML-to-HTML migration to XML-based system Feb-2006
US 6996781 B1 System and method for generating XSL transformation documents Feb-2006
US 7000179 B2 Method and apparatus for programmatic learned routing in an electronic form system Feb-2006
US 7002560 B2 Method of combining data entry of handwritten symbols with displayed character data Feb-2006
US 7003548 B1 Method and apparatus for developing and checking technical configurations of a product Feb-2006
US 7003722 B2 Method and system for converting a schema-based hierarchical data structure into a flat data structure Feb-2006
US 7010580 B1 Method and apparatus for exchanging data in a platform independent manner Mar-2006
US 7020869 B2 Business rules user interface for development of adaptable enterprise applications Mar-2006
US 7024417 B1 Data mining framework using a signature associated with an algorithm Apr-2006
US 7032170 B2 Creating data structures from a form file and creating a web page in conjunction with corresponding data structures Apr-2006
US 7036072 B1 Method and apparatus for declarative updating of self-describing, structured documents Apr-2006
US 7039875 B2 Computer user interfaces that are generated as needed May-2006
US 7043687 B2 Document/message management May-2006
US 7051273 B1 Customizing forms in an electronic mail system utilizing custom field behaviors and user defined operations May-2006
US 7058663 B2 Automatic data update Jun-2006
US 7062764 B2 System and method for manipulating offline software Jun-2006
US 7065493 B1 Workflow system and method Jun-2006
US 7076728 B2 Method and apparatus for end-to-end content publishing system using XML with an object dependency graph Jul-2006
US 7080083 B2 Extensible stylesheet designs in visual graphic environments Jul-2006
US 7080325 B2 Graphical device for comprehensive viewing and input of variable data via a browser-based display Jul-2006
US 7086009 B2 Customizable system for creating supervisory process control and manufacturing information applications Aug-2006
US 7086042 B2 Generating and utilizing robust XPath expressions Aug-2006
US 7088374 B2 System and method for managing visual structure, timing, and animation in a graphics processing system Aug-2006
US 7100147 B2 Method, system, and program for generating a workflow Aug-2006
US 7103611 B2 Techniques for retaining hierarchical information in mapping between XML documents and relational data Sep-2006
US 7106888 B1 Signature capture via interface surface Sep-2006
US 7107282 B1 Managing XPath expressions in a database system Sep-2006
US 7107521 B2 XSL dynamic inheritance Sep-2006
US 7107539 B2 Thematic response to a computer user's context, such as by a wearable personal computer Sep-2006
US 7120863 B1 Method, system, and program for interfacing with elements in a document Oct-2006
US 7124167 B1 Computer based system for directing communications over electronic networks Oct-2006
US 7130885 B2 Methods and apparatus providing electronic messages that are linked and aggregated Oct-2006
US 7143341 B1 Method and apparatus for concurrent engineering and design synchronization of multiple tools Nov-2006
US 7146564 B2 Extensible stylesheet designs using meta-tag and/or associated meta-tag information Dec-2006
US 7152205 B2 System for multimedia document and file processing and format conversion Dec-2006
US 7168035 B1 Building a view on markup language data through a set of components Jan-2007
US 7178166 B1 Vulnerability assessment and authentication of a computer by a local scanner Feb-2007 726/25
US 7190376 B1 Method of compiling compositing expressions for optimised rendering Mar-2007
US 7191394 B1 Authoring arbitrary XML documents using DHTML and XSLT Mar-2007
US 7200665 B2 Allowing requests of a session to be serviced by different servers in a multi-server data service system Apr-2007
US 7200816 B2 Method and system for automating creation of multiple stylesheet formats using an integrated visual design environment Apr-2007
US 7213200 B2 Selectable methods for generating robust XPath expressions May-2007
US 7236982 B2 Computer systems and methods for platform independent presentation design Jun-2007
US 7249328 B1 Tree view for reusable data markup language Jul-2007
US 7281018 B1 Form template data source change Oct-2007
US 7284208 B2 System and method for enabling at least one independent data navigation and interaction activity within a document Oct-2007
US 7287218 B1 Dynamic publication of information from a database Oct-2007
US 7296017 B2 Validation of XML data files Nov-2007
US 7313758 B2 Markup-language document formatting in memory-constrained environment Dec-2007
US 7316003 B1 System and method for developing a dynamic web page Jan-2008
US 7318237 B2 System and method for maintaining security in a distributed computer network Jan-2008
US 7334178 B1 Randomized self-checking test system Feb-2008
US 7337391 B2 Method and system for stylesheet execution interactive feedback Feb-2008
US 7337392 B2 Method and apparatus for adapting web contents to different display area dimensions Feb-2008
US 7346610 B2 Methods and systems of providing information to computer users Mar-2008
US 7346840 B1 Application server configured for dynamically generating web forms based on extensible markup language documents and retrieved subscriber data Mar-2008
US 7346848 B1 Single window navigation methods and systems Mar-2008
US 7350141 B2 User interface for integrated spreadsheets and word processing tables Mar-2008
US 7373595 B2 System and method for validating an XML document and reporting schema violations May-2008
US 7412649 B2 Viewing and editing markup language files with complex semantics Aug-2008
US 7424671 B2 Methods and systems for enabling collaborative authoring of hierarchical documents Sep-2008
US 7428699 B1 Configurable representation of structured data Sep-2008
US 7441200 B2 Method and apparatus for designing, rendering and programming a user interface Oct-2008
US 7496632 B2 Method and system for distributing a public information release authorization (PIRA) form over an intranet Feb-2009
US 7496837 B1 Structural editing with schema awareness Feb-2009
US 7543228 B2 Template for rendering an electronic form Jun-2009
US 7549115 B2 System and method for integrated spreadsheets and word processing tables Jun-2009
US 7584417 B2 Role-dependent action for an electronic form Sep-2009
US 7613996 B2 Enabling selection of an inferred schema part Nov-2009
US 2001/0007109 A1 Method and system for inserting a data object into a computer-generated document using a text instruction Jul-2001
US 2001/0016880 A1 Pluggable service delivery platform Aug-2001
US 2001/0022592 A1 Data processor controlled interface with multiple tree of elements views expandable into individual detail views Sep-2001
US 2001/0024195 A1 Page information display method and device and storage medium storing program for displaying page information Sep-2001
US 2001/0037345 A1 Tagging XML query results over relational DBMSs Nov-2001
US 2001/0044850 A1 Method and apparatus for determining the order of streaming modules Nov-2001
US 2001/0051928 A1 Protection of software by personalization, and an arrangement, method, and system therefor Dec-2001
US 2001/0054004 A1 Method of direct communication between a business and its customers Dec-2001
US 2001/0056429 A1 Persistent archives Dec-2001
US 2001/0056460 A1 Method and system for transforming content for execution on multiple platforms Dec-2001
US 2002/0010700 A1 System and method for sharing data between relational and hierarchical databases Jan-2002
US 2002/0010743 A1 Method and system for distributing and collecting spreadsheet information Jan-2002
US 2002/0010746 A1 System, method, apparatus and computer program product for operating a web site by electronic mail Jan-2002
US 2002/0010855 A1 System for determining web application vulnerabilities Jan-2002 713/164
US 2002/0013788 A1 System and method for automatically learning information used for electronic form-filling Jan-2002
US 2002/0019941 A1 Method and system for secure running of untrusted content Feb-2002 713/185
US 2002/0023113 A1 Remote document updating system using XML and DOM Feb-2002
US 2002/0026441 A1 System and method for integrating multiple applications Feb-2002
US 2002/0026461 A1 System and method for creating a source document and presenting the source document to a user in a target format Feb-2002
US 2002/0032590 A1 E-market architecture for supporting multiple roles and reconfigurable business porcesses Mar-2002
US 2002/0032692 A1 Workflow management method and workflow management system of controlling workflow process Mar-2002
US 2002/0032706 A1 Method and system for building internet-based applications Mar-2002
US 2002/0032768 A1 Method and system for configuring remotely located applications Mar-2002
US 2002/0035579 A1 Transform rule generator for web-based markup languages Mar-2002
US 2002/0035581 A1 Application program interfaces for semantically labeling strings and providing actions based on semantically labeled strings Mar-2002
US 2002/0040469 A1 System and method for the configuration of software products Apr-2002
US 2002/0052769 A1 Computer system for providing a collaborative workflow environment May-2002
US 2002/0053021 A1 Internet-based secure document signing network May-2002
US 2002/0054126 A1 Browser translation between frames and no frames May-2002
US 2002/0057297 A1 Personalized content management May-2002
US 2002/0065798 A1 System and method for providing selective data access and workflow in a network environment May-2002
US 2002/0065847 A1 Form processing system, management system of form identification dictionary, form processing terminal and distribution mehtod of form identification dictionary May-2002
US 2002/0070973 A1 Method of entering, updating and display of related data on a single screen page Jun-2002
US 2002/0078074 A1 Method and system for facilitating networked information exchange Jun-2002
US 2002/0078103 A1 Wizard development kit Jun-2002
US 2002/0083145 A1 Method and system for online/offline services Jun-2002
US 2002/0083148 A1 System and method for sender initiated caching of personalized content Jun-2002
US 2002/0083318 A1 Method and system for software integrity control using secure hardware assist Jun-2002 713/164
US 2002/0099952 A1 Policies for secure software execution Jul-2002 713/200
US 2002/0100027 A1 Method of externalizing relational and ASN.1-formatted data into XML format Jul-2002
US 2002/0107885 A1 System, computer program product, and method for capturing and processing form data Aug-2002
US 2002/0111699 A1 Dynamically configurable generic container Aug-2002
US 2002/0111932 A1 Method and system for generation of medical reports from data in a hierarchically-organized database Aug-2002
US 2002/0112224 A1 XML data loading Aug-2002
US 2002/0129056 A1 Method and apparatus for electronic negotiation of document content Sep-2002
US 2002/0133484 A1 Storing fragmented XML data into a relational database by decomposing XML documents with application specific mappings Sep-2002
US 2002/0152222 A1 Apparatus and method for organizing and-or presenting data Oct-2002
US 2002/0152244 A1 Method and apparatus to dynamically create a customized user interface based on a document type definition Oct-2002
US 2002/0156772 A1 Generating one or more XML documents from a single SQL query Oct-2002
US 2002/0156846 A1 Intelligent client-side form filler Oct-2002
US 2002/0156929 A1 XML-based system and method for collaborative web-based design and verification of system-on-a-chip Oct-2002
US 2002/0169752 A1 Workflow system Nov-2002
US 2002/0169789 A1 System and method for accessing, organizing, and presenting data Nov-2002
US 2002/0174147 A1 System and method for transcoding information for an audio or limited display user interface Nov-2002
US 2002/0174417 A1 Defining and creating custom data fields within process management software Nov-2002
US 2002/0178187 A1 Electronically signed HTML forms Nov-2002
US 2002/0178380 A1 Network configuration manager Nov-2002
US 2002/0184188 A1 Method for extracting content from structured or unstructured text documents Dec-2002
US 2002/0184219 A1 System, method, and computer program product for reformatting non-XML data for use with internet based systems Dec-2002
US 2002/0184485 A1 Method for electronic communication providing self-encrypting and self-verification capabilities Dec-2002
US 2002/0188597 A1 Methods and systems for linking tasks to workflow Dec-2002
US 2002/0188613 A1 Method and apparatus for runtime merging of hierarchical trees Dec-2002
US 2002/0194219 A1 Method and system for cross-platform form creation and deployment Dec-2002
US 2002/0196281 A1 Generating a graphical user interface from a command syntax for managing multiple computer systems as one computer system Dec-2002
US 2002/0196288 A1 Method and apparatus for converting text files into hierarchical charts as a learning aid Dec-2002
US 2002/0198891 A1 Methods and apparatus for constructing and implementing a universal extension module for processing objects in a database Dec-2002
US 2002/0198935 A1 Methods and systems for validating the fields of a form Dec-2002
US 2003/0004951 A1 Automated client-server data validation Jan-2003
US 2003/0007000 A1 Method, system and program product for viewing and manipulating graphical objects representing hierarchically arranged elements of a modeled environment Jan-2003
US 2003/0014397 A1 Generating one or more XML documents from a relational database using XPath data model Jan-2003
US 2003/0018668 A1 Enhanced transcoding of structured documents through use of annotation techniques Jan-2003
US 2003/0020746 A1 System and method for dynamically generating a web page Jan-2003
US 2003/0023641 A1 Web page authoring tool Jan-2003
US 2003/0025732 A1 Method and apparatus for providing customizable graphical user interface and screen layout Feb-2003
US 2003/0026507 A1 Sorting images for improved data entry productivity Feb-2003
US 2003/0028550 A1 Method, system, and program for maintaining information in database tables and performing operations on data in the database tables. Feb-2003
US 2003/0037303 A1 Method of and system for updating a document Feb-2003
US 2003/0038788 A1 Automatically scrolling handwritten input user interface for personal digital assistants and the like Feb-2003
US 2003/0038846 A1 Message display program and message display apparatus Feb-2003
US 2003/0043986 A1 Method and apparatus for calendar based call control Mar-2003
US 2003/0046665 A1 Reusable software component for textually supplementing, modifying, evaluating and processing procedural logic for a compiled host program at run-time Mar-2003
US 2003/0048301 A1 System, method and computer program product for editing supplier site information in a supply chain management framework Mar-2003
US 2003/0051243 A1 Electronic program guide using markup language Mar-2003
US 2003/0055811 A1 Document controlled workflow systems and methods Mar-2003
US 2003/0055828 A1 Methods for synchronizing on-line and off-line transcript projects Mar-2003
US 2003/0056198 A1 SQL debugging using XML dataflows Mar-2003
US 2003/0061386 A1 Method and system of use of transcode directives for distributed control of transcoding servers Mar-2003
US 2003/0061567 A1 Apparatus and method for protecting entries in a form using access rights information Mar-2003
US 2003/0084424 A1 Pattern-based comparison and merging of model versions May-2003
US 2003/0093755 A1 Document processing system and method May-2003
US 2003/0110443 A1 Method and apparatus for programmatic learned routing in an electronic form system Jun-2003
US 2003/0120578 A1 System and methods for electronic securities underwriting and electronic dissemination of annual financial and disclosure information from issuers to information repositories in accordance with U.S. securities laws and regulations Jun-2003
US 2003/0120651 A1 Methods and systems for model matching Jun-2003
US 2003/0120659 A1 Systems for developing websites and methods therefor Jun-2003
US 2003/0120671 A1 Extensible stylesheet designs in visual graphic environments Jun-2003
US 2003/0120686 A1 Extensible stylesheet designs using meta-tag and/or associated meta-tag information Jun-2003
US 2003/0126555 A1 Enhanced attribute prompting in browser clients Jul-2003
US 2003/0128196 A1 Computer system interface surface with reference points and sensor with identifier Jul-2003
US 2003/0135825 A1 Dynamically generated mark-up based graphical user interfaced with an extensible application framework with links to enterprise resources Jul-2003
US 2003/0140132 A1 Method and apparatus for updating network device configuration information in a network management system Jul-2003
US 2003/0140160 A1 Method and apparatus for determining the order of streaming modules Jul-2003
US 2003/0142072 A1 Hand-drawing capture via interface surface having coded marks Jul-2003
US 2003/0149934 A1 Computer program connecting the structure of a xml document to its underlying meaning Aug-2003
US 2003/0158897 A1 Networked platform for creating and supporting communities Aug-2003
US 2003/0163285 A1 XPath evaluation method, XML document processing system and program using the same Aug-2003
US 2003/0167277 A1 Application program interface for network software platform Sep-2003
US 2003/0182268 A1 Method and system for storing and querying of markup based documents in a relational database Sep-2003
US 2003/0182327 A1 Synchronizing data shared between two devices independent of any other devices that may also share the data Sep-2003
US 2003/0187756 A1 Electronic realty and transaction system and method therein Oct-2003
US 2003/0187930 A1 Messaging system and method with transcoder filtering of baseline message representations Oct-2003
US 2003/0188260 A1 Method and apparatus for creating and filing forms Oct-2003
US 2003/0189593 A1 Method and apparatus for dynamically updating a markup language based user interface Oct-2003
US 2003/0192008 A1 System and method for comprising manual function for managing a form Oct-2003
US 2003/0200506 A1 Anchoring method for computing an XPath expression Oct-2003
US 2003/0204481 A1 Method and system for visually constructing XML schemas using an object-oriented model Oct-2003
US 2003/0204511 A1 System and method for viewing relational data using a hierarchical schema Oct-2003
US 2003/0204814 A1 System & method for creating, editing, an on-line publication Oct-2003
US 2003/0205615 A1 Smart business card system Nov-2003
US 2003/0210428 A1 Non-OCR method for capture of computer filled-in forms Nov-2003
US 2003/0212664 A1 Querying markup language data sources using a relational query processor Nov-2003
US 2003/0212902 A1 Computer immune system and method for detecting unwanted code in a P-code or partially compiled native-code program executing within a virtual machine Nov-2003 713/200
US 2003/0217053 A1 Context control mechanism for data executed in workflows of process, factory-floor, environmental, computer aided manufacturing-based or other control system Nov-2003
US 2003/0220930 A1 System and method for translating to and from hierarchical information systems Nov-2003
US 2003/0225469 A1 Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system with unified messaging interface Dec-2003
US 2003/0225768 A1 Workload analysis tool for relational databases Dec-2003
US 2003/0225829 A1 System and method for platform and language-independent development and delivery of page-based content Dec-2003
US 2003/0226132 A1 Method and system for transforming legacy software applications into modern object-oriented systems Dec-2003
US 2003/0233374 A1 Dynamic workflow process Dec-2003
US 2003/0233644 A1 System and method for manipulating offline software Dec-2003
US 2003/0236859 A1 System and method providing API interface between XML and SQL while interacting with a managed object environment Dec-2003
US 2003/0236903 A1 Method and apparatus for structured streaming of an XML document Dec-2003
US 2003/0237046 A1 Transformation stylesheet editor Dec-2003
US 2003/0237047 A1 Comparing hierarchically-structured documents Dec-2003
US 2004/0002939 A1 Schemaless dataflow within an XML storage solution Jan-2004
US 2004/0002950 A1 Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system using hierarchically enumerated data set Jan-2004
US 2004/0003031 A1 Running dynamic web pages off-line with a wizard Jan-2004
US 2004/0003353 A1 Workflow integration system for automatic real time data management Jan-2004
US 2004/0003389 A1 Mechanism for downloading software components from a remote source for use by a local software application Jan-2004
US 2004/0010752 A1 System and method for filtering XML documents with XPath expressions Jan-2004
US 2004/0015783 A1 Methods for interactively defining transforms and for generating queries by manipulating existing query data Jan-2004
US 2004/0024842 A1 Validation framework for validating markup page input on a client computer Feb-2004
US 2004/0030991 A1 Systems and methods for facilitating automatic completion of an electronic form Feb-2004
US 2004/0039881 A1 Systems and methods for storing differing data formats in fixed field definitions Feb-2004
US 2004/0039990 A1 Automated form and data analysis tool Feb-2004
US 2004/0039993 A1 Automatic formatting and validating of text for a markup language graphical user interface Feb-2004
US 2004/0044961 A1 Method and system for transformation of an extensible markup language document Mar-2004
US 2004/0044965 A1 Structured document edit apparatus, structured document edit method, and program product Mar-2004
US 2004/0046789 A1 Extensible user interface (XUI) framework and development environment Mar-2004
US 2004/0054966 A1 Real-time method, system and program product for collecting web form data Mar-2004
US 2004/0059754 A1 Perceptual information processing system Mar-2004
US 2004/0073565 A1 System and method for generating automatic user interface for arbitrarily complex or large databases Apr-2004
US 2004/0073868 A1 Method and system for compliance forms and compliance forms user interface Apr-2004
US 2004/0078756 A1 Method of improving recognition accuracy in form-based data entry systems Apr-2004
US 2004/0083426 A1 System and method for generating pre-populated forms Apr-2004
US 2004/0088647 A1 Web-based XML document processing system May-2004
US 2004/0088652 A1 Data processing and difference computation for generating addressing information May-2004
US 2004/0093596 A1 Information processing apparatus having a capability of halting a printing process for off-line processing, and method and program for controlling printing process including halting the printing process for off-ling processing May-2004
US 2004/0107367 A1 Method, arrangement and secure medium for authentication of a user Jun-2004
US 2004/0117769 A1 Visual debugger for stylesheets Jun-2004
US 2004/0123277 A1 Method, system and computer product for parsing binary data Jun-2004
US 2004/0146199 A1 Reformatting documents using document analysis information Jul-2004
US 2004/0148178 A1 Service management system Jul-2004
US 2004/0148514 A1 Evidence-based application security Jul-2004
US 2004/0148571 A1 Method and apparatus for adapting web contents to different display area Jul-2004
US 2004/0162741 A1 Method and apparatus for product lifecycle management in a distributed environment enabled by dynamic business process composition and execution by rule inference Aug-2004
US 2004/0163041 A1 Relational database structures for structured documents Aug-2004
US 2004/0163046 A1 Dynamic adaptation of GUI presentations to heterogeneous device platforms Aug-2004
US 2004/0172442 A1 System and Method for Sharing Data Between Hierarchical Databases Sep-2004
US 2004/0181543 A1 Method of using recommendations to visually create new views of data across heterogeneous sources Sep-2004
US 2004/0181711 A1 Change request form annotation Sep-2004
US 2004/0186762 A1 System for performing collaborative tasks Sep-2004
US 2004/0189708 A1 System and method for real-time validation of structured data files Sep-2004
US 2004/0189716 A1 System and method for designing electronic forms and hierarchical schemas Sep-2004
US 2004/0194035 A1 Systems and methods for automatic form segmentation for raster-based passive electronic documents Sep-2004
US 2004/0205473 A1 Method and system for implementing an enterprise information portal Oct-2004
US 2004/0205525 A1 Automatic identification of form contents Oct-2004
US 2004/0205534 A1 System and method for providing access to forms and maintaining the data used to complete the forms Oct-2004
US 2004/0205571 A1 Method and system for stylesheet-centric editing Oct-2004
US 2004/0205592 A1 Method and apparatus for extensible stylesheet designs Oct-2004
US 2004/0205605 A1 Method and system for stylesheet rule creation, combination, and removal Oct-2004
US 2004/0205653 A1 Method and system for document collaboration Oct-2004
US 2004/0205671 A1 Natural-language processing system Oct-2004
US 2004/0210599 A1 Methods and apparatus for parsing extensible markup language (XML) data streams Oct-2004
US 2004/0210645 A1 System, method and computer program product for content/context sensitive scanning utilizing a mobile communication device Oct-2004 709/220
US 2004/0216084 A1 System and method of managing web content Oct-2004
US 2004/0221238 A1 Automatic generation of programs with GUI controls for interactively setting or viewing values Nov-2004
US 2004/0221245 A1 Graphical user interface including palette windows with an improved navigation interface Nov-2004
US 2004/0237030 A1 System and method of implementing calculation fields in an electronic form Nov-2004
US 2004/0260593 A1 System and user interface supporting workflow operation improvement Dec-2004
US 2004/0261019 A1 XPath evaluation and information processing Dec-2004
US 2004/0268229 A1 Markup language editing with an electronic form Dec-2004
US 2005/0004893 A1 Workflow management devices and systems, and workflow assignment and management methods Jan-2005
US 2005/0005248 A1 Task-sensitive methods and systems for displaying command sets Jan-2005
US 2005/0015279 A1 Service order system and user interface for use in healthcare and other fields Jan-2005
US 2005/0015732 A1 Mapping tool graphical user interface Jan-2005
US 2005/0022115 A1 Visual and interactive wrapper generation, automated information extraction from web pages, and translation into xml Jan-2005
US 2005/0027757 A1 System and method for managing versions Feb-2005
US 2005/0028073 A1 Method and system for automating workflows Feb-2005
US 2005/0033626 A1 Universal worklist service and user interface Feb-2005
US 2005/0033728 A1 Methods, systems, architectures and data structures for delivering software via a network Feb-2005
US 2005/0038711 A1 Method for advertising for sale classroom materials and services Feb-2005
US 2005/0050066 A1 Processing XML node sets Mar-2005
US 2005/0055627 A1 System and method for personalizing electronic mail messages Mar-2005
US 2005/0060324 A1 System and method for creation and maintenance of a rich content or content-centric electronic catalog Mar-2005
US 2005/0060647 A1 Method for presenting hierarchical data Mar-2005
US 2005/0060721 A1 User-centric policy creation and enforcement to manage visually notified state changes of disparate applications Mar-2005
US 2005/0065933 A1 System and method for customizing form elements in a form building application Mar-2005
US 2005/0065936 A1 System and method for reusing form elements in a form building application Mar-2005
US 2005/0066287 A1 User-friendly data binding, such as drag-and-drop data binding in a workflow application Mar-2005
US 2005/0071752 A1 Forms management system Mar-2005
US 2005/0076049 A1 Business workflow database and user system Apr-2005
US 2005/0091285 A1 Promotion and demotion techniques to facilitate file property management between object systems Apr-2005
US 2005/0091305 A1 Network system extensible by users Apr-2005
US 2005/0097536 A1 Method of graphically displaying and manipulating multiple workflow run instances of a software application May-2005
US 2005/0102370 A1 Truth on client persistent caching May-2005
US 2005/0102612 A1 Web-enabled XML editor May-2005
US 2005/0108104 A1 Integrating third party shopping cart applications with an online payment service May-2005
US 2005/0108624 A1 Lightweight form pattern validation May-2005
US 2005/0114757 A1 Method and system for transforming content for execution on multiple platforms May-2005
US 2005/0114764 A1 Producing a page of information based on a dynamic edit form and one or more transforms May-2005
US 2005/0132043 A1 System and method for command line interface command processing Jun-2005
US 2005/0132196 A1 Electronic signatures Jun-2005
US 2005/0138031 A1 Systems and methods for assigning task-oriented roles to users Jun-2005
US 2005/0138086 A1 Cross-system update method and system Jun-2005
US 2005/0138539 A1 Method of assisting a user Jun-2005
US 2005/0149375 A1 Systems and methods for handling and managing workflows Jul-2005
US 2005/0149726 A1 Systems and methods for secure client applications Jul-2005 713/164
US 2005/0160398 A1 Method and apparatus for dataflow creation and execution Jul-2005
US 2005/0171746 A1 Network models of complex systems Aug-2005
US 2005/0198086 A1 Persistent archives Sep-2005
US 2005/0198125 A1 Methods and system for creating and managing identity oriented networked communication Sep-2005
US 2005/0198247 A1 Granular management of network resources Sep-2005
US 2005/0210263 A1 Electronic form routing and data capture system and method Sep-2005
US 2005/0223063 A1 Quick reply form Oct-2005
US 2005/0223320 A1 Automatic layout of content in a design for a medium Oct-2005
US 2005/0246304 A1 End-user application customization using rules Nov-2005
US 2005/0262112 A1 Method and apparatus to convert project plans into workflow definitions Nov-2005
US 2005/0268217 A1 System for describing the overlaying of electronic data onto an electronic image Dec-2005
US 2005/0268222 A1 Method of creating, processing and storing HTML documents Dec-2005
US 2006/0010386 A1 Microbrowser using voice internet rendering Jan-2006
US 2006/0020586 A1 System and method for providing access to databases via directories and other hierarchical structures and interfaces Jan-2006
US 2006/0026534 A1 Providing information to computer users Feb-2006
US 2006/0031757 A9 System for creating and editing mark up language forms and documents Feb-2006
US 2006/0036995 A1 Search window for adding program elements to a program Feb-2006
US 2006/0041838 A1 System and method for automatically generating XML schema for validating XML input documents Feb-2006
US 2006/0059107 A1 System and method for establishing eletronic business systems for supporting communications servuces commerce Mar-2006
US 2006/0059434 A1 System and method to capture and manage input values for automatic form fill Mar-2006
US 2006/0069605 A1 Workflow association in a collaborative application Mar-2006
US 2006/0069985 A1 Parsing extensible markup language (XML) data streams Mar-2006
US 2006/0080657 A1 Method and structure for autonomic application differentiation/specialization Apr-2006
US 2006/0085409 A1 Method and apparatus for information transformation and exchange in a relational database environment Apr-2006
US 2006/0101037 A1 Application programming interface for text mining and search May-2006
US 2006/0101051 A1 Electronic data capture and verification May-2006
US 2006/0107206 A1 Form related data reduction May-2006
US 2006/0129583 A1 Recursive sections in electronic forms Jun-2006
US 2006/0129978 A1 Business rules user interface for development of adaptable enterprise applications Jun-2006
US 2006/0143220 A1 Software application framework using meta-data defined object definitions Jun-2006
US 2006/0155857 A1 Deterministic session state management within a global cache array Jul-2006
US 2006/0161559 A1 Methods and systems for analyzing XML documents Jul-2006
US 2006/0161837 A1 Structural editing operations for network forms Jul-2006
US 2006/0173865 A1 System and method of translating a relational database into an XML document and vice versa Aug-2006
US 2006/0200754 A1 Systems and methods for storing personal information, automatically filling out forms, and sharing information with a data recipient Sep-2006
US 2007/0005611 A1 Work flow managing system Jan-2007
US 2007/0036433 A1 Recognizing data conforming to a rule Feb-2007
US 2007/0050719 A1 System and method for dynamic assistance in software applications using behavior and host application models Mar-2007
US 2007/0061467 A1 Sessions and session states Mar-2007
US 2007/0061706 A1 Mapping property hierarchies to schemas Mar-2007
US 2007/0074106 A1 Authoring Arbitrary XML Documents Using DHTML and XSLT Mar-2007
US 2007/0088554 A1 Method and system for building/updating grammars in voice access systems Apr-2007
US 2007/0094589 A1 Incrementally Designing Electronic Forms and Hierarchical Schemas Apr-2007
US 2007/0100877 A1 Building Electronic Forms May-2007
US 2007/0101280 A1 Closer Interface for Designing Electronic Forms and Hierarchical Schemas May-2007
US 2007/0118803 A1 Products and processes for providing one or more links in an electronic file that is presented to a user May-2007
US 2007/0130500 A1 Enabling electronic documents for limited-capability computing devices Jun-2007
US 2007/0130504 A1 Reusable XPath validation expressions Jun-2007
US 2007/0186157 A1 Simultaneous multi-user document editing system Aug-2007
US 2007/0208606 A1 Workflow management system and method Sep-2007
US 2007/0208769 A1 System and method for generating an XPath expression Sep-2007
US 2007/0276768 A1 Trusted third party services system and method Nov-2007
US 2008/0028340 A1 Tree view for reusable data markup language Jan-2008
US 2008/0126402 A1 Translation File May-2008
US 2008/0134162 A1 Methods and Systems For Delivering Software Jun-2008
US 2009/0177961 A1 Designing Electronic Forms Jul-2009
EP 0841615 Search for [EP 0841615] May-1998
EP 0841615 Search for [EP 0841615] Nov-1999
EP 0961197 Search for [EP 0961197] Dec-1999
EP 1076290 Search for [EP 1076290] Feb-2001
EP 1221661 Search for [EP 1221661] Jul-2002
JP 63085960 Search for [JP 63085960] Apr-1988
JP 401173140 Search for [JP 401173140] Jul-1989
JP 401173140 A Search for [JP 401173140 A] Jul-1989
JP 3191429 Search for [JP 3191429] Aug-1991
JP 4225466 Search for [JP 4225466] Aug-1992
JP 5314152 Search for [JP 5314152] Nov-1993
JP 406014105 Search for [JP 406014105] Jan-1994
JP 6139241 Search for [JP 6139241] May-1994
JP 6180697 Search for [JP 6180697] Jun-1994
JP 6180698 Search for [JP 6180698] Jun-1994
JP 10171662 Search for [JP 10171662] Jun-1998
JP 10-2207805 Search for [JP 10-2207805] Aug-1998
JP 10207805 Search for [JP 10207805] Aug-1998
JP 2000132436 Search for [JP 2000132436] May-2000
JP 2002183652 Search for [JP 2002183652] Jun-2002
JP 2003173288 Search for [JP 2003173288] Jun-2003
WO 99/24945 May-1999
WO WO9924945 May-1999
WO 99/56207 Nov-1999
WO WO9956207 Nov-1999
WO 01/44934 Jun-2001
WO WO0157720 Aug-2001
Other References
“Whitehill Composer” Whitehill Technologies Inc. 2 pages. [+195] [-195]
“The Use of Name Spaces in Plan 9” Operating Systems Review vol. 27 No. 2 Apr. 1993 pp. 72-76.
“Creating In-Line Objects Within an Itegrated Editing Environment” IBM Technical Disclosure Bulletin vol. 27 No. 5 Oct. 1984 p. 2962.
“Sweeper” Microsoft Interactive Developer vol. 1 No. 1 1996 27 pages.
“The NeXT Application Kit Part I: Non-Responsive Classes” The NeXT Bible 1990 Chapter 16 pp. 275-293.
“Store and Organize Related Project Files in a Binder” Getting Results with Microsoft Office 1990 pp. 109-112.
“Unix Variants” Unix Review vol. 10 No. 4 Apr. 1992 pp. 29-31.
“An Update on BTRON-specification OS Development” IEEE 1991 pp. 132-140.
“Internal and External Media” Electronic Publishing Unleashed 1995 Chapter 22 pp. 510-542.
“CDAM- Compound Document Access and Management. An Object-Oriented Approach” Multimedia Systems Interaction and Applications 1992 Chapter 3 pp. 17-36.
“Naming and Binding: Monikers” Inside Ole 1995 Chapter 9 pp. 431-490.
“Plan 9 from Bell Labs” UKUUG Summer 1990 10 pages.
Laura Acklen & Read Gilgen, “Using Corel Wordperfect 9”, 251-284, 424-434, 583-586 (1998).
Bruce Halberg et al, “Using Microsoft Excel 97”, Published 1997. Bestseller Edition, Pertinent pp. 1-9, 18-25, 85-89, 98-101, 106-113, 124-127, 144-147, 190-201, 209-210, 218-227, 581-590, 632-633, 650-655, 712-714.
Leblond et al. “PC Magazine Guide to Quattro Pro for Windows”, pp. 9-11, 42-61, Ziff-Davis Press, Copyright 1993 by the LeBlond Group.
Mansfield, “Excel 97 for Busy People”, Published by Osborne/Mcgraw-Hill 1997 pp. 48-50.
“Microsoft Visual Basic 5.0 Programmer's Guide 1997”; pp. 578-579; Redmond WA 98052-6399.
Han at al., WebSplitter: A Unified XML Framework for Multi-Device Collaborative Web Browsing, 2000, ACM Conference on Cimputer Supported Cooperative Work, 10 pages.
IBM: Stack Algorithm for Extractin Subtree from Serialized Tree, Mar. 1, 1994, TDB-ACC-NONN94033, 3 pages.
Cover, XML Forms Architecture, retrieved at <<http://xml.coverpages.org/xfa.html>> on Aug. 17, 2006, Coverpages, Jun. 16, 1999.
Raggett, “HTML Tables”, retrieved on Aug. 6, 2006, at <<http:www://is-edu.hcmuns.edu.vn/WebLib/books/Web/Tel/html3-tables.html>>, W3C Internet Draft, Jul. 7, 1995, pp. 1-12.
“Webopedia Computer Dictionary” retrieved on May 9, 2006, at <<http://www.pewebopedia.com/TERM/O/OLE.html>>, Jupitermedia Corporation, 2006, pp. 7.
Pacheco, Xavier et al., “Delphi 5 Developer's Guide”, Sams Publishing. Chapter 31, Section: Data Streaming,(1999),4.
“Enter Key”, Retrieved from the Internet at http://systems.webopedia.com/TERM/Enterkey.html on Dec. 20, 2006.
“Microsoft Visual Basic 5.0 Programmer's Guide”, Microsoft Press, (1997),pp. 42-43, 54-58.
“Microsoft Word 2000”, Screenshots,(1999),1-5.
Beauchemin, Dave , “Using InfoPath to Create Smart Forms”, Retrieved from the Internet at http:/www.microsoft.com/office/infopath/prodinfo/using.mspx on Jan. 21, 2007,(Mar. 27, 2003).
Begun, Andrew , et al., “Support and Troubleshooting for XML Schemas in InfoPath 2003”, Microsoft Office InfoPath 2003 Technical Articles, Retrieved from the Internet at http://msdn2.microsoft.com/en-us/library/aa168241(office.11,d=printer).aspx on Jan. 21, 2007,(Aug. 2004).
Borland, Russo , “Running Microsoft Word 97”, 314-315, 338, 361-362, 390, and 714-719.
Brabrand, et al., “Power Forms Declarative Client-side Form Field Validation”, (2002),1-20.
Dubinko, Micah , “XForms and Microsoft InfoPath”, Retrieved from the Internet at http://www.xml.com/Ipt/a/1311 on Jan. 21, 2007,(Oct. 29, 2003).
Hoffman, Michael, “Architecture of Microsoft Office InfoPath 2003”, Microsoft Office InfoPath 2003 Technical Articles, Retrieved from the Internet at http://msdn2.microsoft.com/en-us/library/aa219024(office.11,d=printer).aspx on Jan. 21, 2007,(Jun. 2003).
Lehtonen, Miro , et al., “A Dynamic User Interface for Document Assembly”, Department of Computer Science, University of Helsinki,(Nov. 2002).
Nelson, Joe, “Client-side Form Validation Using JavaScript”, Developer Advisory, (Sep. 21, 2001).
Raman, T. V., et al., “XForms 1.0”, (Dec. 2001),Section 1-12.2.3 & Appendices A-G.
Rees, Michael J., “Evolving the Browser Towards a Standard User Interface Architecture”, School of Information Technology, Bond University, Australia,(2001).
Singh, Darshan , “Microsoft InfoPath 2003 by Example”, Retrieved from the Internet at http://www.perfectxml.com/InfoPath.asp on Jan. 21, 2007,(Apr. 20, 2003).
Udell, Jon, “InfoPath and XForms”, Retrieved from the Internet at http://weblog.infoworld.com/udell/2003/02/26.html,(Feb. 26, 2003).
U.S. Appl. No. 60/209,713, Kutay et al.
U.S. Appl. No. 60/191,662, Moore et al.
U.S. Appl. No. 60/203,081, Ben-Natan et al.
“Architecture for a Dynamic Information Area Control” IBM Technical Disclosure Bulletin IBM Corp. New York US vol. 37 No. 10 Jan. 10, 1994. pp. 245-246.
Alschuler Liora “A tour of Xmetal” O'Reilly XML.COM ′Online Jul. 14, 1999 XP002230081 retrieved from the internet: <URL:http://www.xml.com/pub/a/SeyboldReport/ip0311025.html> retrieved on Feb. 5, 2003.
Au Irene et al. “Netscape Communicator's Collapsible Toolbars” CHI'98 Human Factors in Computing Systems Conference Proceedings Los Angeles CA Apr. 18-23, 1998 pp. 81-86.
Battle Steven A. et al.; “Flexible Information Presentation with XML” 1998 the Institution of Electrical Engineers 6 pages.
Brogden William; “Arbortext Adept 8 Editor Review” O'Reilly XML.COM ′Online! Sep. 22, 1999 XP002230080 retrieved from the Internet <URL:http://www.xml.com/pub/a/1999/09/adept/AdeptRvw.htm> retrieved on Feb. 5, 2003.
Chen Yi et al.: A; “XKvalidator: A Constraint Validator for XML” CIKM '-2 Nov. 4-9, 2002 Copyright 2002 ACM 1-58113-492-4/02/0011 pp. 446-452.
Ciancarini Paolo et al.; “Managing Complex Documents Over the WWW: A Case Study for XML” IEEE Transactions on Knowledge and Data Engineering vol. 11 No. 4 Jul./Aug. 1999. pp. 629-938.
Davidow Ari: Alle; “XML Editors: Allegations of Functionality in search of reality” Internet ′Online! 1999 XP002230082 retrieved from the Internet <URL:http://www.ivritype.com/xml/>.
Kanemoto Hirotaka et al; “An Efficiently Updatable Index Scheme for Structured Documents” 1998 IEEE pp. 991-996.
Sutanthavibul Supoj et al.; “XFIG Version 3.2 Patchlevel 2 (Jul. 2 1998) Users Manual (Edition 1.0)” Internet Document [Online] Jul. 2, 1998 XP002229137 Retrieved from the Internet: <URL:http://www.ice.mtu.edu/onlinedocs/xfig332/> [retrieved on Jan. 28, 2003].
Usdin Tommie et al.; Not a; “XML: Not a Silver Bullet But a Great Pipe Wrench” Standardview vol. 6. No. 3 Sep. 1998 pp. 125-132.
Chien Shu-Yao et al.; “Efficient Management of Multiversion Documents by Object Referencing” Proceedings of the 27th VLDB Conference 2001 pp. 291-300.
Chien Shu-Yao et al.; “Efficient schemes for managing mulitversion XML documents” VLDB Journal (2002) pp. 332-352.
Chien Shu-Yao et al.; “Storing and Querying Multiversion XML Documents using Durable Node Numbers” IEEE 2002 pp. 232-241.
Chien Shu-Yao et al.; “XML Document Versioning” SIGMOD Record vol. 30 No. 3 Sep. 2001 pp. 46-53.
Dyck Timothy; “XML Spy Tops as XML Editor” http://www.eweek.com/artide2/0395972404100.asp Nov. 25 2002 4 pages.
Haukeland Jan-Henrick; “Tsbiff—tildeslash biff—version 1.2.1” Internet Document [Online] Jun. 1999 URL: http://web.archive.org/web/19990912001527/http://www.tildeslash.com/tsbiff/.
Nelson Mark; “Validation with MSXML and XML Schema” Windows Developer Magazine Jan. 2002 pp. 35-38.
Netscape Communication Corpora; “Netscape Communicator 4.61 for OS/2 Warp” Software 1999 The whole software release & “Netscape—Version 4.6 [en]-010615” Netscape Screenhot October 2, 2002.
Noore A.; “A secure conditional access system using digital signature and encryption” 2003 Digest of Technical Papers. International Conference on Consumer Electronics Jun. 2003 pp. 220-221.
Rogge et al.; “Validating MPEG-21 Encapsulated Functional Metadata” IEEE 2002 pp. 209-212.
Wong Raymond K. et al.; “Managing and Querying Multi-Version XML Data with Update Logging” DocEng '02 Nov. 8-9, 2002 Copyright 2002 ACM 1-58113-594-7/02/0011 pp. 74-81.
Cheng Ya Bing et al.; “Designing Valid XML Views” ER 2002 LNCS 2503 2002 Springer-Verlag Berlin Heidelberg 2002 pp. 463-477.
Chuang Tyng-Ruey; “Generic Validation of Structural Content with Parametric Modules” ICFP '01 Sep. 3-5, 2001 Copyright 2001 ACM 1-58113-415-0/01/0009 pp. 98-109.
Dayton Linnea and Jack Davis; “Photo Shop 5/5.5 Wow! Book” 2000 Peachpit Press pp. 8-17.
Hall Richard Scott; “Agent-based Software Configuration and Deployment” Thesis of the Univeristy of Colorado Online Dec. 31, 1999 retrieved from the Internet on Nov. 7, 2003: <http://www.cs.colorado.edu/users/rickhall/documents/ThesisFinal.pdf> 169 pages.
Hardy Mathew R. B. et al; “Mapping and Displaying Structural Transformations between XML and PDF” DocEng '02 Nov. 8-9, 2002 Copyright 2002 ACM 1-58113-597-7/02/0011 pp. 95-102.
Kim Sang-Kyun et al.; “Immediate and Partial Validation Mechanism for the Conflict Resolution of Update Operations in XML Databases” WAIM 2002 LNCS 2419 2002 pp. 387-396 Springer-Veriag Berlin Heidelberg 2002.
Netscape Communication Corp; “SmartUpdate Developer's Guide” Online Mar. 11, 1999 retrieved from the Internet on Dec. 8, 2000: <http://developer.netscape.com:80/docs/manuals/communicator/jarman/index.htm> 83 pages.
Tomimori et al.; “An Efficient and Flexible Access Control Framework for Java Programs in Mobile Terminals”; 22nd International Conference on Distributed Computing Systems Workshops; 2002; pp. 777-782.
Van Hoff Arthur et al.; “The Open Software Description Format” Online Aug. 13, 1997 retrieved from the Internet on Nov. 7, 2003: <http://www.w3.org/TR/NOTE-OSD> 11 pages.
Verlamis Iraklis et al.; “Bridging XML-Schema and relational databases. A System for generating and manipulating relational databases using valid XML documents.” DocEng '01 Nov. 9-10, 2001 Coppyright 2001 ACM 1-58113-432-0/01/0011 pp. 105-114.
Williams Sara and Charlie Kin; “The Component Object Model” A Technical Overview Oct. 1994 Microsoft Corp. pp. 1-14.
Pacheco et al., “Delphi 5 Developer's Guide,” Sams Publishing, 1999, Chapter 31 Section: Data Streaming, 6 pages.
“Netscape window,” Netscape Screenshot Oct. 2, 2002.
Clarke P., “From small beginnings” Knowledge Management Nov. 2001, pp. 28-30.
Hwang et al., “Micro-Firewalls for Dynamic Network Security with Distributed Intrusion Detection”; IEEE International Symposium on Network Computing and Applications; 2001; pp. 68-79.
Kaiya et al., “Specifying Runtime Environments and Functionalities of Downloadable Components Under the Sandbox Mode”; International Symposium on Principles of Software Evolution; 2000; pp. 138-142.
Komatsu N. et al., “A Proposal on Digital Watermark in Document Image Communication and Its Application to Realizing a Signature” Electronics and Communications in Japan Part I: Communications vol. 73 No. 5, May 1990, pp. 22-33.
Sun Q. et al., “A robust and secure media signature scheme for JPEG images” Proceedings of 2002 IEEE Workshop on Multimedia Signal Processing, Dec. 2002, pp. 296-299.
Prevelakis et al., “Sandboxing Applications”; Proceedings of the FREENIX Track; 2001; pp. 119-126.
Schmid et al., “Protection Data from Malicious Software”; 18th Annual Computer Security Applications Conference; 2002; pp. 199-208.
Trupin J., “The Visual Programmer,” Microsoft Systems Journal, Apr. 1996, pp. 103-105.
Zdonik S., “Object Management System Concepts,” ACM, 1984, pp. 13-19.
Clark James—W3C Editor; “XSL Transformation (XSLT) Verison 1.0” Nov. 16, 1999 W3C (MIT INRIA Kejo) pp. 1-156.
Description of Whitehill Composer software product producted by Whitehill Technologies Inc. available at <http://www.xml.com/pub/p/221> accessed on Apr. 8 2004, two pages.
McCright J.S.; “New Tool Kit to Link Groove with Microsoft Sharepoint” eWeek Enterprise News & Reviews Ziff Davis Media INc. Jul. 29, 2002 1 page.
Musgrave S; “Networking technology—impact and opportunities” Survey and Statistical Computing 1996. Proceedings of the Second ASC International Conference. Sep. 1996. pp. 369-378. London UK.
Rapaport L; “Get more from SharePoint” Transform Magazine vol. 11 No. 3. Mar. 2002 pp. 1315.
W3C Editor James Clark and Ste; “XML Path Language (XPath) Version 1.0” Nov. 16 1999W3C (MIT INRIA Kejo) pp. 1-49.
OMG XML Metadata Interchange (XMI) Specification Version 1.2 Jan. 2002.
Grosso, et al., “XML Fragment Interchange”, W3C,(Feb. 2001), 1-28.
Altova, et al., “User and Reference Manual Version 4.4”, www.xmlspy.com, (May 24, 2007), 1-565.
“XForm 1.0”, W3C,(Jul. 16, 2001).
Atova, “User Reference manual Version 4.4, XML Spy suite 4.4,” Atova Ges.m.b.H and Altova, Inc., May 24, 2002, pages cover, copyright p. 1-565.
Altova et al. XML Spy, XML integrated Development Environments, Altova Inc., 2002, pp. 1-18.
Ben-Natan, U.S. Appl. No. 60/203,081, filed May 9, 2000, entitled “Internet platform for creating and supporting communities”.
Ixia Soft, “Steamlining content creation, retrieval, and publishing on the Web using TEXTML Server and SML Spy 4 Suite in an integrated, Web publishing environment,” (Partner&apos;s Whitepaper, published on the Web as of Jun. 6, 2002, downlowad pp. 1-16.
Kutay, U.S. Appl. No. 60/209,713, filed Jun. 5, 2000, entitled, “Methods and systems for accessing, organizing presenting and viewing data”.
Microsoft Word 2000 (see Screen Shot “About Microsoft Word”) Published 1983-1999 and Microsoft Excel 2000 (see Screen Shot “About Microsoft Excel”) Published 1988-1999, Three pages.
Moore, U.S. Appl. No. 60/191,662, filed Mar. 23, 2000, entitled “Collection-based presistent digital archives” .
Microsoft Corporation, “Microsoft Computer Dictionary” Microsoft Press, Fifth Edition, p. 149.
Altova, Inc., “XML Spy 4.0 Manual,” Altova Inc. & Altova GmbH, coyright 1998-2001, Chapters 1, 2, and 6, encompassing pp. 1-17, 18-90, and 343-362.
Cybook, Inc.: “Copying the Search Form to Services-based Web Sites” INternet Article, (online) Jul. 26, 2004. *the whole document*.
Excel Developer Tip (hereinafter “Excel”), “Determining the Data Type of a Cell”, May 13, 1998, p. 1 (available at http://jwalk.com/ss//excel/tips/tip62.htm).
Macromedia, Inc.: “Dreamweaver Technote, Changes in copying and pasting in Dreamweaver 4” Internet Article (online). *the whole document*.
Rado, Dave: “How to create a template that makes it easy for users to “fill in the blanks”, without doing any programming” Microsoft Word MVP FAQ Site, (online) Apr. 30, 2004, the whole document.
XMLSPY, “XmlSpy 2004 Enterprise Edition Manual”, Altova,(May 17, 2004),1-25, 220-225.
STYLUSSTUDIO, “StylusStudio: XPath Tools”, 2004-2007, StylusStudio,1-14.
DODDS, “Toward an XPath API”, xml.com,(May 7, 2001),1-3.
ALTOVA, “Altova Tools for XPath 1.0/2.0”, Altova,1-12.
“Microsoft Word 2000 Screenshots”, Word,(2000),1-17.
“Microsoft Word 2000 Screenshots”, (2000),11-17.
Anat, Eyal et al., “Integrating and Customizing Hererogeneous E-Commerce Applications”, The VLDB Journal-The International Journal on Very Large Data Bases, vol. 10, Issue 1,(Aug. 2001), 16-38.
Adams, Susie et al., “BizTalk Unleashed”, Sams publishing, 2002, first printing Mar. 2001, 1-2, 31-138.
Vasters, Clemens F., “BizTalk Server 2000 A Beginner's Guide”, Osborne/McGraw-Hill,(2001),1-2, 359-402.
Halberg, Bruce et al., “Using Microsoft Excel 97”, (1997),191-201, 213-219.
Villard, et al., “An Incremental XSLT Transformation Processor for XML Document Manipulation”, http://www2002.org/CDROM/refereed/321, Printed on May 18, 2007,(May 2002),25 pages.
Bradley, Neil “The XML Companion, Third Edition”, Published by Addison Wesley Professional, http://proquest.safaribooksonline.com0201770598, http,(Dec. 12, 2001), 1-18.
Klarlund, Nils “DSD: A Schema Language for XML”, ACM, FSMP Portland Oregon, (2000),101-111.
Watt, Andrew “MIcrosoft Office Infopath 2003 Kick Start”, (Published by Sams) Print ISBN-10:0-672-32623-X, (Mar. 24, 2004),1-57.
Hu, et al., “A Programmable Editor for Developing Structured Documents based on Bidirectional Transformations”, ACM,(Aug. 2004),178-179.
Bray, Tim “Extensible Markup Language (XML)”, http://www.textualitv.com/sgml-erb/WD-xml.html, second named inventor Jean Paoli, third named inventor C.M. Sperberg-McQueen,(Feb. 10, 1998),37 Pages.
Kay, Michael “XSL Transfornmations (XSLT) Version 2.0”, http://www.w3.org/TR/2005/WD-xslt20-20050404, (04/205),1-374.
“Notice of Allowance”, U.S. Appl. No. 10/404,312, (Jan. 12, 2009), 12 pages.
“Final Office Action”, U.S. Appl. No. 10/857,689, (Jan. 6, 2009), 23 pages.
“Non Final Office Action”, U.S. Appl. No. 10/977,198, (Feb. 2, 2009), 15 pages.
“Non Final Office Action”, U.S. Appl. No. 10/939,588, (Feb. 18, 2009),40 pages.
“Non Final Office Action”, U.S. Appl. No. 10/976,451, (Feb. 23, 2009),39 pages.
“Non final Office Action”, U.S. Appl. No. 11/234,767, (Feb. 26, 2009),37 pages.
“Notice of Allowance”, U.S. Appl. No. 11/167,514, (Mar. 11, 2009),6 pages.
“Non Final Office Action”, U.S. Appl. No. 10/942,528, (Mar. 6, 2009),31 pages.
“Non Final Offfice Action”, U.S. Appl. No. 11/170,521, (Jan. 21, 2009),86 pages.
“Foreign Office Action”, Application Serial No. 2,412,611, (Feb. 9, 2009),6 pages.
“Foreign Office Action”, Application Serial No. 200610003709.2, (Jan. 9, 2009),8 pages.
“EP Office Action”, Application Serial No. 06111546.5, (Oct. 15, 2008),5 pages.
“Notice of Re-Examination”, Application Serial No. 01813138.7, (Mar. 11, 2009),27 pages.
“Notice of Allowance”, U.S. Appl. No. 10/988,718, (Apr. 9, 2009).
“Final Office Action”, U.S. Appl. No. 11/107,347, (Apr. 2, 2009),15 pages.
“Restriction Requirement”, U.S. Appl. No. 11/227,550 (Apr. 2, 2009),8 pages.
“Non Final Office Action”, U.S. Appl. No. 10/955,665, (Apr. 2, 2009),19 pages.
“Non Final Office Action”, U.S. Appl. No. 10/988,720, (Apr. 2, 2009),19 pages.
“Final Office Action”, U.S. Appl. No. 11/203,818, (Apr. 14, 2009),31 pages.
“Final Office Action”, U.S. Appl. No. 11/044,106 (Apr. 13, 2009),20 pages.
“Final Office Action”, U.S. Appl. No. 11/226,044, (Apr. 20, 2009),24 pages.
“Final Office Action”, U.S. Appl. No. 11/056,500 (Apr. 16, 2009),10 pages.
“Final Office Action”, U.S. Appl. No. 11/203,937, (May 7, 2009),13 pages.
“Non Final Office Action”, U.S. Appl. No. 10/955,666, (May 7, 2009),28 pages.
“Non Final Office Action”, U.S. Appl. No. 10/916,692, (Apr. 30, 2009),14 pages.
“HP Blade Sever BH Series Operating System Guide”, Hewlett-Packard,(Jul. 2002).
“Non Final Office Action”, U.S. Appl. No. 09/599,809, (May 13, 2009).
“Non FInal Office Action”, U.S. Appl. No. 11/295,178.
“Non Final Office Action”, U.S. Appl. No. 10/990,152.
“Final Office Action”, U.S. Appl. No. 11/036,910, (Jun. 1, 2009),15 pages.
“Non Final Office Action”, U.S. Appl. No. 10/857,689 (Jun. 11, 2009),25 pages.
“Non FInal Office Action”, U.S. Appl. No. 11/095,254, (Jun. 8, 2009),21 pages.
“Final Office Action”, U.S. Appl. No. 11/234,767, 24 pages.
“Foreign Office Action”, Application Serial No. 2002-503702, Final Notice of Rejection, (Jun. 5, 2009),212 pages.
Kaori, Iwantani et al., “Perfect Manual of Clarisworks 4.0 for Macintosh”, 1st Edition, Japan,(07/297),pp. 153-167.
Noriko, Matsushita “Step-up Training of Clarisworks (tabulation), Successful Use of Spreadsheet and Tabulation”, Mac People, vol. 4, No. 19,(Oct. 1, 1998),pp. 138-139.
Akihiro, Senda “Word 2000, Conservative- Looking but ‘Attentive’ New Function”, NIKKEI PC 21, vol. 4, No. 8,(Aug. 1, 1999),pp. 115-116.
Yasuji, Fukuhara “Clarisworks, Introduction to Business Document Construction, No. 4, Estimate”, NIKKEI MAC, No. 14,(May 17, 1994),pp. 197-204.
“Final Office Action”, U.S. Appl. No. 10/976,451 (Jul. 2, 2009), 22 pages.
Reagan, Moore W., et al., “Collection-based persistent digital archives”, U.S. Appl. No. 60/191,662, filed Mar. 23, 2000, 133.
“Non-Final Office Action”, U.S. Appl. No. 11/227,550, (Aug. 3, 2009),10 pages.
“Notice of Allowance”, U.S. Appl. No. 11/203,937, (Aug. 3, 2009),7 pages.
“Foreign Office Action”, Application Serial No. 200610051554.X, (Jul. 10, 2009),11 pages.
“Non-Final Office Action”, U.S. Appl. No. 11/234,767, (Aug. 12, 2009),24 Pages.
“Final Office Action”, U.S. Appl. No. 10/977,198, (Aug. 19, 2009),15 pages.
“Non-Final Office Action”, U.S. Appl. No. 10/939,588, (Aug. 27, 2009),28 pages.
“Final Office Action”, U.S. Appl. No. 11/170,521, (Sep. 8, 2009),12 pages.
“Final Office Action”, U.S. Appl. No. 10/402,640, (Aug. 28, 2009),17 pages.
“Notice of Allowance”, U.S. Appl. No. 11/203,937, Supplemental,(Sep. 15, 2009),2 pages.
“Final Office Action”, U.S. Appl. No. 10/942,528, (Sep. 17, 2009),27 pages.
“Non-Final Office Action”, U.S. Appl. No. 11/107,347, (Sep. 17, 2009),9 pages.
“Notice of Allowance”, U.S. Appl. No. 10/988,720, (Sep. 17, 2009),18 pages.
“Non-Final Office Action”, U.S. Appl. No. 11/044,106, (Sep. 24, 2009),17 pages.
“Notice of Allowance”, U.S. Appl. No. 11/203,937, (Aug. 31, 2009),2 pages.
“Non-Final Office Action”, U.S. Appl. No. 11/567,149, (Sep. 8, 2009),5 pages.
“Final Office Action”, U.S. Appl. No. 10/955,666, (Oct. 14, 2009),24 pages.
“Advisory Action”, U.S. Appl. No. 10/942,528, (Oct. 26, 2009),3 pages.
“Non-Final Office Action”, U.S. Appl. No. 11/557,931, (Oct. 20, 2009),27 pages.
“Non-Final Office Action”, U.S. Appl. No. 10/976,451, (Oct. 29, 2009),14 pages.
Webopedia, “Definition of OLE”, Retrieved from: <http://www.webopedia.com/TERM/O/OLE.html>, cited by examiner,(May 16, 1998),3 pages.
Webopedia, “Definition of OpenDoc” Retrieved from: <http://www.webopedia.com/TERM/O/OpenDoc.html>, cited by examiner,(Sep. 18, 1997),3 pages.
Webopedia, “Definition of Network”, Retrieved from: <http://www.webopedia.com/TERM/n/network.html>, cited by examiner,(Sep. 1, 1996),2 pages.
“Notice of Allowance”, U.S. Appl. No. 10/955,665, (Nov. 3, 2009),8 pages.
“Final Office Action”, U.S. Appl. No. 10/916,692, (Nov. 16, 2009),10 pages.
“Final Office Action”, U.S. Appl. No. 11/218,149, (Nov. 16, 2009),18 pages.
“Final Office Action”, U.S. Appl. No. 11/072,087, (Nov. 16, 2009),9 pages.
“Non-Final Office Action”, U.S. Appl. No. 11/036,910, (Nov. 13, 2009),9.
“Notice of Allowance”, U.S. Appl. No. 11/095,254, (Nov. 18, 2009),8 pages.
“Foreign Office Action”, Mexican Patent Application No. PA/a/2006/002493, (Sep. 14, 2009),3 pages.
“Notice of Allowance”, U.S. Appl. No. 10/942,528, (Dec. 3, 2009),8 pages.
“Notice of Allowance”, U.S. Appl. No. 11/056,500, (Dec. 2, 2009),17 pages.
Related Documents
Division of application No. US 10/857689 00, filed on 27-May-2004.
Examiners
Primary: Moazzami, Nasser G
Assistant: Louie, Oscar A

Supplemental Information (Source: DOCDB)
Inventors
STOTT NATHANIEL W [+6] [-6]
US
KELKAR AMOL S
US
O'CONNOR BRIAN G
US
ROSENBERG LEE B
US
CATORCINI ALESSANDRO
US
NARENDRAN ARUNGUNDRAM
US
SIKCHI PRAKASH
US
Assignees/Applicants
MICROSOFT CORP
US
Priority
US 876433 A  24-Jun-2004 [+1] [-1]
US 857689 A  27-May-2004
Classifications
International (2010.01): G06F 7/02; G06F 11/00; G06F 12/14; G06F 12/16; G06F 17/30; G08B 23/00; H04L 9/32 [+4] [-4]
International (2006.01): G06F 7/04; G06F 11/00; G06F 12/14; G06F 12/16; G06F 17/30; G08B 23/00; H04L 9/32 [+4] [-4]
European: G06F 21/00N3A
Also Published As
Preview up to the first 8 page images of this publication.
--- Page 1 ---
Page 1
--- Page 2 ---
Page 2
--- Page 3 ---
Page 3
--- Page 4 ---
Page 4
--- Page 5 ---
Page 5
--- Page 6 ---
Page 6
--- Page 7 ---
Page 7
--- Page 8 ---
Page 8
(Source: USPTO)
CROSS REFERENCE TO RELATED PATENT APPLICATION
This is a divisional of and priority is claimed to co-pending U.S. patent application having Ser. No. 10/857,689 and a filing date of May 27, 2004 for EXECUTING APPLICATIONS AT APPROPRIATE TRUST LEVELS of Stott, et al. This co-pending United States Patent Application is commonly assigned herewith and is hereby incorporated herein by reference for all that it discloses.
TECHNICAL FIELD
This invention relates to executing applications.
BACKGROUND
Executing applications deployed from remote sources can be dangerous. Applications from remote sources may contain malicious code like worms or viruses that can damage or misuse a user's computer or information.
To partially combat this problem, typical Internet browsers can execute an application published to a remote location (e.g., an Internet domain) with a trust level predetermined for that location. Applications executed at a high trust level are permitted to perform riskier operations than those executed at a low trust level. Trust levels used by these Internet browsers are typically set prior to running the application based on how trustworthy the remote location is deemed to be. To execute applications with these Internet browsers, however, a user typically must have access to the remote location, such as via the Internet.
If a user wants to execute an application published to a remote location for later use when he or she will not have remote access, the user can save the application onto his or her local machine. The user can then later execute the application when he or she does not have remote access. There is a significant danger in doing so, however. The application may not execute at an appropriate trust level when executed from the user's local machine. This is because applications loaded from a local machine typically execute with a higher trust that is assigned to the local machine.
Similarly, if a user wants to execute an application that is not published to—but does originate from—a remote location, the user can save the application onto his or her local machine. The user can then execute the application but it may execute at an inappropriate trust level. One common example of this is when applications are received via email or floppy disk. While the user can run these applications, to do so the user typically saves the application to his or her local machine, often implicitly granting the application a higher trust level than it deserves.
In these and other cases where an application is received from a remote source and saved locally, the trust level at which the application is executed can be too high or too low. This is because many computer systems assume a particular level of trust (usually too high) for applications cached or executed from a local source. This potentially endangers a user's computer and, importantly, personal or corporate information.
Assume, for example, that Joe emails Jane an application and Jane saves the application onto her local machine. By so doing Jane can execute the application from her local machine. When Jane executes the application from her local machine, however, her computer typically assumes a trust level based on the location from which the application was executed (locally), which is often inappropriate. If the application contains malicious code, when Jane executes the application from her local machine it may damage her computer, steal information, and the like.
Similarly, if Jane saves locally an application from a website and later executes it, the application is typically granted too high a trust level. If it is granted too high a trust level the application is executed at the higher, inappropriate trust level, thereby endangering her computer and its information.
Further, even if the application Jane runs is not given too high a trust level, but just a different trust level than that at which it will optimally execute, the application may perform inconsistently or otherwise operate poorly.
Thus, typical trust levels granted in executing applications locally that originate from remote sources are often too high or too low, either potentially endangering a user's computer or sacrificing consistent and/or robust operation of the application.
SUMMARY
This patent application describes systems and methods (“tools”) enabling execution of applications at appropriate trust levels. These tools can determine appropriate trust levels by comparing applications' permitted trust levels with their requested trust levels.
These tools can determine and embed requested trust levels into applications. The requested trust levels can permit or minimally permit operations capable of being performed by the applications.
To determine permitted trust levels, these tools can compare applications' execution locations with their published locations. The applications can then be executed at these permitted trust levels or at lower trust levels if the applications request lower trust levels. These tools can also disallow execution of applications that will not run safely and robustly, such as when an application requests a higher trust level than is permitted.
These tools also allow applications to be executed at appropriate trust levels when those applications are received from remote sources, such as through email or floppy disks. Regardless of from where applications are received, the tools can enable execution of these applications at appropriate trust levels.
Also, these tools can execute applications at a restricted trust level. Applications executed at this restricted trust level can be prohibited from performing operations capable of endangering a user's computer or information.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 illustrates an exemplary architecture having security tools.
FIG. 2 sets forth a flow diagram of an exemplary process for building requested trust levels.
FIG. 3 illustrates an exemplary table of trust levels.
FIG. 4 sets forth a flow diagram of an exemplary process for executing an application at an appropriate trust level.
FIG. 5 illustrates an exemplary table showing permitted trust levels.
FIG. 6 illustrates an exemplary table showing appropriate, permitted, and requested trust levels.
FIG. 7 sets forth a flow diagram of an exemplary process for executing or preparing for execution an application at a restricted trust level.
The same numbers are used throughout the disclosure and figures to reference like components and features.
DETAILED DESCRIPTION
Overview
This patent application describes systems and methods (“tools”) for secure execution of applications. Some of these tools can determine operations executable by an application that may damage a computer. Based on this determination or otherwise, these tools can build requested trust levels for applications.
Applications having a requested trust level can be sent from remote locations and received by tools located elsewhere, such as at a user's computer. The tools at the user's computer can determine whether or not to execute these received applications at their requested trust levels. In doing so, these tools can determine permitted trust levels for these applications as well as their requested trust levels. These tools can determine these permitted trust levels based on from where the applications are cached or executed and various information embedded into the application, for instance. In part by comparing the permitted trust levels with the requested trust levels, these tools can execute applications at an appropriate trust level, if one exists.
If, for instance, an application requests a higher trust level than the tools have determined to be permissible, the tools may not execute the application. Here, the tools potentially protect a user's computer from an application that may contain malicious code. Also for instance, if an application requests a trust level identical to that which the tools have determined permissible, the tools can execute the application at the requested trust level. Further, if an application requests a lower trust level than that determined to be permitted, the tools can execute the application at the lower, requested trust level. By so doing, the tools can execute applications at an appropriate trust level.
In cases where a very low trust level is appropriate for an application, the tools can execute the application at a restricted trust level. This trust level enables safe execution of applications that may not be trustworthy.
Exemplary Architecture
Referring to FIG. 1, an exemplary architecture 100 is shown having a computing device 102. The computing device 102 is shown capable of communicating with a remote location 104 through a communication network 106 or physical media 108. The remote location 104 can comprise locations at which accessible information is stored, such as computing devices or an Internet domain. The communication network 106 comprises devices or manners by which the computer 102 can send information to, or access information at, the remote location 104. The communication network 106 can comprise, for instance, a global Internet or an intranet. The computing device 102 can, for instance, send applications to, and receive applications from, the remote location 104 through email via the communication network 106. Applications can also be sent and received through physical media 108, such as floppy disks.
The computing device 102 is shown having access to or comprising a processor 110, an operating system 112, a memory 114, and security tools 116. The processor 110 and the operating system 112 are well known and so are not discussed here. The memory 114 can comprise volatile memory and/or non-volatile memory. The memory 114 is shown with a cache 118 and a local memory 120. To aid in discussing various embodiments of the tools 116, the tools 116 are shown having a trust-level builder 122 and a runtime 124. Also to aid in discussing various embodiments, an exemplary application 126 is shown. This application 126 can comprise any compilation of executable code, such as a form template or a word-processing document having a macro. This application 126 can originate, be executed from, and/or be cached from various locations, such as the local memory 120 or the remote location 104.
This architecture 100 and its components are shown to aid in discussing, but are not intended to limit the applicability of, the security tools 116. Other well-known computing systems, environments, and/or configurations that may be suitable for use with the tools 116 comprise, for example, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The tools 116 may be described in the general context of, or implemented with, computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures and etc. that perform particular tasks or implement particular abstract data types. The functionality of the program modules may be combined or distributed in various embodiments, including those described below.
These computer-executable instructions can comprise computer-readable media. The computing device 102 can, for instance, comprise computer-readable media, which can be accessed by the tools 116. Computer-readable media can comprise, for example, computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information. This stored information can comprise computer-readable instructions, data structures, program modules, and other data. Computer storage media comprise, by way of example, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVDs) or other optical storage, magnetic media storage devices, or any other medium that can be used to store the desired information and that can be accessed by the tools 116. Communication media typically embodies computer-readable instructions, data structures, program modules, or other data in a modulated data signal (e.g., a carrier wave or other transport mechanism) and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. Communication media can comprise, for example, wired media, such as a wired network or direct-wired connection, and wireless media, such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above can also be included within the scope of computer-readable media.
Building Requested Trust Levels
Referring to FIG. 2, an exemplary process 200 for building requested trust levels is shown. The process 200 is illustrated as a series of blocks representing individual operations or acts performed by the tools 116 and/or the builder 122. This and other processes described herein may be implemented in any suitable hardware, software, firmware, or combination thereof. In the case of software and firmware, these processes represent sets of operations implemented as computer-executable instructions.
The tools 116, through the builder 122, can build requested trust levels for applications and, through the runtime 124, execute these or other applications at an appropriate trust level. The applications, such as the application 126, executed by the runtime 124 may be those having requested trust levels built by the builder 122 or may be received from the remote source 104. Applications received from the remote source 104 may have requested trust levels built by some other builder 122, and so may or may not be trustworthy. For purposes of this description of the process 200, the builder 122 prepares the application 126 for later use, such as by another user at a remote location, by building a requested trust level for that application 126.
Determining Potentially Dangerous Operations Performable By an Application
At block 202, potentially dangerous operations performable by an application are determined. In an ongoing embodiment, the builder 122 analyzes the application 126 to determine what types of operations it can perform that can potentially harm the computing device 102 or compromise its information. The builder 122 can analyze the application 126 by scanning its constituent parts to find links, data sources, web services, and other pieces of code that can indicate a potential compromise to security.
The builder 122 can, for instance, find universal resource locators (URLs) indicating that the application 126 may attempt to communicate with remote locations, such as the remote location 104. How the application 126 intends to communicate can also be ascertained by analyzing code associated with a URL. This associated code can, for example, look information up from or send information to data sources like a database or an Internet site. Similarly, the builder 122 can find code that accesses personal information of the user (such as information stored in the memory 114) and sends it out, such as the user's credit card information sent to a bank website. The builder 122 can also determine that no code of the application 126 can compromise security.
At block 204, a minimum trust level is determined. In the ongoing embodiment, the builder 122 determines a minimum trust level at which the application 126 is permitted to perform the potentially dangerous operations determined at the block 202.
Referring to FIG. 3, an exemplary table 300 of trust levels is shown. In this embodiment, these trust levels comprise three levels: full trust level 302; location-dependent trust level 304; and restricted trust level 306. Full trust level 302 permits any operation by the application 126. Location-dependent trust level 304 permits operations not requiring full trust 302 by requiring at least one operation that can potentially compromise security. Restricted trust 306 does not permit any potentially security-compromising operations.
If, for example, the builder 122 determines that the application 126 can access, add, alter, or delete information from the memory 114, the builder 122 determines the minimum trust level to be the full trust level 302. If the builder 122 determines that the application 126 can access information from a website, the builder 122 determines the minimum trust level to be the location-dependent trust level 304. If the builder 122 determines that it cannot access any information other than the information it creates, the builder determines the minimum trust level to be the restricted trust level 306.
Setting a Requested Trust Level
At block 206, a requested trust level is set. This requested trust level can be set by a user, such as by the user manually choosing the trust level. In the ongoing embodiment, the requested trust level is the minimum trust level determined by the builder 122 at the block 204.
At block 208, the requested trust level can be embedded into an application. In the ongoing embodiment, the builder 122 embeds the requested trust level into the application 126. The builder 122 can do so by adding code into a configuration setting or another appropriate location of the application 126. If the application 126 comprises eXtensible Markup Language (XML), the builder 122 can add the XML attributes set forth for the trust levels in the table 300 of FIG. 3.
Referring to FIG. 3, the builder 122 adds the attributes shown in the table 300 to the application 126, based on the requested trust level. The builder 122 can add, for instance, a requested full trust level 302 to the application with the full-trust attribute 308. Here the attribute 308 is: “requireFullTrust=yes”. For a requested location-dependent trust level 304, the builder 122 can add the location-dependent attribute 310. Here the attribute 310 is: “trustLevel=Domain”. In some embodiments, the attribute 310 can also be “trustLevel=”, which can be assumed by the runtime 124 to equate to “trustLevel=Domain” but with “Domain” being a different location than an execution location, discussed below. For a requested restricted trust level 306, the builder 122 can add the restricted attribute 312. Here the attribute 312 is: “trustLevel=Restricted.”
At block 210, an application is published to a location. In the ongoing embodiment, if the trust level requested is the location-dependent trust level 304, the builder 122 embeds this published location (e.g., a dependent location URL) information into the application 126. The location-dependent trust level 304 can comprise varying levels of trust, depending on a published location of the application 126 and other factors. These varying levels of trust are described in greater detail as part of the discussion relating to the runtime 124, below.
A published location can be a location from which the application 126 is intended to be executed or cached. For example, if the builder 122 is building a requested trust level for an application that is to be available at a website, the published location for the application can be a URL indicating the domain from which the application can be accessed, such as that of the remote location 104. Similarly, if the builder 122 is building a requested trust level for an application that is to be accessed from a local source (such as the local memory 120), the published location for the application can be a filing system address from which the application can be accessed locally. Published locations can be used by the runtime 122 to aid it in determining appropriate trust levels at which to execute applications.
By building requested trust levels for applications, the builder 122 enhances security for computer systems. It also provides for a consistent user experience. Applications having requested trust levels can be executed at a consistent trust level regardless of where the application is executed from. By so doing, a user's experience can be consistent without regard to what computer or device from which the user executes the application. Also, applications having requested trust levels are more likely to behave robustly. These applications, because they are executed at a consistent trust level, are not subject to fluctuations due to being executed at a trust level at which they were not designed.
Executing an Application at an Appropriate Trust Level
Referring to FIG. 4, an exemplary process 400 for executing an application at an appropriate trust level is shown. The process 400 is illustrated as a series of blocks representing individual operations or acts performed by the tools 116 and/or the runtime 124. This process 400 can be implemented following the process 200 or can be implemented separately as a stand-alone process.
In the ongoing embodiment the application 126 is used for purposes of discussion. The application 126 can be received, accessed, executed, or cached from a remote source or locally, such as the remote location 104 and the local memory 120, respectively. The application 126 has a requested trust level, though that requested trust level may or may not have been built by the builder 122 as described in the process 200 above.
In some embodiments the process 400 begins when a user attempts to execute the application 126, such as by double-clicking on the application 126. When the user does so, the tools 116 can cache the application 126 to the cache 118 (shown) from an accessible location of the application 126.
Determining a Requested Trust Level
At block 402, a requested trust level for an application is determined. In the ongoing embodiment, the runtime 124 extracts from the application 126 an embedded requested trust level. The runtime 124 can determine whether or not the attributes 308, 310, or 312 are embedded in the application 126. Thus, if the runtime 124 determines that the attribute 308 of “requireFullTrust=yes” is embedded in the application 126, it determines that the application 126 requests the full trust level 302. If the runtime 124 determines that the attribute 310 of “trustLevel=Domain” is embedded in the application 126, it determines that the application 126 requests the location-dependent trust level 304. Similarly, if it determines that the attribute 312 of “trustLevel=Restricted” is embedded, the application 126 requests the restricted trust level 306.
Because the application 126 can contain malicious code, the runtime 124 does not trust the requested trust level of the application 126. For example, criminal persons might write applications having various requested trust levels using a copy of the builder 122, for instance. The requested trust level of the application 126, however, can be used by the runtime 124 to help determine an appropriate trust level for executing the application 126, if one exists.
Determining a Permitted Trust Level
At block 404, a permitted trust level for an application is determined. This permitted trust level can be independent of how an application is transmitted. Whether an application is received via email, or a floppy disk, or through other manners, the permitted trust level can be the same. Likewise, from where an application originates, such as from a website or another computer user, does not determine what trust level is permitted. Rather, a permitted trust level for an application can be determined based on from what location it is cached or executable and its published location.
In the ongoing embodiment, the runtime 124 determines the permitted trust level for the application 126. It can do so based on from what location the application 126 is executable or cached, a published location extracted from the application 126, and/or having a signed certificate. The runtime 124 can use the published location to aid in determining a permitted trust level, but the runtime 124 does not need to trust the published location or any other information extracted from the application 126, as will be apparent below.
Referring to FIG. 5, an exemplary table 500 setting forth exemplary permitted trust levels is shown. The trust levels shown are set forth as examples; other permitted levels can be used or defined. The exemplary trust levels comprise the full trust level 302, the location-dependent trust level 304, and the restricted trust level 306. The location-dependent trust level 304 can be further delineated, in this embodiment into three sublevels: a local machine trust level 502; an intranet trust level 504; and an Internet trust level 506. The local machine trust level 502 is a higher trust level than the intranet trust level 504, which is higher than the Internet trust level 506. Various potential execution locations for the application 126 are set forth at numeral 508. Whether or not the execution locations (“ELs”) 508 for the application 126 matches the published location (here shown with the attribute “LocationID=”) is shown at a column 510 of FIG. 5.
At block 404a, the location from which an application is executable or cached is determined. In the ongoing embodiment, the runtime 124 determines the execution location 508 for the application 126.
At block 404b, a published location for an application is determined. In the ongoing embodiment, the runtime 124 determines a published location for the application 126 by extracting this information from the application 126, if the application 126 contains a published location. Here the published location can be indicated with an XML attribute, such as “LocationID=Domain”, where “Domain” is a URL.
At block 404c, whether or not an application is installed or highly trusted is determined. In the ongoing embodiment, the runtime 124 determines whether or not the application 126 is installed or highly trusted. If it is, the runtime 124 follows the “Yes” path and permits local machine trust 502 or full trust 302, at block 404d. If not, it follows the “No” path to block 404e.
At block 404d, if the runtime 124 determines that the application 126 is installed and requests full trust, such as by extracting “requireFullTrust=yes”, shown in table 500 at 512, the runtime 124 permits the application 126 to be executed at full trust 302, shown in table 500 at 514. If the runtime 124 determines that the application 126 is installed but does not request full trust, such as by extracting “requireFullTrust=no”, shown in table 500 at 516, the runtime 124 permits (but not requires) the application 126 to be executed at local machine trust 502, shown at 518.
Also at block 404d, if the runtime 126 has determined that the application 126 is highly trusted, such as by being signed with a certificate (shown at numeral 520), the runtime 124 permits full trust 302, shown at 522.
At block 404e, an execution location (“EL”) and published location are compared. If the execution location and the published location match, the runtime 124 proceeds along the “Yes” path to block 404f. If not, it proceeds along the “No” path to block 404g.
At block 404f, location-dependent trust level 304 is permitted. In the ongoing embodiment, the runtime 124 permits either the machine level trust 502, the intranet level trust 504, or the Internet level trust 506, based on either the published location or the execution location. As set forth in FIG. 5, these location-dependent trust levels 502, 504, and 506 are permitted.
Assume, for example, that a user receives an email with the application 126 attached. Also assume that the user saves the application 126 to his or her local memory 120. At some later point, if the user attempts to execute the application 126, the runtime 124 will follow the process 400 to determine an appropriate trust level at which to execute the application 126, if one exists. In this example, assume that the runtime 124 determines, at block 402, that the application 126 requests location-dependent trust level 304 for a website on the Internet (e.g., the Internet level trust 506). The runtime 124 does not need the requested trust level to determine a permitted trust level, as the requested trust level is not trusted.
At block 404a, the runtime 124 determines that the execution location for the attached application 126 is the local machine memory 120. At block 404b, assume that the runtime 124 extracts the published, remote location for the website from the attached application 126. At block 404e, the runtime 124 determines that the execution location and the published location are not the same. Because of this, the runtime 124 permits only restricted trust level 306 (shown at 528). This ensures that the application 126 is not given too high a trust. In this example, the attached application 126 can contain malicious code; the attached application 126 could be built to request a trust based on a website and have a published location matching that website without either these being trustworthy. Because the application 126 did not necessarily originate at the website that it claims to have originated from, it is not trusted. Thus, the runtime 124 will not permit location-dependent trust 304 or full trust 302 (assuming the application 126 isn't highly trusted for some other reason).
In some cases, though, the runtime 126 permits location-dependent trust level 304. If an application is cached from the same location as published for the application, for instance, the runtime 126 will consider the application more trustworthy. If, for example, a user attempts to execute from a website the application 126, the runtime 124 can determine that the execution location of the application 126 is the website. If the application 126 also has a published location of this website (extracted by the runtime 124), which matches the execution location, the runtime 124 permits the application 126 to be executed at the Internet trust level 506. This is permitted because a trust level associated with that website is logical to permit; as the application 126 has been determined to actually be from that website (it has an execution location matching a published location of that website). That website can have a particular trust level associated with it that is set by an administrator or based on various factors analyzed using an algorithm, or through other well-known manners.
Determining and Executing at an Appropriate Trust Level
At block 406, an appropriate trust level is determined. The appropriate trust level can be determined based on comparing a requested trust level for an application with a permitted trust level. If an application has a requested trust level less than that of a permitted trust level, the runtime 124 can set the appropriate trust level as that of the requested trust level. If an application has a permitted trust level and requested trust level that are equal, the runtime 124 can set the appropriate trust level as that of the permitted trust level. If an application has a requested trust level higher than that of its permitted trust level, the runtime 124 can fail to set any trust level as appropriate. By failing to permit execution of an application at a lower trust level that it requests, the runtime 124 can limit inconsistent or non-robust operation of the application.
At block 408, an application is executed at an appropriate trust level, if one exists.
In the ongoing embodiment, the runtime 124 determines appropriate trust levels, which can comprise: the full trust level 302; the location-dependent trust level 304; or the restricted trust level 306. If no appropriate trust level exists, the runtime 124 will not execute the application 126 at block 408.
Referring to FIG. 6, an exemplary table 600 setting forth exemplary appropriate trust levels 602 are shown. These appropriate trust levels 602 shown are set forth as examples; other appropriate levels can be used or defined. The exemplary appropriate trust levels 602 at which an application can be executed comprise the full trust level 302, the location-dependent trust level 304, and the restricted trust level 306. The location-dependent trust level 304 is shown with further delineation, here the local machine trust level 502, the intranet trust level 504, and the Internet trust level 506. The table 600 shows one way in which the runtime 124 can determine appropriate trust levels 602 based on permitted trust levels shown in column 604 and requested trust levels of full trust, location-dependent trust, and restricted trust, shown in columns 606, 608, and 610, respectively.
If the requested trust level of the application 126 is the restricted trust level 306, the runtime executes the application 126 at that level. If the permitted trust level is higher than the restricted trust level 306, the application 126 likely can be executed and operate fully at the restricted trust level 306. As shown in the table 600, if the permitted trust level shown in column 604 is the local machine trust level 502, for instance, the runtime executes the application 126 at the restricted trust level 306 if that is requested (shown at 612). Various ways in which the runtime 124 can execute applications at the restricted trust level 306 and embodiments of this level are set forth in greater detail below in a section entitled, “Exemplary Restricted Trust Level.”
If the requested trust level is higher than the permitted trust level, the runtime 124 may not execute the application 126. Executing an application at a lower trust level that it requests can sacrifice robust and consistent operation of the application. This also can diminish a user's experience in using the application. Executing the application at above the permitted level can be dangerous, and so is not done. As shown in the table 600, if the permitted trust level shown in column 604 is restricted but the requested trust level shown at column 608 is location-dependent, the runtime 124 can fail to execute the application 126 (shown at numeral 614).
If the requested trust level is equal to the permitted trust level, the runtime 124 executes the application at the permitted/requested trust level. Examples of this are shown at numerals 616, 618, and 620.
Thus, the runtime 124 executes applications at appropriate trust levels. Applications may not be executed at higher trust levels than those at which they can be trusted. They can be executed at lower trust levels if they can be robustly and fully operated at these lower trust levels, based on a lower, requested trust level. And they can be executed at a permitted trust level if they can be trusted at this level and need to be executed at this level for full operation.
Exemplary Restricted Trust Level
Referring to FIG. 7, an exemplary process 700 for executing an application at an exemplary restricted trust level is shown. This restricted trust level permits execution of applications while prohibiting those applications from performing operations capable of endanger a user's computer or information. The process 700 is illustrated as a series of blocks representing individual operations or acts performed by the tools 116 and/or the runtime 124. This process 700 can be implemented as part of the process 400 or can be implemented separately as a stand-alone process. The restricted trust level set forth in this process is one implementation of the restricted trust level 306 described above.
At block 702, potentially damaging operations in an application are determined. In an ongoing embodiment, the runtime 124 scans the application 126 for custom code and/or any feature that requires connections to any data source outside of the application's 126 boundaries. The runtime 124 can do so by finding all URLs (e.g., links and website domains) in the application 126. These URLs can indicate that the application 126 is capable of accessing information or locations outside of the application 126 itself.
At block 704, potentially damaging operations are neutralized. In the ongoing embodiment, the runtime 124 neutralizes URLs found in the application 126, so that no data source outside the application boundaries can be contacted.
At block 706, rights potentially exercised for an application are removed. In the ongoing embodiment, the runtime 124 assigns a random execution location and/or published location to the application 126. By so doing, a trust level above restricted that potentially could be allowed for the application 126 due to its execution location or published location is removed.
At block 708, all custom code of an application is made safe. In the ongoing embodiment, the runtime 124 forbids and/or makes inaccessible all data connections (except email submittal), ActiveX controls, custom code written using managed code, roles, workflow, and the like in the application 126. Script is allowed only if it interacts exclusively with the data within the application.
At block 710, outside calls attempted during execution are intercepted and/or prevented. In the ongoing embodiment, the runtime 124 executes the application 126 but intercept and prevents any outside calls by the application 126 (such as to a URL).
If, for example, the application 126 is a form template but is to be executed at this restricted trust level, the application 126 can create information but cannot access any information other than the information that it creates. In the case of a form template, the runtime 124 executes the template and permits it to create an electronic document, receive data keyed into the electronic document from a user, and the like. The runtime 124 does not permit, however, the template from accessing or sending information outside of the application's boundaries, such as from or to a user's memory (e.g., the memory 114), an intranet site, or an Internet site.
At block 712, if the application 126 is rendering a view the runtime 124 assigns a fictitious URL to the view. This fictitious URL can have a very low level of permission. The runtime 124, following this low level, can prevent calls to external resources that the application 126's view is attempting to reach. In one embodiment, the view comprises Hyper Text Machine Language (HTML). HTML is a language that is capable of referencing URLs in many different ways, such as to script, styles, pictures, and frames. In part for this reason, the runtime 124 can perform additional operations to further secure the view, set forth at blocks 714 and 716.
At block 714, the runtime 124 traps outside calls, such as those attempted by the view that are not prohibited at block 712. In one embodiment, the runtime 124 traps outside calls by mapping all URLs through one or more particular code paths. Thus, these calls must use these code paths. The runtime 124 can, however, block these code paths, thereby prohibiting these outside calls from being made using these URLs.
In some cases, however, the application's 126 view is capable of making an outside call through a URL with a redefined interpretation.
At block 716, the runtime 124 finds and neutralizes URLs with a redefined interpretation. When URLs are interpreted in new ways, it can be difficult to prevent outside calls that use them. To aid in preventing these outside calls, the runtime 124 can scan a rendered view as it is updated to find these URLs. As the view is updated, the runtime 124 determines whether or not URLs are being interpreted in a new way. If so, the runtime 124 neutralizes these URLs, such as by deleting them from the view.
In one embodiment, the view comprises HTML. In these cases, a URL can be interpreted in a new way with a “base tag”. The runtime 124 can delete base tags that redefine how a URL is interpreted from the HTML code of the view.
Conclusion
The above-described tool enables execution of applications at appropriate trust levels. Although the invention has been described in language specific to structural features and/or methodological acts, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the claimed invention.
(Source: USPTO)
The invention claimed is:
1. A computer implemented method comprising: determining potentially dangerous operations of an application by finding one or more universal resource locators (URLs) in the application and analyzing code associated with each URL effective to determine whether the code is configured to communicate with one or more remote locations; and preventing or intercepting the potentially dangerous operations of the application by embedding a requested trust level into the application, the requested trust level comprising at least one of: a full trust level that requests permission to communicate with any remote location; or a location-dependent trust level that requests permission to communicate with at least one of the one or more remote locations.
2. The method of claim 1, wherein the act of preventing or intercepting comprises preventing any information from being sent outside of, or received by, the application.
3. The method of claim 2, wherein the application comprises arbitrary HTML.
4. The method of claim 1, further comprising assigning a fictitious universal resource locator (URL) to a view being rendered by the application.
5. The method of claim 4, wherein the fictitious URL is associated with a low level of permission.
6. The method of claim 1, further comprising trapping outside calls attempted by a view being rendered by the application.
7. The method of claim 1, further comprising finding and neutralizing a universal resource locator (URL) having a redefined interpretation that is in a view being rendered by the application.
8. The method of claim 7, wherein the view comprises Hyper Text Markup Language (HTML) and the act of finding and neutralizing the URL comprising finding and neutralizing a base tag.
9. The method of claim 1, wherein the act of preventing or intercepting comprises preventing or intercepting all outside calls made by the application, and wherein the outside calls comprise a call made by the application to a universal resource locator outside the application's boundaries.
10. The method of claim 1, further comprising neutralizing the potentially dangerous operations.
11. The method of claim 1, further comprising removing rights potentially exercisable by the application.
12. The method of claim 11, wherein the act of removing rights comprises assigning a random execution location or published location to the application.
13. The method of claim 1, further comprising making safe custom code of the application.
14. The method of claim 13, wherein the act of making safe comprises forbidding or making inaccessible data connections or custom controls.
15. One or more computer storage media having computer-executable instructions for performing the method recited in claim 1.
16. A computer implemented method comprising: determining potentially dangerous operations in an application, the determining including scanning the application for universal resource locators and code that is configured to communicate with one or more remote locations associated with the universal resource locators; and preventing or intercepting the potentially dangerous operations by embedding a requested trust level into the application, the requested trust level comprising at least one of: a full trust level that requests permission to communicate with any remote location; or a location dependent trust level that requests permission to communicate with at least one of the one or more remote locations.
17. The method of claim 16, further comprising removing rights potentially exercisable by the application.
18. The method of claim 17, wherein the act of removing rights comprises assigning a random execution location or published location to the application.
19. The method of claim 16, further comprising making safe custom code of the application.
20. The method of claim 19, wherein the act of making safe comprises forbidding or making inaccessible data connections or custom controls.
21. The method of claim 16, wherein the act of preventing or intercepting comprises preventing or intercepting all outside calls made by the application.
22. One or more computer storage media having computer-executable instructions for performing the method recited in claim 16.
23. A computer implemented method comprising: determining if an application is configured to access data outside of the applications boundaries based on one or more URL's; responsive to determining that the application is configured to access data outside of the application's boundaries based on said one or more URL's, embedding a location dependent trust level into the application that requests permission to access data outside of the application's boundaries; and responsive to determining that the application is not configured to access data outside of the application's boundaries based on said one or more URL's, embedding a restricted trust level into the application that does not request permission to access data outside of the application's boundaries.
24. The method of claim 23, further comprising determining the operations and neutralizing the operations.
25. The method of claim 23, further comprising removing rights potentially exercisable by the application.
26. One or more computer storage media having computer-executable instructions for performing the method recited in claim 23.
(Source: USPTO)