On 2011-10-07 01:23, =JeffH wrote:
...

Trying to summarize my concerns and proposals...

(1) RFC2616-or-HTTPbis

In a perfect world I could give you an exact time-of-arrival for HTTPbis. But the world is not perfect; and progress on HTTPbis mainly depends on the availability of the editors, and, more importantly, people showing up on the HTTPbis mailing list to help in closing issues and reviewing the existing text. So help *is* appreciated. -> <http://trac.tools.ietf.org/wg/httpbis/trac/wiki>

(2) Multiple header instances

Header fields can occur multiple times, even when they were intended not to. Examples: Location, Content-Length. When this happens, we usually see interop problems because some consumers pick the first, some pick the second, and some combine them using a comma, as described in HTTP spec.

This can be dangerous when the repetition makes the message format ambiguous (Content-Length, for instance). It also means that it allows smuggling, relying on checkers/intermediaries only seeing one of the headers.

Note that Chrome and FF have become very strict in checking for this for C-L, and FF does even more checks (syntax of C-L, also checks for Location and Content-Disposition).

So *if* STS doesn't allow multiple header fields (which would require switching to a comma-separated syntax), the spec should be crystal clear what to do when multiple instances are encountered; in many cases the default should be "ignore the header field" or even "consider the message to be broken". Not sure what's best here.

Also note that somebody else may be combining multiple fields into a single one, and the recipient will see those concatenated with commas as separators. Optimally the format is robust enough to detect things like that.

(3) ABNF organization

Any header field that is extensible needs to define the syntax for the extension point, so existing code can parse them. Don't make extensions different from the builtins with respect to syntax. It just makes the parser more complicated.

So just define a single ABNF for STS directives in ABNF.

For instance, using RFC 2616 ABNF and list syntax:

Strict-Transport-Security =
  "Strict-Transport-Security" ":" 1#directive

...or when sticking to semicolon:

Strict-Transport-Security =
  "Strict-Transport-Security" ":" directive *( ";" directive )

Then

directive = token( "=" ( token / quoted-string ) )

In prose, add additional constrains, such as "MUST contain FOOBAR directive exactly once".

Finally, for each builtin directive state the individual syntax of the param *value*, and do not make the ABNF vary based on the directive.

Hope this helps.

Also worth reading: <http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-latest.html#considerations.for.creating.header.fields>

Best regards, Julian





_______________________________________________
websec mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/websec

Reply via email to