Почему популярные сайты хранят очень сложные данные, относящиеся к сеансу, в файлах cookie - и что все это значит?

19

Как веб-разработчики, мы все узнаем, что сессии помогают преодолеть проблемы, связанные с природой HTTP без состояния. Мы создаем уникальный идентификатор сеанса и отправляем его в браузер - и когда браузер отправляет нам тот же идентификатор обратно, мы легко идентифицируем пользователя.

Все это звучит довольно просто и НЕ так сложно реализовать на любом языке.

СЕЙЧАС

Посмотрите на следующие скриншоты, которые я сделал. Они показывают виды файлов cookie, которые популярные магазины веб-сайтов. Похоже, что они хранят несколько идентификаторов сеансов, или они пытаются скрыть фактический идентификатор, установив так много файлов cookie, или это что-то очень специализированное, меры безопасности, которые они принимают, чтобы предотвратить перехват сеанса и другие связанные с этим проблемы. Или что угодно.

Gmail (до входа)

введите описание изображения здесь

Gmail (после входа в систему)

введите описание изображения здесь

facebook

введите описание изображения здесь

StackExchange

введите описание изображения здесь

(Не волнуйтесь, вы не можете украсть мою сессию - она ​​устаревшая и неполная :))

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

Еще один вопрос: во многих случаях значения в файлах cookie выглядят так, как будто они закодированы в URL - почему так?

treecoder
источник

Ответы:

21
  1. Иногда нецелесообразно хранить определенные данные в таблице сеансов в базе данных. Если определенные данные будут обновляться много раз, это может также сильно затормозить базу данных. Если это так, и данные не слишком важны, их лучше хранить в отдельном файле cookie.

  2. Когда (1) происходит, вам приходится иметь дело с лимитом 4 КБ на файл cookie, поэтому хранение всех данных сеанса в файле cookie в одном файле cookie - плохая идея.

  3. Было бы неплохо иметь возможность хранить все в минимально необходимом количестве файлов cookie, но сложности проекта затрудняют это. Некоторые приложения разрабатываются несколькими командами . Иногда то, что вы видите как один веб-сервер, на самом деле является прокси-сервером, который взаимодействует с несколькими различными кластерами веб-серверов, перенаправляя различные разделы сайта в разные кластеры, каждый из которых имеет свой собственный набор файлов cookie.

  4. Печенье дешевое. Вы - исключение из правила - никто не заглядывает в их магазин печенья, чтобы узнать, сколько у них файлов cookie. И есть небольшая выгода для производительности, пытаясь объединить все данные сеанса на стороне клиента в как можно меньшее количество файлов cookie.

Майкл Слэйд
источник
Я также исключение из правил.
Майкл Слэйд