Particular embodiments generally relate to data communication and webpage processing.
When a top-level webpage is accessed securely over an encrypted connection, the entire page and all sub-elements can only be accessed using the secure connection. Thus, any element of the webpage that is requested incurs a performance hit because of the encryption and decryption that is required to communicate securely over the connection.
In another example, a webpage may be accessed over a non-secure connection. The webpage may include a link that uses a secure connection, such as a hypertext transfer protocol secure (HTTPS) connection, to another page. When the link is selected, the new page may be accessed over a secure connection. Once the new page is accessed, further communication to request elements on the new page is performed over the secure connection. Thus, once a secure connection is initiated, requests for elements on the new page are performed using the secure connection and performance hits may also be incurred.
Particular embodiments generally relate to allowing access of non-secure elements through a non-secure channel when a top-level page was accessed through a secure connection. In one embodiment, a webpage is accessed over a secure channel. The webpage includes secure and non-secure elements. When a non-secure element for the webpage is determined, a client may message with the server to open a non-secure channel for accessing the non-secure element. For example, the client may request port information in the request. The server then can respond with port information for a non-secure channel. The client then accesses data for the non-secure element through the non-secure channel using the port information.
In one embodiment, a method is provided that comprises: accessing a web page over a secure channel, the web page including a plurality of elements including secure and non-secure elements; determining if an element in the plurality of elements is a non-secure element or secure element for the web page; if the element is a non-secure element, communicating with a server to open a non-secure channel for accessing the non-secure element, the non-secure channel being a different channel from the secure channel; and accessing data for the non-secure element through the non-secure channel.
In another embodiment, a method is provided that comprises: sending, from a first device, a web page over a secure channel, the web page including secure and non-secure elements; receiving a request from a second device to open a non-secure channel for accessing a non-secure element for the web page, the non-secure channel being a different channel from the secure channel; determining, at the first device, communication information for the non-secure channel, the communication information usable to communication through the non-secure channel; sending the communication information for the non-secure channel to the second device; receiving, from the second device, a request for data for the non-secure element through the non-secure channel using the communication information; and sending data for the non-secure element through the non-secure channel to the second device.
In yet another embodiment, a computer-readable storage medium comprising encoded logic for execution by the one or more processors is provided. The logic when executed is operable to: access a web page over a secure channel, the web page including a plurality of elements including secure and non-secure elements; determine if an element in the plurality of elements is a non-secure element or secure element for the web page; if the element is a non-secure element, communicate with a server to open a non-secure channel for accessing the non-secure element, the non-secure channel being a different channel from the secure channel; and access, using the one or more processors, data for the non-secure element through the non-secure channel.
In another embodiment, a computer-readable storage medium comprising encoded logic for execution by the one or more processors is provided. The logic when executed is operable to: send, from a first device, a web page over a secure channel, the web page including secure and non-secure elements; receive a request from a second device to open a non-secure channel for accessing a non-secure element for the web page, the non-secure channel being a different channel from the secure channel; determine, at the first device, communication information for the non-secure channel, the communication information usable to communication through the non-secure channel; send the communication information for the non-secure channel to the second device; receive, from the second device, a request for data for the non-secure element through the non-secure channel using the communication information; and send data for the non-secure element through the non-secure channel to the second device.
A further understanding of the nature and the advantages of particular embodiments disclosed herein may be realized by reference of the remaining portions of the specification and the attached drawings.
Client 102 may be a computing device that is used to display a page 106. Examples of client 102 may include a personal computer, laptop computer, cellular phone, smart phone, or any other device that can display page 106.
Server 104 may be a computing device that can send information for page 106 to client 102. In one example, server 104 is a web server. Network 108 may be any network including the Internet, a wireless network, a wired network, or any combination thereof.
Page 106 may include any type of information that can be displayed. In one embodiment, page 106 is a web page. Page 106 may be displayed using software code that is interpreted and used to display page 106. In one example, the software code may be hypertext transfer markup language (HTML). It will be recognized that other software languages may be used, such as extensible markup language (XML), or other markup/software languages. When page 106 is referred to, it may be the software code or the content that is displayed. For example, the software code may be processed to display the content of the page as is known in the art.
Client 102 and server 104 may communicate through a communication channel. A channel may be any connection that is used to communicate requests and responses for page 106. A channel may use different protocols to transfer data, such as transfer control protocol (TCP), user datagram protocol (UDP), or Internet protocol (IP).
A secure channel is a channel for transferring data that is resistant to interception and tampering. For example, a secure channel may use an encryption mechanism that encrypts data to be sent over the secure channel and then at the other end the encrypted data is decrypted. The encryption and decryption of the data requires processing resources to be used that are not necessary if a non-secure channel is used. That is, the data when sent over the non-secure channel does not need to be encrypted and decrypted. However, the non-secure channel may be more susceptible to interception of the data because it is an unencrypted channel.
Particular embodiments allow non-secure elements of page 106 to be accessed over a non-secure channel even if page 106 was accessed securely over the secure channel. Conventionally, if page 106 was accessed securely over the secure channel, then any sub-elements in page 106 were accessed over the secure channel. However, particular embodiments communicate to open a non-secure channel in which non-secure elements can be requested.
To indicate whether an element is secure or non-secure, an extension to the software language, such as an attribute, may be used to indicate whether an element is secure or not. For example, a safe attribute may be added to a non-secure element to indicate that it can be accessed over the non-secure channel. For example, the extension attribute may be “safe” with a value of “true”. It will be understood that other extension attributes and values may be used to indicate a non-secure channel. This attribute may be an extension of HTML or another language. Client 102 and server 104 may be configured to interpret the new element when it is encountered.
An example of a secure element is shown at 202. As shown, an attribute 204 of “safe” is equal to “false”. In this case, if the secure element is selected, client 102 may request the content of def.html from server 104 using the secure channel. Because safe is equal to false, the sub-element is considered a secure element and the content should be requested over the secure channel. A non-secure element 206 is shown for requesting content of abc.html. The safe attribute 208 is equal to “true”, and when client 102 encounters this attribute, it determines that this sub-element should be requested over a non-secure channel from server 104. A non-secure communication path may first need to be opened up though. The non-secure channel is opened up and data for the non-secure element is requested through the channel. This process is explained in more detail below.
In server 104, a sender 302 may send page 106 through the secure channel to client 102. The page may be requested by client 102 and server 104 retrieves the page from storage 304 for sending to client 102. In one embodiment, this may be considered a top level page or home page. Other content, such as web pages, may be accessed through the home page. Multiple levels of web pages may be found in a hierarchy that is based on the top level page. Any pages accessed on one of the levels may be considered a child of the home page.
At client 102, a receiver 306 receives page 106 and a page displayer 308 can display the page on client 102. Page 106 may be displayed on any type of interface or display. The page is displayed by parsing elements in code for page 106 and displaying content corresponding to the elements.
An element manager 310 also may determine if elements of page 106 are secure or non-secure elements. For example, when a non-secure element is determined (e.g., by selection of the element by the user or by parsing of the web page), element manager 310 determines whether or not the element should be requested over the non-secure channel. For example, the non-secure element may be a hypertext transfer protocol (HTTP) link that user may select. When the link is selected, a new page may need to be requested from server 104. If the element for the link includes an attribute of safe=“true”, element manager 310 determines if a non-secure channel needs to be opened.
A channel manager 312 then can determine whether or not a request to open a non-secure channel should be made to server 104. The request may be made if a non-secure channel has not already been opened.
If a non-secure channel needs to be opened, channel manager 312 may then generate a request for the non-secure channel. The request may seek port information that may be used to communicate through the non-secure channel. For example, port information may be requested using an HTTP extension header that includes a host name. The host name may be a unique name assigned to a host computer. For example, the host name may be a domain name that is assigned to server 104. An example of the request may be X-HTTP-connection: Host name. The hostname may be a preferred host that may serve the connection. In the event of absence of such a hostname listening on a non-secure channel, server 104 may provide another hostname that it believes (through configuration) to be able to serve the request. It should be noted other methods may be used in a negotiation to open up a non-secure channel (i.e., request a non-secure port). For example, extensible markup language (XML) may be used to request information from server 104 to open up a non-secure channel.
A channel manager 314 at server 104 receives the request and can respond with information needed to open up the non-secure channel. For example, a response may include the non-secure host and port information using the same extension header. An example of the response may be X-HTTP-connection: Host name: port 80. The host name may be the local IP address. This local IP address and port number may be considered a socket that is configured to allow communication through the non-secure channel. If channel manager 314 does not have a non-secure socket configured for the host that the client is seeking information for, server 104 responds with an indication that the non-secure channel is not available. For example, a “not available” value may be added in the response. In this case, client 102 may request the content using the original secure channel (i.e., the secure host port).
After receiving the information for the non-secure channel, client 102 may request the content (e.g., the new web page).
Page displayer 308 then displays the content for the non-secure element. For example, a new page 106 may be displayed with the content received. Also, a portion of the original page may be replaced with the new content. For example, the content may be displayed in a frame of page 106. Receiver 314 may then store the content in a cache 316 for later display if the content is requested again.
The non-secure channel information may be stored in cache 316 such that it can be used to request all non-secure elements in page 106. Also, non-secure elements in other pages that may be subsequently displayed may be requested using the non-secure channel. The information may be cached for as long as the duration of the original top-level secure connection is kept alive.
As additional elements from page 106 are requested, data for secure elements may be requested through the secure channel and data for non-secure elements are requested through the non-secure channel. After the non-secure channel information is received, additional requests for connection information do not need to be made. Rather, the request may be automatically made through the non-secure channel. In this case, a secure channel and non-secure channel have been opened simultaneously. This may be different from receiving a page over a non-secure channel and then opening up a secure channel when an HTTPS link is selected. In this case, once the HTTPS page is opened, any other requests for elements of that page are sent over the secure channel.
Step 502 parses software code of page 106. For example, when an element displayed on page 106 is selected, code for that element may be parsed.
Step 504 determines if the selected element includes a non-secure attribute. For example, a safe attribute, which may be an extension to HTML, may be encountered. It is then determined if the value for the safe attribute indicates this is a non-secure element (e.g., a “true” value). If it is not a non-secure element, then step 506 requests the element over the secure channel.
If the non-secure attribute is “true”, step 508 determines if the non-secure channel has been opened. For example, a non-secure channel may have already been opened and the information needed to communicate over the non-secure channel does not need to be requested again. If the non-secure channel has been opened, step 510 requests data for the element over the non-secure channel using the non-secure channel communication information.
If the non-secure channel has not been opened, step 512 sends a request for the non-secure channel communication information. The request may include a host name that is seeking port information for the non-secure channel.
Step 514 receives a response with non-secure channel information. For example, a non-secure host and port information may be received.
Step 516 then uses the information to access data for the non-secure element on the non-secure channel. For example, a request for content is sent over the non-secure channel using the port information. The request that is sent may be formatted per the protocol that is used for the channel. For example, HTTP may be the protocol that was agreed upon in the negotiation for opening up the non-secure channel. Thus, the port and protocol are used to send information to access the data through the non-secure channel.
Step 518 caches the non-secure channel information so that it can be used to request other non-secure elements.
Step 602 receives a request for non-secure channel communication information.
Step 604 determines if a non-secure channel is available. For example, server 104 may not have a non-secure socket configured for the virtual host that client 102 is seeking information for. If a secure channel is not available, step 606 sends a response that a non-secure channel is not available.
If a non-secure channel is available, step 608 sends a response with non-secure channel information that client 102 can use for non-secure communications. This may include a host and port information.
Step 610 receives a request for content over the non-secure channel. Step 612 then sends the content over the non-secure channel.
Particular embodiments provide many advantages. For example, flexibility in handling of elements in a webpage may allow for better performance by way of reduced computations at both the client and the server end. A choice can be made as the whether to request elements through a secure or non-secure channel. When encryption and decryption is not needed, a non-secure channel is used. Particular embodiments may maintain both a secure and non-secure channel at the same time. This allows for both secure and non-secure elements to be requested while a top level web page connection is open.
Although the description has been described with respect to particular embodiments thereof, these particular embodiments are merely illustrative, and not restrictive.
Any suitable programming language can be used to implement the routines of particular embodiments including C, C++, Java, assembly language, etc. Different programming techniques can be employed such as procedural or object oriented. The routines can execute on a single processing device or multiple processors. Although the steps, operations, or computations may be presented in a specific order, this order may be changed in different particular embodiments. In some particular embodiments, multiple steps shown as sequential in this specification can be performed at the same time.
Particular embodiments may be implemented in a computer-readable storage medium for use by or in connection with the instruction execution system, apparatus, system, or device. Particular embodiments can be implemented in the form of control logic in software or hardware or a combination of both. The control logic, when executed by one or more processors, may be operable to perform that which is described in particular embodiments.
Particular embodiments may be implemented by using a programmed general purpose digital computer, by using application specific integrated circuits, programmable logic devices, field programmable gate arrays, optical, chemical, biological, quantum or nanoengineered systems, components and mechanisms may be used. In general, the functions of particular embodiments can be achieved by any means as is known in the art. Distributed, networked systems, components, and/or circuits can be used. Communication, or transfer, of data may be wired, wireless, or by any other means.
It will also be appreciated that one or more of the elements depicted in the drawings/figures can also be implemented in a more separated or integrated manner, or even removed or rendered as inoperable in certain cases, as is useful in accordance with a particular application. It is also within the spirit and scope to implement a program or code that can be stored in a machine-readable medium to permit a computer to perform any of the methods described above.
As used in the description herein and throughout the claims that follow, “a”, “an”, and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
Thus, while particular embodiments have been described herein, latitudes of modification, various changes, and substitutions are intended in the foregoing disclosures, and it will be appreciated that in some instances some features of particular embodiments will be employed without a corresponding use of other features without departing from the scope and spirit as set forth. Therefore, many modifications may be made to adapt a particular situation or material to the essential scope and spirit.