O'Reilly logo

Professional PHP Design Patterns by Aaron Saray

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

15.1. Problem and Solution

The Proxy Design Pattern has always seemed like second nature to me. I remember hiding in my parent's basement, on the old computer, and reading some material about security exploits and penetration testing. The one thing that everyone harped on over and over was to use a proxy. Whenever a security exploit was tested, the use of a proxy was expected to provide a layer of anonymity between the tester and the target system. A proxy, by design, accepts and then retransmits the data it receives. In this case, the hope was that the origin of the test was shadowed by the intermediate usage of proxies.

Other more upright and common implementations of proxies exist, however. Proxy servers, which work as a web resource cache, are in place on some corporate networks. The internal network browsers communicate directly to the proxy server. It then checks its cache to determine if it has the resource on its local disk. If it does, it replies with that. Otherwise, it forwards the request transparently. Other networks take this a step further by installing a content-filtering proxy. This watches the traffic for websites that are against company policy. If the proxy finds a website that employees should be restricted from viewing, it stops the attempt. All other requests are sent transparently through. From the browsers' point of view, they don't know they're surfing through a proxy — well, that is until they try to go to a restricted page!

The Proxy Design Pattern ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required