2010-05-23 4 views
4

Selon la RFC 2109, la valeur du cookie 2965 peut être un jeton HTTP ou une chaîne entre guillemets, et le jeton ne peut pas inclure de caractères non-ASCII.Pourquoi les cookies illégaux sont-ils envoyés par le navigateur et reçus par les serveurs Web (RFC 2109, 2965)?

  1. RFC Cookie 2109 et RFC2965
  2. RFC HTTP 2068 et 2616 définition jeton: http://tools.ietf.org/html/rfc2616#page-16

Cependant, j'avais trouvé que le navigateur Firefox (3.0.6) envoie des cookies avec AS- chaîne utf-8 est et trois serveurs Web que j'ai testés (apache2, lighttpd, nginx) transmettent cette chaîne telle quelle à l'application .

Par exemple, la requête brute à partir du navigateur:

$ nc -l -p 8080 
GET /hello HTTP/1.1 
Host: localhost:8080 
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.9) Gecko/2009050519 Firefox/2.0.0.13 (Debian-3.0.6-1) 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: windows-1255,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 300 
Connection: keep-alive 
Cookie: wikipp=1234; wikipp_username=ארתיום 
Cache-Control: max-age=0 

Et la réponse première de apache, nginx et lighttpd HTTP_COOKIE variable CGI:

wikipp=1234; wikipp_username=ארתיום 

Que dois-je manquer?

+2

C'est l'Internet. Les gens utilisent les standards pour allumer les autres sur Usenet, pas pour implémenter leur logiciel. – jrockway

+1

@jrockway Je comprendrais que ce soit un serveur web, mais les 3 plus populaires (Linux)? – Artyom

Répondre

3

RFC 2109 (févr. 1997) est obsolète et a été remplacée par RFC 2965 (oct 2000), selon le Internet Official Protocol Standards (STD 1, RFC 5000).

Vous pouvez également être intéressé par une version plus récente March 7, 2010 draft de réviser 2965.

La seule définition d'un jeton en 2965 est:

informelle, une séquence de non-spéciale, non des espaces -WHITE

Je ne considère pas l'intégralité UTF-8 à cette définition, désavouer - seuls les caractères qui pourraient être confondu avec le contrôle/syntaxe ch les caractères.

+0

Mais selon la nouvelle RFC, la valeur est toujours paire ou jeton, donc cela ne résout pas mon problème – Artyom

+0

Citation complète: "La grammaire suivante utilise la notation, et les jetons DIGIT (chiffres décimaux), jeton (informellement, une séquence de non -special, caractères non-espace blanc), et http_URL de la spécification HTTP/1.1 [RFC2616] pour décrire leur syntaxe. " - Il est donc clair que le jeton ** fait référence ** à RFC2616 (http) et il interdit d'être non-assci – Artyom

+0

Et BTW dans le brouillon que vous avez lié à il est encore plus clair que jeton défini selon ro 2616 HTTP/1.1 RFC – Artyom

1

RFC 2965 a été mis à jour par RFC 6265. Selon ce RFC:

Le nom du cookie doit être un jeton, qui consiste en des caractères ascii imprimables sans () <> @,; : \ "/ []? = {} ONGLET ESPACE

La valeur du cookie est constituée de caractères ascii imprimables sans SPACE",; \ avec la possibilité d'être entouré de citations

Questions connexes