Django - Разница между сессиями базы данных и сессией на основе файлов cookie?

Прошел Django Documentation и нашел это " https://docs.djangoproject.com/en/1.4/topics/http/sessions/#using-database-backed-sessions". В чем разница между сессиями с поддержкой базы данных и сеансами на основе файлов cookie? В чем преимущество одного над другим? И каковы недостатки?

Ответы

Ответ 1

A Session используется веб-сайтами для хранения application состояние для посетителей при загрузке нескольких страниц.

Сеансы файлов cookie

  • Сохраняйте свои данные на стороне клиента/пользователя
  • Работайте гладко, когда у вас есть кластер веб-серверов.
  • Браузеры обычно ограничивают файлы cookie максимальным размером около 4 килобайт на домен, поэтому ограниченный размер данных сеанса
  • Cookies могут быть установлены на длительный срок службы, что означает, что данные, хранящиеся в cookie сеанса, могут храниться в течение нескольких месяцев, если не лет (пользователи могут очищать файлы cookie, хотя)
  • Должен быть установлен с флагами HttpOnly и Secure, иначе его можно легко украсть с помощью XSS

Сеансы базы данных

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

Сеансы файлов cookie и сеансов базы данных

| Feature                       | Cookie Sessions | Database Sessions |
|-------------------------------|-----------------|-------------------|
| Works without database        | Yes             | No                |
| Can store sensitive user data | No*             | Yes               |

* Может хранить указатели, ссылающиеся на конфиденциальные данные пользователя на сервере, а не на сами конфиденциальные данные.

Обе сессии cookie и сеансы базы данных работают одинаково, единственное различие заключается в том, где хранятся данные. Django по умолчанию относится к сеансам базы данных, а Flask по умолчанию для сеансов cookie.


Дополнительная информация:
https://en.wikipedia.org/wiki/Session_(computer_science)
http://php.about.com/od/learnphp/qt/session_cookie.htm
http://wonko.com/post/why-you-probably-shouldnt-use-cookies-to-store-session-data
http://www.tuxradar.com/practicalphp/10/1/0