Как лучше всего реализовать функцию «запомнить меня» на веб-сайте?[закрыто]
-
05-07-2019 - |
Вопрос
Я хочу, чтобы на моем веб-сайте был флажок, который пользователи могли бы щелкнуть, чтобы им не приходилось входить в систему каждый раз, когда они посещают мой веб-сайт.Я знаю, что для этого мне понадобится сохранить файл cookie на их компьютере, но что должно содержаться в этом файле cookie?
Кроме того, существуют ли распространенные ошибки, на которые следует обратить внимание, чтобы этот файл cookie не представлял собой уязвимость безопасности, которой можно было бы избежать, сохраняя при этом функцию «запомнить меня»?
Решение
Улучшенная практика использования файлов cookie для постоянного входа в систему
Вы можете использовать эту стратегию, описанную здесь, в качестве наилучшей практики (2006) или описанная здесь обновленная стратегия (2015): р> <Ол>
Этот подход обеспечивает глубокую защиту. Если кому-то удается утечь таблицу базы данных, это не дает злоумышленнику открытой двери для выдачи себя за пользователей.
Другие советы
Я бы сохранил идентификатор пользователя и токен. Когда пользователь возвращается на сайт, сравните эти две части информации с чем-то постоянным, например с записью в базе данных.
Что касается безопасности, просто не помещайте туда ничего, что позволило бы кому-либо изменить cookie, чтобы получить дополнительные преимущества. Например, не храните их группы пользователей или их пароль. Все, что можно изменить, чтобы обойти вашу безопасность, не должно храниться в cookie.
Сохраните их UserId и RememberMeToken. Когда они регистрируются с пометкой «Помни меня», генерируют новый RememberMeToken (который делает недействительными любые другие машины, помеченные как «Помни меня»).
Когда они вернутся, найдите их по токену Запомнить меня и убедитесь, что идентификатор пользователя совпадает.
Исследуя постоянные сеансы, я обнаружил, что риск безопасности просто не стоит.Используйте его, если вам абсолютно необходимо, но вам следует рассматривать такой сеанс со слабой аутентификацией и принудительно вводить новый логин для всего, что может иметь ценность для злоумышленника.
Причина, конечно, в том, что ваши файлы cookie, содержащие ваш постоянный сеанс, очень легко украсть.
4 способа украсть ваши файлы cookie (из комментарий Йенса Роланда на странице @splattne
основывал свой ответ на):
- Путем перехвата по незащищенной линии (перехват пакетов/перехват сеанса)
- Путем прямого доступа к браузеру пользователя (через вредоносное ПО или физический доступ к ящику)
- Прочитав его из базы данных сервера (вероятно, SQL-инъекция, но может быть что угодно)
- С помощью взлома XSS (или аналогичного эксплойта на стороне клиента)