Почему незаконные куки-файлы отправляются браузером и принимаются веб-серверами (RFC 2109, 2965)? - PullRequest
5 голосов
/ 23 мая 2010

Согласно RFC 2109, значение cookie 2965 может быть либо HTTP-токеном, либо строкой в ​​кавычках, и токен не может содержать символы, отличные от ASCII. RFC2965

Определение HTTP RFC 2068 и 2616 HTTP: http://tools.ietf.org/html/rfc2616#page-16

Однако я обнаружил, что браузер Firefox (3.0.6) отправляет куки с utf-8 строк как есть и три веб-сервера, которые я тестировал (apache2, lighttpd, nginx), передают эту строку как есть в приложение.

Например, необработанный запрос из браузера:

$ 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

И необработанный ответ apache, nginx и lighttpd HTTP_COOKIE Переменная CGI:

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

Что мне не хватает?

Ответы [ 2 ]

3 голосов
/ 23 мая 2010

RFC 2109 (февраль 1997 г.) устарел и был заменен RFC 2965 (октябрь 2000 г.) в соответствии с Официальными стандартами Интернет-протокола (STD 1, RFC 5000). ) .

Вас также может заинтересовать более свежий проект от 7 марта 2010 г. с пересмотром 2965.

Единственное определение токена в 2965:

неофициально, последовательность не специальных, не пробельных символов

Я бы не стал считать, что UTF-8 полностью запрещен этим определением - только символы, которые могут быть ошибочно приняты за символы управления / синтаксиса.

2 голосов
/ 18 июня 2013

RFC 2965 устарел RFC 6265 .Согласно этому rfc:

Имя файла cookie должно быть токеном, который состоит из печатных символов ascii без () <> @,;: \ "/ []? = {} SPACE TAB

Значение cookie состоит из печатных символов ascii без пробела",;\ с возможностью быть заключенным в кавычки

...