avva: (Default)
[personal profile] avva
Разработчики Мозиллы не хотят брать мой код, потому что он расширяет формат файла с cookies несовместимым образом. В принципе, они правы... но теперь это заблокировано, пока не придумают новый формат; а раз уж его придумывать, то много ещё чего надо добавлять. В результате воз стоит на месте уже более полугода.

Вряд ли они согласятся на какой-нибудь kludge в моём исходном коде, позволяющий ему сохранять дополнительную информацию в существующем формате с помощью какого-нибудь некрасивого трюка... Неужели всё закончится тем, что мне придётся самому придумать и написать поддержку нового формата?

Date: 2004-06-29 03:15 pm (UTC)
From: [identity profile] sobaker.livejournal.com
Все прочитал. "В принципе, они правы..." :)

Хотя я бы тоже сделал какой-нибудь несложный kludge с сохранением совместимости. Ну когда еще у cookie появятся новые атрибуты, в конце концов? За это время вполне можно будет переделать формат.

А что, проблема с HttpOnly действительно так актуальна? Кажется, Мозилла не очень подвержена cross-site scripting и т.д.

Date: 2004-06-29 03:46 pm (UTC)
From: [identity profile] avva.livejournal.com
Я придумал расширить поле expires до 64-битного, и 32 дополнительных бита использовать для флагов. Тогда, наверное, старые Мозиллы и другие аппликации, умеющие читать cookies.txt, будут cookies с такими битами считать неправильными, что вполне устраивает. Но тоже не гарантировано.

Можно в одном из логических полей вместо TRUE и FALSE писать TRUE/FALSE итп., вторым значением считая HttpOnly, и не увеличивая количество tab fields. Проблема в том, что тогда старые Мозиллы будут это поле считывать как FALSE и неправильно обращаться с данной cookie. Короче, всё как-то грязно очень получается.

Проблема с HttpOnly не то чтобы ужасно актуальна. Когда-то давно Брэд пожаловался мне, что вот жаль, что только IE это понимает, а то LJ мог бы такие cookies посылать в своих логинах. Мы решили: why not do something about it? и я полез в Мозиллу и написал. Никто не умрёт, если это ещё полгода или год провисит в багзилле, и даже если сгинет там навсегда — но обидно всё-таки за потраченные усилия на изучение и хаканье этого монстра ;-)

Date: 2004-06-29 03:51 pm (UTC)
From: [identity profile] sobaker.livejournal.com
Могу себе представить..

А нельзя просто добавить новое поле в конце? Старая Мозилла наверняка его просто проигнорирует (но я не смотрел код).

Date: 2004-06-29 04:10 pm (UTC)
From: [identity profile] avva.livejournal.com
Да там проблема в том, что последнее поле - data, и может включать в себя что угодно, в том числе tab symbols. Мозилла читает определённое фиксированное количество tab-delimited полей, а потом всё остальное до конца строки - собственно содержимое cookie. Оно полностью free form (ну может перенос строки как-то кодируется, не помню уже), поэтому за ним уже ничего не вставишь ;-)

Date: 2004-06-29 04:31 pm (UTC)
From: [identity profile] jsn.livejournal.com
из этого следует, что новые данные надо размещать на другой строке -- завести выдуманный домен mozilla.prop, и в него в совместимом со страрым формате фигачить что угодно. а?

Date: 2004-06-29 05:08 pm (UTC)
From: [identity profile] avva.livejournal.com
Ага, тоже была такая идея. Но: 1) старая Мозилла может сменить порядок строк, так что придётся много информации повторять, как минимум домен и имя; 2) всё равно уродливо, и полагаю, что они не согласятся :(

Re: Reply to your comment...

Date: 2004-06-29 05:18 pm (UTC)
From: [identity profile] jsn.livejournal.com
да тю, ничего, кроме домена и имени, повторять не придется. зато:
1) формат файла остается стопроцентно совместимым со всей толпой лигаси,
2) никаких xml-депенденсей в коде (там, кажется, этого боялись?)
3) куча места для всей метаинформации, которую они хотят куда-то деть
4) обработка нового формата не требует никаких изменений к парсеру, а
решается одним "after-", который массирует уже распарсенные данные.
5) поддержка версий формата становится тривиальной

