- From: Mark Nottingham <mnot@mnot.net>
- Date: Wed, 12 Aug 2009 16:43:33 +1000
- To: Henrik Nordstrom <henrik@henriknordstrom.net>
- Cc: HTTP Working Group <ietf-http-wg@w3.org>, Bjoern Hoehrmann <derhoermi@gmx.net>
Right now, it's defined as:
> A string of text is parsed as a single word if it is quoted using
> double-quote marks.
>
> quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE
> qdtext = OWS / %x21 / %x23-5B / %x5D-7E / obs-text
> ; OWS / <VCHAR except DQUOTE and "\"> / obs-text
> obs-text = %x80-FF
>
> The backslash character ("\") MAY be used as a single-character
> quoting mechanism only within quoted-string and comment constructs.
>
> quoted-text = %x01-09 /
> %x0B-0C /
> %x0E-FF ; Characters excluding NUL, CR and LF
> quoted-pair = "\" quoted-text
So it seems like we need to:
1) Consider removing OWS from qdtext, replacing it with space and tab
only. While we could use BWS here, receivers are required to accept
it, which I don't think is the desired effect. And,
2) Consider removing obs-text from qdtext, as it's a hole that a truck
can drive through. Otherwise, modify it to explicitly disallow CTLs.
And,
3) Restrict the allowable set of characters in quoted-text to disallow
CTLs. VCHAR?
On 11/08/2009, at 8:50 AM, Henrik Nordstrom wrote:
> tis 2009-08-11 klockan 05:31 +1000 skrev Mark Nottingham:
>> This was discussed in Stockholm, and there was agreement in the room
>> that the proper way to address this is to disallow CR and LF in *any*
>> quoted-string.
>>
>> Comments?
>
> Escaped newlines or \0 characters in the form of quoted-pair very
> likely
> to cause many parsers to fail no matter where these are seen. I know I
> have always understood this as a mechanism intended for quoting
> special
> characters like " ( and ), and not including CTLs.
>
> Regarding chunked encoding allowing any newlines there is a very very
> bad idea. Folding is not supported there, and no one expects to see
> newlines in the middle of a chunk header quoted or not.
>
> I would propose changing quoted-pair to restrict the allowable set to
> non-CTLs to match most expectations on what values may be seen, not
> only
> excluding CR or LF.
>
> quoted-pair = "\" <any CHAR except CTLs>
>
> instead of
>
> quoted-pair = "\" CHAR
>
> Regards
> Henrik
>
--
Mark Nottingham http://www.mnot.net/
Received on Wednesday, 12 August 2009 06:44:15 UTC