- From: =JeffH <Jeff.Hodges@KingsMountain.com>
- Date: Thu, 17 Dec 2009 13:08:48 -0800
- To: public-web-security@w3.org
Bil noted: > > Essentially, the first header takes precedence for Internet Explorer and > Safari while Firefox, Opera and Chrome use the last header. I can't tell from the BSH ("Browser Security Handbook") that the latter case (use of "last header" by those UAs) was actually verified, fwiw. Are we just presuming that's what they do? (just kinda curious). Perhaps another row in that BSH table is called for, e.g. "Last HTTP header of the same name takes precedence?", given that Michal notes that.. "In browsers where the last header takes precedence, these are trivially exploitable;" ..and so it seems such behavior is worth explicitly noting. Also, RFC2616 as well as draft-ietf-httpbis-p1-messaging disallow multiple header occurrences unless.. ...the entire field value for that header field is defined as a comma-separated list [i.e., #(values)]. ..though neither spec appears to define server or UA behavior if a message violating this requirement is received. Michal recounts.. > > we also noticed that some new specs (such as the content sniffing spec > that Adam Barth worked on) try to sanction precedence for individual > headers such as C-T - but doing so for a single header is probably > harmful in the sense that it creates even more discrepancies (C-D, > Location, Refresh, Cache-Control, etc, all have security consequences > too, and should behave consistently). I groveled through the draft-ietf-httpbis-p* I-Ds and noted the 19 header fields listed below whose ABNF definitions appear to meet the above requirement for (possibly) occurring in multiples per HTTP message. These header fields that Michal noted in his message -- content-type, content-disposition, Location, and Refresh -- *are not* on that list, and so apparently must not occur in multiples, according to the specs. But given that some of these header fields do appear in multiples in practice (for whatever reason), should UAs and servers be encouraged to do something other than more-or-less try to accommodate such non-conformant behavior? =JeffH ------ HTTP Header Fields that may occur in multiples per HTTP message =============================================================== [methodology: search for '*( "," OWS )' in specs, then inspect ABNF to confirm] Header Field which draft-ietf-httpbis-p* ------------- ---------------------------- Connection part 1 Trailer Transfer-Encoding Upgrade Via Expect part 2 Accept-Charset part 3 Accept-Language Content-Encoding Content-Language If-Match part 4 If-None-Match Accept-Ranges part 5 Cache-Control part 6 Pragma Vary Warning Proxy-Authenticate part 7 WWW-Authenticate --- end
Received on Thursday, 17 December 2009 21:10:18 UTC