-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 2 Oct 2010, at 09:19, Christoph Haas wrote:
I'm running a 0.9.7 application (screenshots.debian.net) and this
morning received a paste error in my mail that got me thinking. The
actual exception was:
CookieError: Illegal key value: ,__utma
And the probable cause is this cookie:
HTTP_COOKIE
',__utma=183447588.206002125.1285996917.1285996917.1285996917.1;
__utmb=183447588.2.10.1285996917; __utmc=183447588;
__utmz=183447588.1285996917.1.1.utmcsr=(direct)|utmccn=(direct)|
utmcmd=(none)'
Are cookies beginning with underscores not valid? Or is this an
artificial limitation here? There is another cookie that I found
strange:
Leading underscores are legal syntax. I think it may be the leading /
comma/ in ',__utma=...' that's causing the problem.
RFC2109 states:
NAME=VALUE
Required. The name of the state information ("cookie") is NAME,
and its value is VALUE. NAMEs that begin with $ are reserved
for
other uses and must not be used by applications.
The VALUE is opaque to the user agent and may be anything the
origin server chooses to send, possibly in a server-selected
printable ASCII encoding. "Opaque" implies that the content
is of
interest and relevance only to the origin server. The content
may, in fact, be readable by anyone that examines the Set-Cookie
header.
and with respect to the token...
The two state management headers, Set-Cookie and Cookie, have common
syntactic properties involving attribute-value pairs. The
following
grammar uses the notation, and tokens DIGIT (decimal digits) and
token (informally, a sequence of non-special, non-white space
characters) from the HTTP/1.1 specification [RFC 2068] to describe
their syntax.
av-pairs = av-pair *(";" av-pair)
av-pair = attr ["=" value] ; optional value
attr = token
value = word
word = token | quoted-string
Attributes (names) (attr) are case-insensitive. White space is
permitted between tokens. Note that while the above syntax
description shows value as optional, most attrs require them.
NOTE: The syntax above allows whitespace between the attribute and
the = sign.
so RFC 2068 defines the syntax for the token:
Many HTTP/1.1 header field values consist of words separated by LWS
or special characters. These special characters MUST be in a quoted
string to be used within a parameter value.
token = 1*<any CHAR except CTLs or tspecials>
tspecials = "(" | ")" | "<" | ">" | "@"
| "," | ";" | ":" | "\" | <">
| "/" | "[" | "]" | "?" | "="
| "{" | "}" | SP | HT
Is this some kind of attacker who wants to annoy the Pylons
application
with overly long cookies to see if it fails?
That doesn't look like valid cookie syntax. But anyway....
6.3 Implementation Limits
Practical user agent implementations have limits on the number and
size of cookies that they can store. In general, user agents'
cookie
support should have no fixed limits. They should strive to store
as
many frequently-used cookies as possible. Furthermore, general-use
user agents should provide each of the following minimum
capabilities
individually, although not necessarily simultaneously:
* at least 300 cookies
* at least 4096 bytes per cookie (as measured by the size of the
characters that comprise the cookie non-terminal in the syntax
description of the Set-Cookie header)
* at least 20 cookies per unique host or domain name
User agents created for specific purposes or for limited-capacity
devices should provide at least 20 cookies of 4096 bytes, to ensure
that the user can interact with a session-based origin server.
The information in a Set-Cookie response header must be retained in
its entirety. If for some reason there is inadequate space to
store
the cookie, it must be discarded, not truncated.
Applications should use as few and as small cookies as possible,
and
they should cope gracefully with the loss of a cookie.
6.3.1 Denial of Service Attacks
User agents may choose to set an upper bound on the number of
cookies
to be stored from a given host or domain name or on the size of the
cookie information. Otherwise a malicious server could attempt to
flood a user agent with many cookies, or large cookies, on
successive
responses, which would force out cookies the user agent had
received
from other servers. However, the minima specified above should
still
be supported.
- --
Cheers,
Graham
http://www.linkedin.com/in/ghiggins
-----BEGIN PGP SIGNATURE-----
iEYEARECAAYFAkynTsgACgkQOsmLt1NhivxIPgCeMs1pYj3l/8COobehgwol9SPw
ovYAmgMPMOeu46yNOwUgC0roovecRAo9iQCVAgUBTKdOyFnrWVZ7aXD1AQJTJwQA
1BFfcrQmT+ad2IfJW7p+ze+6SF5eAyynp24wkAGzO7BA3fdhY2l1NRZF+CKjD7Lg
zshCfjG5sZvMLfuKPK1kFCiepTI3ch7bTfs3+xWppAu5ghzgpqRRj8d9xjq8s1bH
K7PWFxoXIVx8tmDuCzNq8rcMuBjTDnsXMFyK6P2+u9Y=
=n+N1
-----END PGP SIGNATURE-----
--
You received this message because you are subscribed to the Google Groups
"pylons-discuss" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/pylons-discuss?hl=en.