Abstract:
A method and system for verifying content of a resource. A first computer creates, in a markup language document, a markup element including a first characteristic of the content of the resource stored at a second computer coupled to the first computer. The first characteristic is extracted from the markup element in the markup language document. The resource is retrieved from the second computer according to a resource indicator that references the resource. A second characteristic of the content of the retrieved resource is generated by computing a hash of the content of the retrieved resource according to a particular hash algorithm. The second characteristic is ascertained to be identical to the first characteristic. The resource indicator and the first characteristic are included in the markup element. The created markup element includes a first attribute-value pair and a second attribute-value pair within distinct non-overlapping portions of the markup element.

Description:
[0001]    This application is a continuation application claiming priority to Ser. No. 14/020,946, filed Sep. 9, 2013, which is a continuation of Ser. No. 11/586,883, filed Oct. 26, 2006, U.S. Pat. No. 8,549,390, issued Oct. 1, 2013. 
     
    
     FIELD OF THE INVENTION 
       [0002]    The invention relates to a method of verifying the resource content of a markup language document and a method for authoring a markup language document. 
       BACKGROUND OF THE INVENTION 
       [0003]    A user agent that conforms to a markup language is able to process documents written in that markup language. For example, a web browser that conforms to Hyper Text Markup Language (HTML) is able to process HTML documents. The document may include a markup element that references a resource. A non-exhaustive list of examples for the resource includes a picture, an audio file, a video file, an executable file, and another document written in the markup language. 
         [0004]    The user agent will retrieve the resource from its location as specified in the markup element via a communication system. The content of the resource retrieved by the user agent may differ from what the author of the document intended. For example, due to noise in the communication system or due to other technical problems, the resource retrieved by the user agent may have errors. In another example, the resource may have been replaced, either accidentally or maliciously, by another resource. 
         [0005]    For example, a webpage authored by a person includes a picture of a flower that is stored on a remote server. When the author of the webpage included in it a reference to the picture on the remote server, the referenced picture was the picture of the flower. Sometime after the webpage was authored, the picture of the flower was replaced at the remote server with a picture of a donkey. As long as the picture of the donkey has the same filename as the picture of the flower, when a user accesses the webpage, the picture of the donkey will be displayed instead of the picture of the flower. 
         [0006]    In another example, a main website has large files available for download, and a mirror website stores copies of these large files. When a user at the main website clicks on a hyperlink to download one of the large files, the user&#39;s browser is redirected to download the large file from the mirror website. If the large file at the mirror website has a virus how is the user to know that the large file downloaded from the mirror website is a true copy of the large file at the main website? Currently, the main website hosts a hash of the large file. The user can download the hash from the main website, compute a hash of the large file downloaded from the mirror website, and compare the two. But the onus is on the user to do this. If the computed hash matches the hash downloaded from the main website, the user knows that the large file downloaded from the mirror website is identical to that on the main website. 
       SUMMARY OF THE INVENTION 
       [0007]    According to an embodiment of the invention there is provided a method for verifying resource content which includes extracting a characteristic of the content of a resource from a markup element of a markup language document, where the resource is referenced by the markup element with a resource indicator, retrieving a resource according to the resource indicator, and comparing a characteristic of the content of the retrieved resource to the extracted characteristic. 
         [0008]    According to another embodiment of the invention there is provided a method for authoring a markup language document, the method comprising the step of including in a markup element of the markup language document a characteristic of the content of a resource that is referenced by the markup element with a resource indicator. 
         [0009]    According to yet another embodiment of the invention there is provided a computer program product comprising a computer readable storage medium having computer readable program code stored therein for authoring a markup language document wherein the computer readable program code when executed on a computer causes the computer to include in a markup element of the markup language document a characteristic of the content of a resource that is referenced by the markup element with a resource Indicator. 
         [0010]    According to still yet another embodiment of the invention there is provided a computer program product comprising a computer readable storage medium having computer readable program code stored therein, wherein the computer readable program code when executed on a computer causes the computer to extract a characteristic of the content of a resource from a markup element of a markup language document, where the resource is referenced by the markup element with a resource indicator, retrieving a resource according to the resource indicator, and comparing a characteristic of the content of the retrieved resource to the extracted characteristic. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0011]    Embodiments of the invention are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like reference numerals indicate corresponding, analogous or similar elements, and in which: 
           [0012]      FIG. 1  is a flowchart of an exemplary method for authoring a markup language document; 
           [0013]      FIG. 2  is a block diagram of an exemplary system of computers; 
           [0014]      FIG. 3  is a flowchart of an exemplary method for verifying the content of a resource referenced by a markup element in a markup language document; and 
           [0015]      FIG. 4  is a block diagram of an exemplary computing apparatus. 
       
    
    
       [0016]    It will be appreciated that for simplicity and clarity of illustration, elements shown in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. 
       DETAILED DESCRIPTION 
       [0017]    In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding, of embodiments of the invention. However it will be understood by those of ordinary skill in the art that the embodiments of the invention may be practiced without these specific details. In other instances, well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the embodiments of the invention. 
         [0018]    An authoring tool that generates documents in a markup language creates markup elements in the documents. If a markup element references a resource, the tool is able to include a characteristic of the reference in the markup element. The characteristic, can subsequently be used to verify that the content of the resource, when retrieved by a user agent, is identical to the content of the resource that the author had access to at the time the characteristic was generated. The authoring tool may generate the characteristic itself, or may obtain the characteristic from another utility that generates the characteristic. 
         [0019]    Alternatively, an author may create a document in a markup language without the assistance of an authoring tool. The author is able to manually program a markup element of the document to include a characteristic of the reference that is referenced by the markup element. 
         [0020]    If a markup element that references a resource includes such a characteristic of the resource, the user agent processing the markup element uses the characteristic to verify the content of the retrieved resource. If the verification fails, the user agent has determined that the content of the retrieved resource is not identical to the content of the resource which the author of the document used to create the characteristic that is included in the markup element. 
         [0021]    The characteristic may be included in the markup element as an attribute or in any other suitable form. 
         [0022]    In one embodiment, the markup element also includes an identification of the method used to generate the characteristic. For example, the characteristic is the hash of the content of the resource according to a particular hashing algorithm, and the particular hashing algorithm is identified in the markup element. 
         [0023]    In another embodiment, the method used to generate the characteristic, is identified elsewhere in the markup language document. 
         [0024]    In yet another embodiment, the method used to generate the characteristic is predefined and is not identified at all in the markup language document. 
         [0025]    Embodiments of the invention relate to computer markup languages in general and to verification of content of resources referenced by markup elements of markup language documents in particular. 
         [0026]    A non-exhaustive list of examples for markup languages includes 
         [0027]    a) HTML (Hyper Text Markup Language) 4.01 published Dec. 24, 1999 as a W3C (World Wide Web Consortium) recommendation; 
         [0028]    b) ISO/IEC 15445:2000 (“ISO HTML”) published May 15, 2000; 
         [0029]    c) XHTML (Extensible HTML) 1.0 published Jan. 26, 2000 as a W3C recommendation, later revised and republished Aug. 1, 2002; 
         [0030]    d) SGML (Standard Generalized Markup Language) that is an ISO standard 8879:1986 “information processing—Text and office systems—Standard Generalized Markup Language”; 
         [0031]    e) XML (Extensible Markup Language) 1.0 defined by W3C in 1998 and republished Feb. 4, 2004; 
         [0032]    f) XML 1.1 published Feb. 4, 2004 by the W3C; 
         [0033]    g) RDF (Resource Description Framework) published in 1999 by the W3C and again in 2004; 
         [0034]    h) RSS (Rich Site Summary) versions 0.90, 0.91, 0.92, 0.93, 0.94. 1.0, 1.1 and 2.01, published by the RSS-DEV working group and/or by other organizations; 
         [0035]    i) Atom 1.0 published July 2005 and adopted by IETF (Internet Engineering Task Force) Atompub Working Group as a “Proposed Standard”; 
         [0036]    j) WML (Wireless Markup Language) 1.1 published by the W3C; and 
         [0037]    k) any other suitable markup languages. 
         [0038]    Reference is made to  FIG. 1 , which is a flowchart of an exemplary method for authoring a markup language document. The method may be implemented by a markup language authoring tool. 
         [0039]    A user of the tool may indicate that a particular resource is to be included in the markup language document. The tool may therefore create a markup element in the markup language document, where the markup element references the resource with a resource indicator. 
         [0040]    In one example, the user indicates that a webpage is to include the picture lily.gif. The tool will therefore create a markup element in the HTML document representing the webpage as follows:
   &lt;img src=“http://plants.com/flowers/lily.gif”&gt;
 