Date: 2004-06-30 01:23 am (UTC)
ext_454496: (Default)
From: [identity profile] alexcohn.livejournal.com
во-первых, что мешает LJ посылать HttpOnly флажок если браузер объявляет себя IE?

во-вторых, неужели Mozilla помирает, когда ему попал такой cookie - ну, не сохранит он нового флажка... И что?

в-третьих, разве это критично для LJ? Ведь все равно можнонужно отключать дырки типа cross-site scripting на уровне разборки запросов к серверу.

Date: 2004-06-30 11:18 am (UTC)
From: [identity profile] avva.livejournal.com
во-первых, что мешает LJ посылать HttpOnly флажок если браузер объявляет себя IE?

Некрасиво ;)

во-вторых, неужели Mozilla помирает, когда ему попал такой cookie - ну, не сохранит он нового флажка... И что?

Тоже ничего. Но Брэд не хочет использовать MS-only стандарты.

в-третьих, разве это критично для LJ? Ведь все равно можнонужно отключать дырки типа cross-site scripting на уровне разборки запросов к серверу.

Не критично. Всё это не критичный вопрос, просто "nice to have".

Date: 2004-07-01 09:48 am (UTC)
ext_454496: (Default)
From: [identity profile] alexcohn.livejournal.com
вот то, что комменты не приходят по почте, это хуже ;-)

Мне кажется, что это бред - флажок был создан Микрософтом как расширение стандарта, не нарушающее поведения других браузеров (включая старые версии того же эксплорера). Нет никакой причины его не зажигать на всякий случай.

Некрасиво было бы, например, если бы аналогичный cookie был у Мозиллы и другой у Оперы, причем ни синтаксис, ни функциональность не совпадали бы на 100%. А если бы еще браузер падал с GPF, получив флажок, предназначенный для "чужого", это был бы номер.. Собственно говоря, не так уж давно поддержка HTML так и была устроена. Ох, разленились мы за последнее время.

Date: 2004-06-30 02:03 am (UTC)
From: [identity profile] david-m.livejournal.com
А что, проблема совместимости в данном случае так важна? То есть, нужно поддерживать ситуацию, когда поверх новой мозиллы будет устанавливаться старая? Как-то оно диковато выглядит...

Date: 2004-06-30 11:17 am (UTC)
From: [identity profile] avva.livejournal.com
Старые мозиллы + множество существующих программ, поддерживающих чтение старого формата (напр. разного рода download manager'ы, другие браузеры, делающие import, итд. итп.)

Date: 2004-07-01 12:56 am (UTC)
From: [identity profile] quirrc.livejournal.com
а LJ никогда не посылал httponly? мне почему-то полгода назад показалось, что internetGetCookie не работает для lj cookies, хотя может опять я что-то напутал. (а сейчас точно рабоает, что использовано в семаджике)

Date: 2004-07-01 03:20 am (UTC)
From: [identity profile] avva.livejournal.com
По-моему не посылал.

Date: 2004-06-29 11:56 pm (UTC)
From: [identity profile] whoozle.livejournal.com
а если какой-нибудь префикс к имени ? чтобы старая мозилла считала его инвалидным
[.@#$%~-чтоугодно]session_id например? :)

Date: 2004-06-30 12:49 am (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
Как всё-таки грустно, что в таких случаях применялись текстовые файлы вместо нормальной маленькой БД, в которой можно было бы прозрачно расширить набор полей :-\

Ан не было такой. Зато сейчас есть прелести типа sqlite :)

Date: 2004-06-30 02:18 am (UTC)
From: [identity profile] david-m.livejournal.com
Ну, XML и тогда был.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
2829 30 31   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 2nd, 2026 01:39 am
Powered by Dreamwidth Studios