- From: Paul Leach <paulle@microsoft.com>
- Date: Fri, 13 Dec 1996 17:55:03 -0800
- To: 'Daniel DuBois' <dan@spyglass.com>, 'Jeffrey Mogul' <mogul@pa.dec.com>
- Cc: "'http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com'" <http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com>, "'pmontelo@spyglass.com'" <pmontelo@spyglass.com>
Because the transfer-encoding is added and stripped off on a hop-by-hop basis, that header (and its effects on the entity-body) were deliberately left out of the digest. More precisely, only certain fields that we felt were strongly related to the integrity of the entity body are _included_ in the digest. Here is what header-related info the digest-auth spec says is included in the digest: entity-info = H( digest-uri-value ":" media-type ":" ; Content-type, see section 3.7 of [2] *DIGIT ":" ; Content length, see 10.12 of [2] content-coding ":" ; Content-encoding, see 3.5 of [2] last-modified ":" ; last modified date, see 10.25 of [2] expires ; expiration date; see 10.19 of [2] ) last-modified = rfc1123-date ; see section 3.3.1 of [2] expires = rfc1123-date It goes on to say that if a header is missing, then the null string is included in the digest. Note that this is mandatory for all the headers _except_ Content-Length, whose value can be computed even when the header is missing. Note also that in order to digest a chunked body, the digest has to go in the footer, after the end of the chunk-encoded body. However, the HTTP spec says that only headers that state that they are allowed in footers are allowed in footers, and the relevant digest-auth header does not so state. So, there is no semantic reason that a proxy couldn't convert from a content-length that is implicit in the chunked encoding to one that is explicit in the Content-Length header, but we'd have to change a couple of things that essentially needlessly disallow it: CHANGES NEED TO THE HTTP/1.1 SPEC to make the above work: 1. Allow proxies to add Content-Length header if not present. CHANGES NEEDED TO THE DIGEST SPEC: 1. Change section 2.1.3 "The AuthenticationInfo Header" to say that it is allowed in the footer of a chunked encoded HTTP message. 2. Change section 2.1.2 to specifically state that content length is always to be included. The HTTP/1.1 spec requires that content length is well defined in all messages, whether or not there is a Content-Length header. Paul >---------- >From: Daniel DuBois[SMTP:dan@spyglass.com] >Sent: Friday, December 13, 1996 4:37 PM >To: Paul Leach >Cc: 'http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com'; pmontelo@spyglass.com >Subject: RE: HTTP/1.1 Contradiction > >At 04:18 PM 12/13/96 -0800, Paul Leach wrote: >>Imagine that you've computed an MD5 (or other) checksum over the content >>body and various of the headers. If you change any of them, the digest >>won't check thereafter. When the digest is used for authentication and >>as a secure integrity check, the failure of the digest to check would >>lead to some kind of security fault. The "no-transform" directive was >>added to tell proxies that changing the body or certain headers would >>lead to some kind of failure. >> >>In the case in question (an HTTP to mail gateway), it may not be >>important that the recipient of the Mime-body be able to verify its > >First let me say I'm not concerned with mail gateways, so I don't want to >get too lost thinking about the implications of such. :) > >I understand what you are saying in the first paragraph, and it sounds like >what you are saying applies to Transfer-Encoding as well. Or are we >presuming that whatever the digest-computation algorithms are in the browser >(and the server as well!) they are both intelligent/aware enough to ignore >the Transfer-Encoding headers in their computations? > >If we can't make that assumption (it sounds like a tenuous one), then we >should state somewhere in the HTTP/1.1 spec that proxies are *not* allowed >to remove Transform-Encodings on responses/messages that have a no-transform >Cache-Control directive. > >Are there any other implications of this? > >Now I think some more about it.... Why are we specifying headers at all? >Why aren't they ALL un-modifiable in face of no-transform and the >possibility of a some-headers-digested situation? > >----- >Daniel DuBois, Traveling Coderman www.spyglass.com/~ddubois > o The Heroes of Might and Magic II Bible is here! > http://www.spyglass.com/~ddubois/HOMM2.html > >
Received on Friday, 13 December 1996 17:57:10 UTC