where the resource indicator http://plants.com/flowers/lily.gif indicates the location and access method for retrieving the picture.
   
 
         [0042]    In another example, the user indicates that a webpage is to include a hyperlink labeled “download” to a file myprogram.exe. The tool will therefore create a markup element, in the HTML document representing the webpage as follows:
   &lt;a href=“http://filemirror.com/myprogram.exe”&gt;download&lt;/a&gt;
 
where the resource indicator http://filemirror.com/myprogram.exe indicates the location and access method for downloading the file.
   
 
         [0044]    At step  102 , the tool generates or otherwise obtains a characteristic of the content of the resource referenced by the markup element. 
         [0045]    For example, the characteristic may be a hash of the content of the resource according to a particular hash algorithm. 
         [0046]    At step  104 , the tool includes the characteristic in the markup element that references the resource. The characteristic may be included in the markup element as an attribute or in any other suitable form. The attribute defined for the characteristic, if any, is an optional attribute and a user agent conforming to the markup language will still be able to process markup elements that omit this optional attribute. 
         [0047]    The markup element in the flower picture example is therefore as follows: 
         [0000]                                            &lt;img src=“http://plants.com/flowers/lily.gif”             hash= “md5:bbd5411b3558326cbce0306fcae32efe”&gt;                        
where hash is the name of the attribute, md5 identifies the hash algorithm used to generate the characteristic, and the 128-bit value following the colon is the characteristic generated by applying md5 to the picture lily.gif.
 
         [0048]    The markup element in the mirror website example is therefore as follows: 
         [0000]                                &lt;a href=“http://filemirror.com/myprogram.exe”         hash= “md5:ccd5411b3558326cbce0306fcae32e26”&gt; download &lt;/a&gt;                    
