В чем разница между сессией и cookie? - PullRequest
34 голосов
/ 08 марта 2009

В чем разница между сеансом и файлом cookie?

Какие обстоятельства следует использовать каждому?

Ответы [ 8 ]

57 голосов
/ 08 марта 2009

Сеансы

Сеансы сохраняются для каждого пользователя в памяти (или альтернативно Session-State ) на сервере. Сессии используют куки ( ключ сессии ), чтобы привязать пользователя к сессии. Это означает, что никакие «конфиденциальные» данные не сохраняются в куки на компьютере пользователя.

Сеансы обычно используются для поддержания состояния при навигации по веб-сайту. Тем не менее, они также могут быть использованы для хранения часто используемых объектов. Только если для состояния сеанса задано значение InProc, а для другого режима состояния сеанса объект также должен быть сериализуемым.

Session["userName"] = "EvilBoy";

if(Session["userName"] != null)
  lblUserName.Text = Session["userName"].ToString();

печенье

Cookies хранятся для каждого пользователя на компьютере пользователя. Файл cookie - это, как правило, немного информации. Cookies обычно используются для простых пользовательских настроек цветовых предпочтений и т. Д. В cookie не должно храниться конфиденциальной информации.

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

//add a username Cookie
Response.Cookies["userName"].Value = "EvilBoy";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(10);
//Can Limit a cookie to a certain Domain
Response.Cookies["domain"].Domain = "Stackoverflow.com";

//request a username cookie
if(Request.Cookies["userName"] != null)
   lblUserName.Text = Server.HtmlEncode(Request.Cookies["userName"].Value);

Sidenote

Стоит отметить, что ASP.NET также поддерживает cookieless state-management

14 голосов
/ 09 марта 2009

Cookie - это хранилище ваших переменных на стороне клиента. Хранится на клиентском компьютере браузером физически. Это область применения машины. Разные пользователи на одном компьютере могут читать один и тот же файл cookie.

Из-за этого:

  1. Вы не должны хранить конфиденциальные данные в cookie.
  2. Вы не должны хранить данные, принадлежащие одной учетной записи пользователя.
  3. Cookie не влияет на ресурсы сервера.
  4. Срок действия файла cookie истекает в указанную вами дату.

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

Из-за этого:

  1. Вы можете сохранить конфиденциальные данные в сеансе.
  2. Вы не должны сохранять все в сеансе. это пустая трата ресурсов сервера.
  3. После того, как пользователь закроет браузер, время ожидания сеанса удаляет всю информацию. (по умолчанию 20 минут)
11 голосов
/ 08 марта 2009

Cookie - это строка идентификации, сохраняемая сервером (у которого есть домен) в браузере пользователя, который посещает сервер / домен.

Сеанс - это единица возможных переменных, состояния, настроек, когда определенный пользователь обращается к серверу / домену в течение определенного периода времени. Вся информация о сеансе хранится на сервере в традиционной модели (!)

Поскольку многие одновременные пользователи могут одновременно посещать сервер / домен, сервер должен иметь возможность различать много разных одновременных сеансов и всегда назначать правильный сеанс нужному пользователю. (И ни один пользователь не может «украсть» сеанс другого использования)

Это делается через cookie. Файл cookie, который хранится в браузере и который в этом случае должен быть случайной комбинацией, такой как s73jsd74df4fdf (поэтому его нельзя угадать), отправляется на каждый запрос от браузера на сервер, и сервер может назначать и использовать правильный сеанс для его ответы (просмотров страницы)

Файл cookie позволяет серверу распознавать браузер / пользователя. Сеанс позволяет серверу запоминать информацию между различными просмотрами страниц.

2 голосов
/ 05 июля 2009

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

1 голос
/ 09 апреля 2014

Сеанс является объектом на стороне сервера, какие передачи или доступа к данным между вызовом страницы.
Cookies - это объект, который является клиентской / клиентской машиной и хранит некоторую текстовую информацию браузера и сервера

1 голос
/ 27 мая 2011

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

0 голосов
/ 27 января 2015

Кажется, есть некоторая путаница относительно того, что такое cookie-файл сеанса.

Во-первых, когда мы говорим о сессионных куки - это не имеет ничего общего с сессиями ASP.Net. Аналогично, сеансовые куки не имеют никакого отношения к процессам на стороне сервера или кешированию.

Сеансовый файл cookie - это не что иное, как файл cookie, срок действия которого истекает после окончания сеанса браузера. Чтобы создать сессионный cookie - не указывайте срок его действия. При этом файл cookie сохраняется в памяти и удаляется при удалении браузера.

0 голосов
/ 27 мая 2011
  • Основное отличие файлов cookie от сеансов состоит в том, что файлы cookie хранятся в браузере пользователя, а сеансы - нет. Эта разница определяет, для чего лучше всего использовать каждый.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...