On Feb 24, 2011, at 6:53 AM, Anne van Kesteren wrote:

> On Tue, 22 Feb 2011 20:19:33 +0100, Richard L. Barnes <rbar...@bbn.com> wrote:
>> Mark's XHR2-Secure proposal satisfies the requirement by explicitly listing 
>> the headers that are secure (I'll assume the enumeration stays, though it 
>> doesn't necessarily have to).  Any header name that is contained either in 
>> the fixed enumeration or in the XHR2-Secure header is secure, otherwise it's 
>> insecure.  This allows any header to be marked as secure, regardless of its 
>> name.
>> 
>> It's also arguably easier to implement:
>> 1. On the sending side:
>> 1.curr. Check membership in a fixed enum || prefix
>> 1.XHR2-Secure.1. Check membership in a fixed enum (spec enum + UA-chosen 
>> enum)
>> 1.XHR2-Secure.2. Add fixed header value XHR2-Secure with UA-chosen enum
>> 2. On the receiving side:
>> 2.curr. Check membership in a fixed enum || prefix
>> 2.XHR2-Secure. Add XHR2-Secure names to spec enum; check membership in fixed 
>> enum
>> 
>> The major concern is backward compatibility.  I don't really know what the 
>> state of the art is on the use of Sec-* headers, so I can't comment much on 
>> practical concerns.  But you could accommodate this to some extent with some 
>> wildcarding in the XHR2-Secure header and a recommendation to include Sec-* 
>> in the UA-chosen enum.
> 
> Would this not mean that for each new header introduced servers would have to 
> check an "XHR2-secure" header in addition to it to make sure it is not being 
> spoofed? That kind of complexity seems like something we should avoid.

Even with the Sec-*, you need to check any new headers belong to that namespace 
or the fixed enumeration.  So it's just a question of how you check, set 
containment vs. prefix match.  I'll admit that checking membership in a set is 
slightly more complex than a memcmp, but the difference doesn't seem all that 
significant.

--Richard

Reply via email to