Почему я должен использовать куки, кроме как для хранения идентификатора сессии?
Для HTTP, насколько я понимаю, есть два способа хранить данные, принадлежащие клиенту, и переводить какое-либо состояние в соединение браузера-webcontainer без сохранения состояния: 1) Данные, хранящиеся в файлах cookie на стороне клиента - или 2) Сеанс Идентификатор, сохраненный в cookie, и связанные данные, хранящиеся в веб-контейнере на стороне сервера. Когда я сравниваю эти две возможности, я не могу придумать причину, почему нужно идти первым путем. Но, тем не менее, когда я просматриваю куки моего браузера, я вижу много данных, хранящихся в них.
- Веб-контейнер (например, tomcat) может хранить произвольные данные вместе с идентификатором сеанса. Размер файла cookie весьма ограничен.
- Файлы cookie более уязвимы, так как они хранятся на стороне клиента. Хранить данные на стороне сервера, как мне кажется, просто более безопасно.
- И cookie, и webcontainer-сессии могут определять даты истечения срока действия.
- И браузер, и веб-контейнер сохраняют свои данные при перезапуске.
Может кто-нибудь придумать сценарий, в котором использование файлов cookie для хранения данных сеанса имеет преимущества или даже необходимо?
1 ответ
Проблема, заключающаяся в том, чтобы полагаться исключительно на сеанс, состоит в том, что для ограничения использования памяти сервером данные сеанса должны быть удалены через некоторое время, например, 20 минут по умолчанию для ASP.NET.
Таким образом, если пользователи вашего сайта должны войти в систему, и вы хотите дать им возможность "запомнить меня", ваши пользователи будут выведены из системы после определенного периода бездействия, если вы используете сеанс для этой цели.
Самый простой способ реализовать это - сохранить зашифрованный файл cookie с датой истечения срока действия, которая позволит пользователю аутентифицироваться в более позднее время.
Написав это, чтобы пользователи могли завершать свои сеансы удаленно, такие сайты, как Gmail и Facebook, не полагаются исключительно на значение cookie для аутентификации, но они, вероятно, используют специальное хранилище для этих сеансов, а не сеанс общего назначения.