TL; DR – 我打算使用应用程序级防火墙将HTML内容的请求转发给透明代理。 因此,返回HTML文件的google.com(例如)的初始GET请求将被转发到Squid(透明代理),但是对静态资产(CSS,JS,图像文件等)的所有后续请求都不会去通过代理。
你能想出任何可能影响用户会话的方式吗?
一些背景 :
我们有一个现场的路由器,但想要使用AWS上托pipe的透明代理+ ICAP服务器进行内容过滤。 最初,我们计划将所有端口80的stream量转发给透明代理,但是担心每个请求会额外花费50-100毫秒,因为这是通过我们的EC2实例路由的,更重要的是会带来无法接受的带宽成本。 最近我们发现,路由器的防火墙可以使用深度包检测进行过滤(例如,可以将出站请求与“Accept text / html。*”头部匹配)。
乍一看,这似乎是一个更易于pipe理的解决scheme,但是我的networking经验是有限的,想要在这条道路上走得太远之前,提出任何“棘手问题”和/或如何这显然是一个可怕的想法的例子。
根据我的经验,透明HTTP代理通常对用户会话几乎没有影响。
不过,你的策略和你实际上打算实现的目标似乎还不清楚。 我认为HTTP工作的现实会给你带来一个问题。 也许你可以从最终结果的angular度更多地谈论你真正想要达到的目标。 我不是说这是一个“可怕的主意”,但是你完全不清楚自己希望得到什么。
从HTTP协议的angular度来看,您的策略有一个主要问题。 根据定义,您的第7层防火墙无法知道正在请求的资源的MIMEtypes,直到发出请求。 您可以在文件名上进行匹配(如果以“.html”等结尾的话),但任何URL都可以返回任意的MIMEtypes。 这个.b0rk文件是text/html ,但是.html或.htm防火墙中的匹配规则不会“知道”那个。 请求必须对远程服务器进行,远程服务器必须在知道MIMEtypes之前做出响应。
为什么你认为其他types的文件(CSS,Javascript,图像等)是“静态的”。 他们当然不一定非要。 任何URL引用的对象都可以是“dynamic的”。
如果您担心带宽成本,为什么不在本地托pipe一个透明代理? 本地代理服务器不会承受请求访问代理服务器的十分之一秒的延迟,而且您不会将从第三方数据中心传出的所有数据与潜在的带宽成本相关联。 代理caching对象时,您也可以看到本地带宽利用率的一些改进,您可以让它caching所有内容(即它)。
我已经通过一个在硬件上运行的Squidcaching实例运行了一个1000个座位的教育networking,而这个实例现在看起来似乎很可怜。 除非你正在谈论一个非常非常大的networking,否则一台非常适中的机器可以为你处理负载。 如果您担心单点故障,您可以使用Webcaching通信协议 (WCCP)(如果您的边缘设备支持它)在两个caching之间进行故障转移。
如果你正在这样做,扫描HTML“恶意”的代码,那么我认为你正在倒退。 我更担心Javascript和application/octet-stream对象中的恶意代码,而不是text/html对象。 无论如何,由于任何东西都可以被充分混淆以便通过扫描来滑动(见停机问题 ),所以我很怀疑扫描。 除非您要进行SSL拦截,否则您也将错过通过HTTPS传送的任何内容。 扫描可以捕获已知的漏洞,而且我认为它是IT安全体系结构的有效部分,但是0天几乎总是会漏掉。