“Сохраните Меня, Вошел в систему” - лучший подход

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

Для меня, снимая тот флажок решил мои проблемы. Если это не имеет место для Вас, обновите свой вопрос с большей информацией о Вашей установке и мышь, которую Вы используете.

245
задан Jimbo 27 June 2013 в 00:16
поделиться

6 ответов

Уведомление о безопасности : основывать cookie на MD5-хэше детерминированных данных - плохая идея; лучше использовать случайный токен, полученный из CSPRNG. См. ответ ircmaxell на этот вопрос, чтобы узнать о более безопасном подходе.

Обычно я делаю что-то вроде этого:

  1. Пользователь входит в систему с помощью «держать меня в системе»
  2. Создать сеанс
  3. Создать файл cookie с именем SOMETHING, содержащий: md5 (соль + имя пользователя + ip + соль) и файл cookie с именем somethingElse, содержащий идентификатор
  4. Сохранение файла cookie в базе данных
  5. Пользователь что-то делает и уходит ----
  6. Пользователь возвращается, проверяет наличие somethingElse cookie, если он существует, получить старый хеш из базы данных для этого пользователя, проверить содержимое cookie ЧТО-ТО соответствует хешу из базы данных, который также должен совпадать с вновь рассчитанным хешем (для ip) таким образом: cookieHash == databaseHash == md5 (salt + username + ip + salt), если они есть, переходят к 2, если они не переходят к 1

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

Также вы можете использовать sha1 вместо md5 (или любой другой алгоритм)

93
ответ дан 23 November 2019 в 03:04
поделиться

Есть две очень интересные статьи, которые я обнаружил в поисках идеального решения проблемы «запомнить меня»:

23
ответ дан 23 November 2019 в 03:04
поделиться

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

В основном, вы не сохраняете userId в cookie. Вы храните одноразовый токен (огромную строку), который пользователь использует для получения своего старого сеанса входа в систему. Затем, чтобы сделать его действительно безопасным, вы запрашиваете пароль для тяжелых операций (например, изменение самого пароля).

6
ответ дан 23 November 2019 в 03:04
поделиться

Создайте хэш, возможно, с секретом, известным только вам, а затем сохраните его в своей базе данных, чтобы его можно было связать с пользователем. Должно работать достаточно хорошо.

4
ответ дан 23 November 2019 в 03:04
поделиться

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

Я слышу, как вы спрашиваете: «Почему 2 дня? Почему не 2 недели? ". Это связано с тем, что использование сеанса в PHP автоматически продлевает срок действия. Это связано с тем, что истечение срока действия сеанса в PHP на самом деле является тайм-аутом простоя.

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

0
ответ дан 23 November 2019 в 03:04
поделиться

Я бы рекомендовал подход, упомянутый Стефаном (т.е. следовать рекомендациям в Improved Persistent Login Cookie Best Practice), а также рекомендую убедиться, что ваши cookies являются HttpOnly cookies, чтобы они не были доступны для потенциально вредоносного JavaScript.

5
ответ дан 23 November 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: