Re: [hybi] #1: HTTP Compliance

Willy Tarreau <w@1wt.eu> Sun, 15 August 2010 10:06 UTC

Return-Path: <w@1wt.eu>
X-Original-To: hybi@core3.amsl.com
Delivered-To: hybi@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 50CAC3A6830 for <hybi@core3.amsl.com>; Sun, 15 Aug 2010 03:06:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.786
X-Spam-Level:
X-Spam-Status: No, score=-1.786 tagged_above=-999 required=5 tests=[AWL=-2.157, BAYES_40=-0.185, HELO_IS_SMALL6=0.556]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Pg+zw1xa8WC0 for <hybi@core3.amsl.com>; Sun, 15 Aug 2010 03:06:44 -0700 (PDT)
Received: from 1wt.eu (1wt.eu [62.212.114.60]) by core3.amsl.com (Postfix) with ESMTP id 08A893A67A7 for <hybi@ietf.org>; Sun, 15 Aug 2010 03:06:43 -0700 (PDT)
Received: (from willy@localhost) by mail.home.local (8.14.4/8.14.4/Submit) id o7FA7HIp027629; Sun, 15 Aug 2010 12:07:17 +0200
Date: Sun, 15 Aug 2010 12:07:17 +0200
From: Willy Tarreau <w@1wt.eu>
To: Shelby Moore <shelby@coolpage.com>
Message-ID: <20100815100717.GA27614@1wt.eu>
References: <f7d4bb98e444b85b9bf1af6d4d9f0772.squirrel@sm.webmail.pair.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <f7d4bb98e444b85b9bf1af6d4d9f0772.squirrel@sm.webmail.pair.com>
User-Agent: Mutt/1.4.2.3i
Cc: hybi@ietf.org
Subject: Re: [hybi] #1: HTTP Compliance
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Server-Initiated HTTP <hybi.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/hybi>
List-Post: <mailto:hybi@ietf.org>
List-Help: <mailto:hybi-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/hybi>, <mailto:hybi-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 15 Aug 2010 10:06:45 -0000

On Sun, Aug 15, 2010 at 05:10:09AM -0400, Shelby Moore wrote:
> An HTTP proxy that is compatible with draft/proposal #76 (the contentious
> one that passes 8 extra characters after the HTTP header without a
> Content-Length header), would need a specific code path for the WebSocket
> upgrade request in order to pass 8, and only 8, extra characters
> (concensus is that passing an arbitrary content length would be a security
> hole).
> 
> Isn't it the antithesis of the 80/20 rule and interoperability to require
> every HTTP proxy in the world to have specific code path for every
> possible future HTTP Upgrade protocol that comes along?

it's even worse than that, it means that such a reverse-proxy, when shared
between HTTP and Websocket, will have to accept to blindly forward those 8 
bytes everytime someones *pretends* to talk websocket, without the server's
consent.

Since reverse-proxies are used everywhere (in IDS, HTTP-aware firewalls,
caches, load balancers, etc...), it is not even advisable to have per-host
or per-IP rules considering the large number of hosts that can be installed
behind any of them.

So it is very important that if we go the HTTP way, we respect the protocol's
semantics.

In fact, the protocol can be made HTTP compliant by switching two lines in
the description of the server's behaviour : the server just has to send the
101 *BEFORE* it reads the /key3/ parameter, and we're done.

Regards,
Willy