Должен ли я истекать сеанс cookie, когда сеансы обрабатываются на стороне сервера?


5

Единственными данными в файле cookie являются идентификатор сеанса. При его создании нет метки времени истечения срока действия, сеанс всегда оценивается на стороне сервера, чтобы узнать, истек ли срок его действия.

При выходе из системы сеанс уничтожается на стороне сервера. Есть ли какой-то момент в истечении срока действия cookie?

7

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

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

+1

Я почтительно не согласен. Когда вы «рассказываете обозревателю, чтобы избавиться от него», вы также говорите ему, чтобы ** сохранить ** его после того, как пользователь закрыл браузер (до тех пор, пока не пройдет определенное количество времени). Это представляет собой угрозу безопасности, если пользователь не нажал кнопку выхода из системы. См. Мой ответ ниже. 20 дек. 132013-12-20 20:53:18


2

Хотя это не будет представлять прямой риск, я все равно его исчерпаю. Это всего лишь дополнительная строка кода, так почему бы и нет.


0

Нет. На самом деле это вредно.

Технически вы не можете истечь сеансового файла cookie - в тот момент, когда вы установили дату истечения срока действия, он становится persistent cookie.

Я думаю, что вы хотите спросить: «Лучше ли хранить идентификатор сеанса в cookie сеанса или в постоянном cookie?» Я бы рекомендовал cookie сеанса, поскольку он хранится только в памяти и удаляется из кука-файла cookie, когда пользователь закрывает браузер. Если вы используете постоянный файл cookie, он хранится в файловой системе, и он не отбрасывается до истечения срока его действия или пока пользователь не нажмет кнопку выхода из системы - и иногда они забывают. Постоянный файл cookie будет храниться некоторое время, а это значит, что через несколько мгновений появился злоумышленник, откройте браузер и возобновите сеанс пользователя.

  0

Позвольте мне угадать, вы разработчик PHP (или .Net), не так ли? 20 дек. 132013-12-20 23:20:03

  0

Насколько я знаю, атрибут «expires» cookie универсален для всех браузеров независимо от технологии сервера. ASP.NET + MVC, если вы должны знать. 20 дек. 132013-12-20 23:37:16

+1

Дата может быть установлена ​​в прошлом в точке, которую он должен удалить **. **. Только когда он установлен, у него нет даты, поэтому он будет действовать как cookie сеанса. Если вы не доверяете браузеру, чтобы удалить его, вы можете установить значение cookie для другого значения, например. пустая строка. 21 дек. 132013-12-21 13:37:38

  0

Вы не должны предполагать, что пользователь нажмет кнопку выхода из системы (что необходимо, если вы хотите, чтобы сервер установил дату в прошлом), и вы не должны предполагать, что вы можете заставить браузер сделать это - не надежно. Heck, пользователь может даже не включить скрипт. Итак, да, «вы» можете установить дату куки-файла в прошлом, но «вы» не будете там лично, и вы не можете рассчитывать на сервер или браузер, чтобы сделать это в ваше отсутствие. 21 дек. 132013-12-21 23:07:49