Задать вопрос
@rinaz22

Как сделать безопасный «Запомнить меня» на сайте?

Всем привет. Нужно сделать функцию "Запомнить меня", чтобы пользователь не вводил каждый раз логин и пароль.
Знаю что такое можно реализовать с помощью cookie, но тут вопрос в безопасности со стороны пользователя.
Как предотвратить несанкционированную авторизацию на случи, если у пользователя украдут cookie? Как идентифицировать его, что куки используется не на другом устройстве?
Или может быть есть какой-то другой, более безопасный способ идентификации?
  • Вопрос задан
  • 228 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Сгенерировать сильно уникальный токен, что-нибудь вроде random_bytes(16), положить его в БД и в куки

> Как предотвратить несанкционированную авторизацию на случи, если у пользователя украдут cookie?

Никак. В принципе, вся безопасность современного веба завязана на предположении, что куки не украдут. В супер-важных приложениях, типа банковских, можно дополнительно проверять IP адрес, его подделать невозможно. И при смене адреса просить перелогиниться. Но в обычном приложении это будет скорее неудобством.

> Как идентифицировать его, что куки используется не на другом устройстве?

Ну можно по идее запоминать устройство, по user agent. Но это придется отдельно хранить авторизации на всех устройствах. Но если покрадут куки, то уведут и юзер агент.

Причем все это относится и к обычной авторизации, без функции "Запомнить меня". Так что если эти вопросы до сих пор вас не волновали, то и сейчас по идее не должны.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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