Как лучше всего реализовать «запомнить меня» для веб-сайта?

Я хочу, чтобы на моем веб-сайте был установлен 9X_cookies флажок, который пользователи могли бы нажимать, чтобы 9X_vulnerability им не приходилось входить в систему каждый 9X_web-security раз, когда они посещают мой веб-сайт. Я 9X_vulnerability знаю, что мне нужно будет сохранить файл 9X_cookies cookie на их компьютере, чтобы реализовать 9X_web-security это, но что должно содержаться в этом файле 9X_cookie cookie?

Кроме того, существуют ли распространенные 9X_secure ошибки, на которые следует обращать внимание, чтобы 9X_cybersecurity этот файл cookie не представлял уязвимости 9X_cookies безопасности, которой можно было бы избежать, сохранив 9X_web-security при этом функцию «запомнить меня»?

548
3

  • В Security SE есть очень полезная ин ...
4
Общее количество ответов: 4

Ответ #1

Ответ на вопрос: Как лучше всего реализовать «запомнить меня» для веб-сайта?

Улучшенные рекомендации по использованию файлов cookie постоянного входа

Вы можете использовать эту стратегию, описанную 9X_cookie here as best practice (2006) или an updated strategy described here (2015):

  1. Когда пользователь успешно входит в систему с установленным флажком «Запомнить меня», выдается файл cookie входа в дополнение к стандартному файлу cookie управления сеансом.
  2. Файл cookie для входа содержит идентификатор серии и токен. Серия и токен — это неугадываемые случайные числа из достаточно большого пространства. Оба хранятся вместе в таблице базы данных, токен хешируется (sha256 в порядке).
  3. Когда незарегистрированный пользователь посещает сайт и представляет файл cookie для входа, идентификатор серии ищется в базе данных.
    1. Если присутствует идентификатор серии и хэш токена совпадает с хэшем для этого идентификатора серии, пользователь считается аутентифицированным. Генерируется новый токен, новый хеш для токена сохраняется поверх старой записи, и пользователю выдается новый файл cookie для входа (можно повторно использовать идентификатор серии ).
    2. Если серия присутствует, но токен не совпадает, предполагается кража. Пользователь получает строго сформулированное предупреждение, и все запомненные сеансы пользователя удаляются.
    3. Если имя пользователя и серия отсутствуют, файл cookie для входа игнорируется.

Такой подход обеспечивает 9X_cookies эшелонированную защиту. Если кому-то удастся 9X_security сделать утечку таблицы базы данных, это 9X_vulnerability не даст злоумышленнику возможности выдать 9X_vulnerability себя за пользователя.

571
27

  • @roverred Если вы просто используете длинный токен и уничтожаете все сеансы для пользователя при получении любого недопустимого токена, ...

Ответ #2

Ответ на вопрос: Как лучше всего реализовать «запомнить меня» для веб-сайта?

Сохраните их UserId и RememberMeToken. Когда 9X_web-security они входят в систему с пометкой «Запомнить 9X_cookies меня», генерируют новый RememberMeToken 9X_web-security (который аннулирует любые другие машины, помеченные 9X_cookie как «запомнить меня»).

Когда они вернутся, найдите 9X_cookie их по токену "запомнить меня" и убедитесь, что 9X_web-security UserId совпадает.

11
0

Ответ #3

Ответ на вопрос: Как лучше всего реализовать «запомнить меня» для веб-сайта?

Я бы сохранил идентификатор пользователя 9X_web-security и токен. Когда пользователь возвращается 9X_cookies на сайт, сравните эти две части информации 9X_vulnerability с чем-то постоянным, например, с записью 9X_security в базе данных.

Что касается безопасности, просто 9X_vulnerabilities не кладите туда ничего, что позволит кому-либо 9X_security изменить файл cookie для получения дополнительных 9X_vulnerabilities преимуществ. Например, не храните их группы 9X_cybersecurity пользователей или их пароли. Все, что может 9X_security быть изменено с целью обойти вашу безопасность, не 9X_cookies должно храниться в файлах cookie.

10
0

Ответ #4

Ответ на вопрос: Как лучше всего реализовать «запомнить меня» для веб-сайта?

Самостоятельно исследуя постоянные сеансы, я 9X_security обнаружил, что это просто не стоит риска 9X_security для безопасности. Используйте его, если 9X_web-security вам абсолютно необходимо, но вы должны рассматривать 9X_security такой сеанс только со слабой аутентификацией 9X_web-security и принудительно выполнять новый вход для 9X_remember-me всего, что может быть полезно для злоумышленника.

Причина, конечно 9X_remember-me же, в том, что ваши файлы cookie, содержащие 9X_secure ваш постоянный сеанс, очень легко украсть.

4 9X_secure способа украсть ваши файлы cookie (из a comment by Jens Roland на 9X_cookies странице @splattne на основе его ответа):

  1. Перехватывая его по незащищенной линии (перехват пакетов / захват сеанса)
  2. Посредством прямого доступа к браузеру пользователя (через вредоносное ПО или физический доступ к ящику).
  3. Читая его из базы данных сервера (возможно, SQL-инъекция, но может быть что угодно)
  4. С помощью XSS-взлома (или аналогичного эксплойта на стороне клиента)

5
1

  • 1. HTTPS предназначен для предотвращения этого. 2. Оставаться в системе - это ...