where the 128-bit value following the colon is the characteristic generated by applying md5 to the file myprogram.exe.
 
         [0049]    At step  106 , the tool includes in the markup element an identification of the method used to generate the characteristic. For example, the characteristic is the hash of the content of the resource according to a particular hashing algorithm, and the particular hashing algorithm is identified in the markup element. Alternatively, the method used to generate the characteristic is identified elsewhere in the markup language document, or the method used to generate the characteristic is predefined and is not identified at all in the markup language document. 
         [0050]    Reference is made to  FIG. 2 , which is a block diagram of an exemplary system of computers. A user computer  200  has installed thereon a user agent  202  conforming to one or more markup languages. A non-exhaustive list of examples of user agents includes web browsers, content aggregators, proxy servers and search engines. 
         [0051]    User computer  200  stores a markup language document  204  that includes a markup element  206 . Markup element  206  references a resource with a resource indicator  208 . Markup element  206  also includes a characteristic  210  of the resource. Markup language document  204  may have been generated by an authoring tool or by a human. 
         [0052]    Another computer  212  stores a resource  214 . Resource identifier  208  identifies resource  214  on computer  212 . Computer  212  and user computer  200  are coupled via a communication infrastructure  216 . Communication infrastructure  216  may include any combination of private and public networks, and may optionally include parts of the Internet. 
         [0053]    Reference is made additionally to  FIG. 3 , which is a flowchart of an exemplary method for verifying the content of a resource referenced by a markup element in a markup language document. The method may be implemented by a user agent conforming to the markup language such as user agent  202 . 
         [0054]    At step  302 , user agent  202  extracts characteristic  210  from markup element  206 . 
         [0055]    At step  304 , user agent  202  retrieves resource  214  according to resource identifier  208 —that is, from commuter  212 —thus storing a retrieved resource  218  at user computer  200 . At step  306 , user agent  202  generates or otherwise obtains a characteristic  220  of the content of retrieved resource  218 . For example, user agent  202  may compute a hash of the content of the retrieved resource according to a particular algorithm. Alternatively, the user agent may obtain the hash from another utility. 
         [0056]    The extraction of characteristic  210  from markup element  206  may occur before, during or after the retrieval of retrieved resource  218 . 
         [0057]    At step  308 , user agent  202  compares characteristic  220  of the content of retrieved resource  218  to extracted characteristic  210 . 
         [0058]    If the characteristics are identical, the user agent  202  processes retrieved resource  218  at step  310 . In the flower picture example, the web browser displays the retrieved picture in the webpage. In the mirror website example, the web browser completes the download of the file myprogram.exe. 
         [0059]    If the characteristics are not identical, then at step  314  user agent  202  alerts its user and/or rejects retrieved resource  218 . If the characteristics are not identical, then retrieved resource  218  is not identical to the resource from which characteristic  210  in markup element  206  was generated. This discrepancy may be caused by transmission errors due to noise in communications system  216  or other technical problems. Alternatively, this discrepancy may be caused because resource  214  identified by resource identifier  208  is not a true copy of the resource from which characteristic  210  in markup element  206  was generated. The resource from which characteristic  210  in markup element  206  was generated may have been replaced, accidentally or maliciously, with another resource. 
         [0060]    Embodiments of the invention can take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment containing both hardware and software elements. The exemplary embodiment of the invention discussed above is implemented in software, which includes but is not limited to firmware, resident software, microcode, and the like. 
         [0061]    Furthermore, embodiments of the invention can take the form of a computer program product accessible from a computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purpose of this description, a computer-readable medium can be any apparatus that can store the program for use by or in connection with the instruction execution system, apparatus, or device. 
         [0062]    The medium can be an electronic, magnetic, optical, or semiconductor system (or apparatus or device). Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), FLASH memory, a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk-read only memory (CD ROM), compact disk-read/write (CD-R/W) and digital versatile-disk (DVD). 
         [0063]      FIG. 4  is a block diagram of an exemplary computing apparatus. A data processing system  400  suitable for storing and/or executing program code will include at least one processor  402  coupled directly or indirectly to memory elements  404  through a system bus  406 . The memory elements  404  can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. 
         [0064]    Input/output (I/O) devices  408 —including but not limited to keyboards, displays, pointing devices, and the like—can be coupled to data processing system  400  either directly or through intervening I/O controllers  410 . 
         [0065]    Network adapters  412  may also be coupled to data processing system  400  to enable data processing system  400  to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are a few of the currently available types of network adapters. 
         [0066]    Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the appended claims.