Screatch
@Screatch
Ruby On Rails front-end developer

Реализация функционала "Запомнить меня"?

Ломаю голову над реализацией функционала «Запомнить меня». Пока сошёлся на том что каждый раз когда пользователь заходит на сайт с галкой «Запомнить меня», в базу записывается новый случайно сгенерированный токен. В куку в зашифрованном виде записывается user_id и token.



В расшифрованном виде кука выгляит следующем образом

1-dfbb8bd5b577615c95cd2c2qc3fad362<br/>



где 1 это id пользователя а через тире соответственно сам токен.



В зашифрованном виде кука выглядит примерно так:

BjMHKQe0vNPBuLBNVXw3xJAOdnIK1OlS3bGrjB3O1gl2H1gqOZ4k7yPT3VPEUke7J%2BbzHDzUMCuF%2FWeLVBsM7Q%3D%3D-t20GNsMOkstr6HD3W%2FKlb56%2FZj9cuinwYrk8QTvFxK5Z8d2jM8ntLv1WxnfagirzgQSxqDsEHj1HaBXIYXeBbQ%3D%3D




При входе, происходит расшифровка куки и проверка, если токен из куки совпадает с токеном в базе, происходит вход.



И всё вроде бы работает, но меня гнетёт мысль, что если кука будет похищена, злоумышленник получит полный доступ над аккаунтом.



Как ещё можно предохраниться?
  • Вопрос задан
  • 18285 просмотров
Пригласить эксперта
Ответы на вопрос 5
david_mz
@david_mz
веб-разработчик: php, javascript, go
Тема давняя, но на случай если кто-то ещё сюда зайдёт — есть вот такой вариант работы с авторизационными куками: david-m.livejournal.com/1267236.html
Ответ написан
Комментировать
TheHorse
@TheHorse
Можно просто указывать expires на пару лет вперед при установленной галочке.
Ответ написан
xaker1
@xaker1
Я реализовывал не много проще. Кука «запомнить меня» — кидается кука, в которой md5 склейки id+md5(passwd)+ip
+ еще одну куку с логином.
Если такая кука есть — берем из базы соответствующие данные пользователя, проверяем склейку — если верно то авторизовываем. Изменился ip — запомнить меня не срабатывает.
Можно для большей надежности еще и данные о браузере в склейку писать.
Ответ написан
VenomBlood
@VenomBlood
Полный доступ не получит. Ведь для смены e-mail/логина/пароля — нужно ввести текущий пароль, и есть кука — нет куки — не важно.
Ответ написан
@FedLab
как вариант — привязка к ІР (или части его на крайний случай)
как вариант токен формировать с учетом «HTTP_USER_AGENT»
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы