Какие некоторые вещи могут привести к сбою / исчезновению файлов cookie сеанса на стороне клиента? Как я могу сделать свою сеансовую систему более надежной?

#session #cookies

#сеанс #файлы cookie

Вопрос:

У меня на моем веб-сайте очень простая система сеансов: пользователь входит в систему, и ответ об успешном выполнении содержит токен сеанса. Затем токен сеанса сохраняется в виде файла cookie без истечения срока действия ( expires=Fri, 31 Dec 9999 23:59:59 GMT ) и корневого пути ( path=/ ).).

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

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

Какие некоторые вещи могут вызвать это (я ожидаю, что по крайней мере в некоторых случаях это какие-то странные настройки браузера / ОС вне моего контроля)? Какими способами я могу предотвратить это, не обязательно зная причину?

Комментарии:

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

2. Итак, это не так надежно, как вы думаете (хотя, по общему признанию, в идеальном мире это должно быть адекватно).

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

Ответ №1:

google Chrome, Firefox и другие браузеры планируют отказаться от файлов cookie в ближайшем будущем source1, вот что вам нужно знать. о GDPR и почему так.

Общие правила ЕС по защите данных (GDPR) позволяют пользователям из Европы контролировать активацию файлов cookie и трекеров, которые собирают их личные данные.

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

здесь обсуждается более надежный метод хранения постоянных данных на стороне клиента, вы даже можете хранить целые базы данных с помощью этих методов, описанных на веб-странице MDN. MDN = Mozilla developer Network.

  • Хранилище на стороне клиента: Ссылка

  • Web Storage API: ССЫЛКА

  • IndexedDB: Ссылка

  • localStorage: LINK (следующая лучшая альтернатива для файлов cookie)

Основные моменты localStorage API:

localStorage делает то же самое, но сохраняется даже при закрытии и повторном открытии браузера. перезагрузка системы ie не влияет на это.

  • Хранит данные без даты истечения срока действия и
  • очищается только с помощью JavaScript или очистки кэша браузера / локально сохраненных данных.
  • Лимит хранилища не ограничен 5 МБ!

Комментарии:

1. Спасибо! Мне все еще не ясно, почему файлы cookie сеанса непреднамеренно теряются, но localStorage кажется хорошим запасным вариантом, чтобы сделать его более стабильным!

Ответ №2:

Возможно, вы перенаправляете домены? Итак, например: вы УСТАНОВИЛИ cookie ok productlogin.com и вы перенаправляете на product.com или любой другой сервер, на котором вы затем захотите ПРОЧИТАТЬ файл cookie? Потому что это не сработает.

Также может быть, что ваше приложение запрашивает неправильный файл cookie. Вы сопоставляете один и тот же сеанс? Нам может помочь, если у вас есть какой-то код для совместного использования.