Re: [hybi] #1: HTTP Compliance

"Shelby Moore" <shelby@coolpage.com> Sun, 15 August 2010 10:52 UTC

Return-Path: <shelby@coolpage.com>
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 68FDE3A67A7 for <hybi@core3.amsl.com>; Sun, 15 Aug 2010 03:52:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.007
X-Spam-Level:
X-Spam-Status: No, score=-2.007 tagged_above=-999 required=5 tests=[AWL=0.592, BAYES_00=-2.599]
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 V2ilKbpFVT7R for <hybi@core3.amsl.com>; Sun, 15 Aug 2010 03:52:36 -0700 (PDT)
Received: from www5.webmail.pair.com (www5.webmail.pair.com [66.39.3.83]) by core3.amsl.com (Postfix) with SMTP id 631A43A657C for <hybi@ietf.org>; Sun, 15 Aug 2010 03:52:36 -0700 (PDT)
Received: (qmail 71991 invoked by uid 65534); 15 Aug 2010 10:53:11 -0000
Received: from 121.97.54.174 ([121.97.54.174]) (SquirrelMail authenticated user shelby@coolpage.com) by sm.webmail.pair.com with HTTP; Sun, 15 Aug 2010 06:53:11 -0400
Message-ID: <1c2251f66b8d01880b6943561c07d3cb.squirrel@sm.webmail.pair.com>
In-Reply-To: <20100815100717.GA27614@1wt.eu>
References: <f7d4bb98e444b85b9bf1af6d4d9f0772.squirrel@sm.webmail.pair.com> <20100815100717.GA27614@1wt.eu>
Date: Sun, 15 Aug 2010 06:53:11 -0400
From: Shelby Moore <shelby@coolpage.com>
To: Willy Tarreau <w@1wt.eu>
User-Agent: SquirrelMail/1.4.20
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
X-Priority: 3 (Normal)
Importance: Normal
Cc: hybi@ietf.org
Subject: Re: [hybi] #1: HTTP Compliance
X-BeenThere: hybi@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: shelby@coolpage.com
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:52:37 -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.

I had read that point in past discussion.  I would be tempted to assume 8
characters is relatively harmless security hole (as compared to passing an
arbitrarily unexpected content length, which is what would be required to
have one code path for all proxies for all possible Upgrade extensions
that expect such special treatment), but I will grant you that even 1
unexpected bit is a potential security hole.


> 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.

Yeah I know this from experience.  I suppose I save the IP maybe for law
enforcement who want to trace logs back to the client, or for broad-stroke
geographic position.

Proxies are proliferating with wireless too.

It would be an exponentially increasing cost problem of interoperability
if every Upgrade protocol requires a new code path in the proxies.

Let me confess that I have only been studying the entire issue of Comet,
BOSH, WebSocket, and this mailing list, for a several hours.  I came to
this from Wikipedia, because I need to choose an architecture strategy for
a social network I am developing.  So take my comments as one perspective
of an outsider (but an outsider with considerable experience in web
development and successful commercial software both pre-internet and
post).  I am not a networking expert, but I do think a lot about
interoperability in the real world and also in terms of programming
language design.

> 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