A system and method for client-side url rewriting. In one embodiment the method comprises a client sending a request for content to a client proxy, wherein the request for content comprises a first url. The client proxy may then rewrite the first url and redirect the request for content to a reverse proxy server. In such an embodiment, the request for content may be sent to the client proxy based on a proxy configuration of the client. In a further aspect of the method above, rewriting the first url with the client-side url rewriter may comprise rewriting the request for content to a second url, and including an indication of the first url in the rewritten request for content. Furthermore, the first url may correspond to an intranet server, while the second url may correspond to the reverse proxy server.
|
1. A method, comprising:
a client sending an initial request for content to a reverse proxy connected to one or more intranet servers configured to serve the content;
in response to sending the initial request, receiving from the reverse proxy, data usable to implement a client-side url rewriter, wherein the url rewriter is operable to act as a client proxy for requests directed to any of the one or more intranet servers;
the client sending a request for content to the client-side url rewriter, wherein the request for content comprises a url identifying one of the intranet servers;
the client-side url rewriter rewriting the url, wherein the rewritten url identifies the reverse proxy;
the client-side url rewriter sending a redirect response code with the rewritten url back to the same client that sent the request to the client-side url rewriter; and
in response to receiving the rewritten url and redirect response code, the same client redirecting the request for content to the reverse proxy indicated by the rewritten url, wherein the redirected request is not sent to the url rewriter.
17. A non-transitory computer accessible storage medium storing program instructions computer executable to implement a method comprising:
a client sending an initial request for content to a reverse proxy connected to one or more intranet servers configured to serve the content;
in response to sending the initial request, receiving from the reverse proxy, data usable to implement a client-side url rewriter, wherein the url rewriter is operable to act as a client proxy for requests directed to any of the one or more intranet servers;
the client sending a request for content to the client-side url rewriter, wherein the request for content comprises a url identifying one of the intranet servers;
the client-side url rewriter rewriting the url, wherein the rewritten url identifies the reverse proxy server;
the client-side url rewriter sending a redirect response code with the rewritten url back to the same client that sent the request to the client-side url rewriter; and
in response to receiving the rewritten url and redirect response code, the same client redirecting the request for content to the reverse proxy indicated by the rewritten url, wherein the redirected request is not sent to the url rewriter.
9. A computer system, comprising:
a processor;
memory coupled to the processor and storing program instructions executable by the processor to implement:
a client sending an initial request for content to a reverse proxy connected to one or more intranet servers configured to serve the content;
in response to sending the request, receiving from the reverse proxy, data usable to implement a client-side url rewriter, wherein the url rewriter is operable to act as a client proxy for requests directed to any of the one or more intranet servers;
the client sending a request for content to the client-side url rewriter, wherein the request for content comprises a url identifying one of the intranet servers;
the client-side url rewriter rewriting the url, wherein the rewritten url identifies the reverse proxy;
the client-side url rewriter sending a redirect response code with the rewritten url back to the same client that sent the request to the client-side url rewriter; and
in response to receiving the rewritten url and redirect response code, the same client redirecting the request for content to the reverse proxy indicated by the rewritten url, wherein the redirected request is not sent to the url rewriter.
2. The method of
3. The method of
4. The method of
6. The method of
7. The method of
the reverse proxy server retrieving content from an intranet server in accordance with the request for content; and
the reverse proxy server returning said content to the client.
8. The method of
a client proxy comprising the client-side url rewriter returning the rewritten url to a browser; and
the client proxy sending a redirect command to the browser.
10. The system of
11. The system of
12. The system of
14. The system of
15. The system of
retrieve the content identified by the request for content, from the intranet server; and
return the identified content to the client.
16. The system of
returning the rewritten first url to a browser; and
sending a redirect command to the browser.
18. The computer accessible medium of
19. The computer accessible medium of
20. The computer accessible medium of
21. The computer accessible medium of
22. The computer accessible medium of
23. The computer accessible medium of
the client-side url rewriter returning the rewritten first url to a browser; and
the client-side url rewriter sending a redirect command to the browser.
|
1. Field of the Invention
This invention relates to the field of computer systems and, more particularly, to URL rewriting.
2. Description of the Related Art
As web-based applications become more important to business and industry, system failure becomes more expensive, and highly reliable systems assume a greater importance. For example, a web site may handle financial, production, sales, marketing or media applications. Failure to provide these applications to clients for even a few minutes could mean thousands or millions of dollars in lost income.
One key strategy used to protect web infrastructure from external attacks is the isolation of an organization's internal servers through the use of reverse proxies and firewalls. More particularly, the internal servers of an organization may be configured to only communicate via certain channels through a firewall to a reverse proxy computer. In turn, the reverse proxy may send and receive communications to the internal servers on behalf of one or more clients. Only the reverse proxy may be able to communicate directly with client systems via the Internet.
Accordingly, a reverse proxy may receive a request for a web page from a client system, relay the request to an internal server through the firewall, receive the web page back from the internal server, and return the web page to the client. To allow client systems from to access content or services from the internal server without directly exposing the internal server on a public network, the reverse proxy may rewrite the Universal Resource Locators (URLs) of the returned web page to point to a reverse proxy for the internal server instead of pointing to the internal server itself. For example, the reverse proxy may rewrite each URL that points to the internal server on a returned web page by rewriting the URL to point to the reverse proxy, and by including an indication of the URL of the intranet server in the rewritten URLs. Accordingly, the client system which receives the web page may access only the reverse proxy through the returned URLs.
However, configuring the reverse proxy at the server-side to rewrite every internal server URL sent to a client may be difficult and time-consuming. Furthermore, server-side URL rewriting may consume significant computational resources.
A system and method for client-side URL rewriting is disclosed. In one embodiment the method comprises a client sending a request for content to a client-side URL rewriter, wherein the request for content may specify a first URL. The client-side URL rewriter may then rewrite the first URL and redirect the request for content to a reverse proxy server. In such an embodiment, the first URL may correspond to an intranet server, and the client may be configured so that all requests for content having a URL corresponding to the intranet server are sent to a client proxy comprising the client-side URL rewriter. The request for content may be sent to the client proxy based on a proxy auto-configuration (PAC) of a browser application on the client.
In a further aspect of the method above, rewriting the first URL with the client-side URL rewriter may comprise rewriting the first URL as a second URL and including an indication of the first URL. The first URL may correspond to an intranet server, and the second URL may correspond to the reverse proxy server.
In yet another aspect of the method above, the method may further comprise the reverse proxy server retrieving content from an intranet server in accordance with the request for content, and the reverse proxy server returning said content to the client. In still another aspect of the method above, redirecting the request for content to a reverse proxy server may comprise a client proxy comprising the client-side URL rewriter returning the rewritten first URL to a browser, and the client proxy sending a redirect command to the browser to redirect the request according to the rewritten URL.
While the invention is susceptible to various modifications and alternative forms, specific embodiments are shown by way of example in the drawings and are herein described in detail. It should be understood, however, that drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the invention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims.
Turning now to
Each reverse proxy 120A-B may be a server or other type of computer system connected to the Internet 150 and intranet servers 140A-C via firewalls 130A-B. Intranet servers 140A-C may contain content, such as, for example, web pages or media files. Firewalls 130A-B may be operable to allow only authorized computer systems to communicate with intranet servers 140A-C. For example, in one embodiment, a firewall 130A-B may be operable to block all communications to intranet servers 140A-C which do not originate from reverse proxies 120A-B.
Each reverse proxy 120A-B may be operable to receive requests for content from other computer systems via the Internet 150. Each reverse proxy 120A-B may then be operable to relay a request for content to an intranet server 140A-C through a firewall 130A-B, and to receive content returned in response to the request from intranet servers 140A-C. Reverse proxies 120A-B may then be able to relay the returned content to the computer system which originated the request. It is noted that, in accordance with the above description, reverse proxy 120 A-B may be able to access content on intranet servers 140A-C on behalf of client system 100 without directly exposing intranet servers 140A-C to external connections, thereby providing intranet servers 140A-C with a greater degree of security from external attacks.
In one embodiment, client-side URL rewriter 112 may be a program configured as a client proxy for requests directed towards one or more intranet servers 140A-C. Client-side URL rewriter 112 may further be configured to rewrite the URLs of one or more content requests to redirect browser 110 to reverse proxies 120A-B rather than intranet servers 140A-C.
It is further noted that in various embodiments, additional firewalls 130 may be used in addition to or in place of firewalls 130A-B. For example, in one embodiment firewalls 130A-B may be positioned between Internet 150 and reverse proxy 120A-B. Likewise, in one embodiment a firewall 130 may be placed between client system 100 and Internet 150. In still further embodiments, no firewalls may be used.
Turning now to
It is noted that, in one embodiment, browser 110 may be configured to route all requests for a particular URL to client-side URL rewriter 112. In one embodiment, browser 110 may utilize proxy settings, such as a Proxy Auto-Configuration (PAC), to determine a client proxy for a specific URL domain. The client proxy may include the client-side URL rewriter 112.
In 202, client-side URL rewriter 112 may rewrite the URL of the content request. More particularly, in one embodiment client-side URL rewriter 112 may rewrite the content request URL to point to a reverse proxy 120A-B and include an indication or encoding of the URL for an intranet server 140A-C. In one embodiment client-side URL rewriter 112 may rewrite the content request URL by prepending the URL of a reverse proxy 120A-B to the URL of the original request. For example, the URL “h t t p : / / i i n t r a n e t . s u n . c o m / l o g i n . h t m l” may become“h t t p : / / w w w . s u n . c o m / h t t p : / / i n t r a n e t . s u n . c o m / l o g i n . h t m l”.
Alternatively, in other embodiments client-side URL rewriter 112 may rewrite the content request URL to point to the URL of reverse proxy 120A-B, and also include a mapping of the URL of intranet server 140A-C. For example, the URL “h t t p: / / i n t r a n e t . s u n . c o m / l o g i n . h t m l” may become “h t t p : / / w w w . s u n . c o m / h o s t 1 / l o g i n . h t m l”, wherein “h o s t 1” is mapped to “h t t p : / / i n t r a n e t . s u n . c o m” at the reverse proxy. In still further embodiments, client-side URL rewriter 112 may rewrite the content request URL to point to the URL of reverse proxy 120A-B, and further utilize encryption or other mechanisms to include an indication of the URL of intranet server 140A-C in the rewritten content request URL. For example, the URL “h t t p : / / i n t r a n e t . s u n . c o m / l o g i n . h t m l” may become “h t t p : / / w w w . s u n . c o m / ? F e t c h = j o q d a p e d h . . . h e t z k w q”, wherein “j o q d a p e d h . . . h e t z k w q” is an encrypted or encoded string which decodes as “h t t p : / / i n t r a n e t . s u n . c o m / l o g i n . h t m l”.
In 204, client-side URL rewriter 112 may then return the rewritten request URL to browser 110. In one embodiment, the rewritten URL may be sent back to the browser with a redirect response code. A redirect response sent along with the URL code may cause a browser to send a new request for the URL. For example, as described above, client-side URL rewriter 112 may redirect a request to reverse proxy 120A-B.
In 206, browser 110 may send a request to reverse proxy 120A-B, as indicated by the rewritten URL and response code. For example, if browser 110 receives the URL “h t t p : / / w w w . s u n . c o m / h t t p : / / i n t r a n e t . s u n . c o m / l o g i n . h t m l” along with a redirect response code from client-side URL rewriter 112, browser 110 may then send a request for the rewritten URL to reverse proxy 120A-B, where “sun.com” is the URL for the reverse proxy. It is noted that, in one embodiment, browser 112 may only be configured to send requests for intranet servers 140 to client-side URL rewriter 112 (or to a client proxy including rewriter 112). Requests sent to other servers, such as reverse proxy servers 120A-B, may be sent directly to the requested server or through a different proxy. Accordingly, the redirected request may be sent directly to reverse proxy server 120A-B, thereby avoiding an infinite loop of return and redirect.
In 208, reverse proxy 120A-B retrieves the requested content from the appropriate intranet server 140A-C. More particularly, reverse proxy 120A-B may strip the prepended URL from the request sent by browser 110, leaving only the URL of the content on intranet server 140A-C. Reverse proxy 120A-B may then be operable to retrieve content from intranet server 140A-C through firewall 130A-B, as described above. In 110, reverse proxy 120A-B returns the retrieved content to browser 110. In one embodiment, the method may return to 100 if and when browser 110 requests additional content from intranet servers 140A-C.
It is noted that, in accordance with the above description, URLs directed towards intranet servers 140A-C may be rewritten by client-side URL rewriter 112, rather than by server-side reverse proxies 120A-B. Accordingly, the intranet servers 140A-C may be protected without placing URL rewriting workloads on reverse proxies 120A-B. Furthermore, in some embodiments client-side URL rewriter 112 may be able to more efficiently rewrite client-side URLs by accessing local state information from browser 112, such as scripting variables.
Turning now to
In one embodiment, client proxy 300 may have client-side URL rewriter 112 already installed by a system administrator. Alternatively, in another embodiment client-side URL rewriter 112 may be a Java applet or Active X component, for example, downloaded from reverse proxy 120A-B. More particularly, reverse proxy 120A-B may be configured to return client-side URL rewriter 112 in response to an initial request for content, such as a request for an index page. Client-side URL rewriter 112 may then be operable to act as a client proxy for requests directed to intranet servers 140A-C, as described above in
It is further noted that, in one embodiment, the functionality of client-side URL rewriter 112 may be integrated or hooked into browser 110. In such an embodiment, browser 110 (or a component hooked into browser 110) may be configured to detect any URL request directed towards an intranet server 140A-C, and to automatically rewrite the content request URL as described above. Furthermore, in such an embodiment browser 110 may not utilize a redirect response code, and may instead send the rewritten URL directly to reverse proxy 120A-B. In one embodiment, the client-side URL rewriter functionality may be part of a plug-in for browser 110, while in another embodiment browser 110 may be rewritten and recompiled with the additional functionality.
Turning now to
As described in detail above in conjunction with
It is further noted that any of the embodiments described above may further include receiving, sending or storing instructions and/or data that implement the operations described above in conjunction with
Although the embodiments above have been described in considerable detail, numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.
Subramanian, Sudha, Thiagarajan, Rajesh
Patent | Priority | Assignee | Title |
10021134, | Nov 17 2014 | VADE USA, INCORPORATED | Methods and systems for phishing detection |
10091169, | Nov 11 2013 | Microsoft Technology Licensing, LLC | Method and system for protecting cloud-based applications executed in a cloud computing platform |
10142366, | Mar 15 2016 | VADE USA, INCORPORATED | Methods, systems and devices to mitigate the effects of side effect URLs in legitimate and phishing electronic messages |
10324702, | Sep 12 2014 | Microsoft Technology Licensing, LLC | Cloud suffix proxy and a method thereof |
10491475, | Jul 31 2017 | Bank of America Corporation | Proxy automatic configuration file manager |
10521827, | Dec 12 2005 | Ebay Inc. | Method and system for proxy tracking of third party interactions |
10642600, | Sep 12 2014 | Microsoft Technology Licensing, LLC | Cloud suffix proxy and a method thereof |
10728219, | Apr 13 2018 | R3 LTD | Enhancing security of communications during execution of protocol flows |
10783208, | Mar 19 2018 | Amazon Technologies, Inc.; Amazon Technologies, Inc | Server-side and client-side unfurling of resource locators |
10873507, | Jul 31 2017 | Bank of America Corporation | Proxy automatic configuration file manager |
11048858, | Nov 21 2012 | ROOFOVERYOURHEAD MARKETING LTD | Browser extension for the collection and distribution of data and methods of use thereof |
11449666, | Nov 21 2012 | RoofOverYourHead Marketing Ltd. | Browser extension for the collection and distribution of data and methods of use thereof |
11803878, | Dec 12 2005 | Ebay Inc. | Method and system for proxy tracking of third party interactions |
8949966, | Oct 26 2005 | Orange | Method and system for protecting a service access link |
8990610, | Mar 12 2010 | International Business Machines Corporation | Preferred resource selector |
9191429, | Jul 13 2012 | Qualcomm Incorporated | Dynamic resolution of content references for streaming media |
9300594, | Mar 12 2010 | International Business Machines Corporation | Preferred resource selector |
9344512, | Dec 13 2012 | Qualcomm Incorporated | Loading a re-directed web resource on a web browser of a client device in a communications system |
9374436, | Dec 13 2012 | Qualcomm Incorporated | Loading a re-directed web page on a web browser of a client device in a communications system |
9380028, | Dec 16 2011 | British Telecommunications public limited company | Proxy server operation |
9549035, | Mar 13 2013 | Apple Inc.; Apple Inc | Automatic updating of redirected location references |
Patent | Priority | Assignee | Title |
6098093, | Mar 19 1998 | International Business Machines Corp. | Maintaining sessions in a clustered server environment |
6785707, | Nov 14 2000 | Qualcomm Incorporated | Enhanced multimedia mobile content delivery and message system using cache management |
6886013, | Sep 11 1997 | UNILOC 2017 LLC | HTTP caching proxy to filter and control display of data in a web browser |
7058699, | Jun 16 2000 | R2 SOLUTIONS LLC | System and methods for implementing code translations that enable persistent client-server communication via a proxy |
7099927, | Sep 01 2000 | CITIBANK, N A | Downloading and uploading data in information networks using proxy server clients |
7200644, | Mar 31 2000 | TEXAS INSTUMENTS INCORPORATED | Proxy internet browsing |
7333990, | Jun 22 2004 | Oracle America, Inc | Dynamic reverse proxy |
20010037292, | |||
20030061515, | |||
20040044768, | |||
20050010567, | |||
20050086306, | |||
20050132020, | |||
20050138604, | |||
20050235044, | |||
20050262357, | |||
20060031442, | |||
20060253452, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Oct 27 2004 | Oracle America, Inc. | (assignment on the face of the patent) | / | |||
Oct 27 2004 | SUBRAMANIAN, SUDHA | Sun Microsystems, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 015957 | /0089 | |
Oct 27 2004 | THIAGARAJAN, RAJESH | Sun Microsystems, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 015957 | /0089 | |
Feb 12 2010 | ORACLE USA, INC | Oracle America, Inc | MERGER AND CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 037306 | /0556 | |
Feb 12 2010 | Sun Microsystems, Inc | Oracle America, Inc | MERGER AND CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 037306 | /0556 | |
Feb 12 2010 | Oracle America, Inc | Oracle America, Inc | MERGER AND CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 037306 | /0556 |
Date | Maintenance Fee Events |
Jun 18 2014 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Jul 06 2018 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Jul 06 2022 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Jan 18 2014 | 4 years fee payment window open |
Jul 18 2014 | 6 months grace period start (w surcharge) |
Jan 18 2015 | patent expiry (for year 4) |
Jan 18 2017 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jan 18 2018 | 8 years fee payment window open |
Jul 18 2018 | 6 months grace period start (w surcharge) |
Jan 18 2019 | patent expiry (for year 8) |
Jan 18 2021 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jan 18 2022 | 12 years fee payment window open |
Jul 18 2022 | 6 months grace period start (w surcharge) |
Jan 18 2023 | patent expiry (for year 12) |
Jan 18 2025 | 2 years to revive unintentionally abandoned end. (for year 12) |