Как лучше всего реализовать «запомнить меня» для веб-сайта?
Я хочу, чтобы на моем веб-сайте был установлен 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 при этом функцию «запомнить меня»?
- В Security SE есть очень полезная ин ...
Ответ #1
Ответ на вопрос: Как лучше всего реализовать «запомнить меня» для веб-сайта?
Улучшенные рекомендации по использованию файлов cookie постоянного входа
Вы можете использовать эту стратегию, описанную 9X_cookie here as best practice (2006) или an updated strategy described here (2015):
- Когда пользователь успешно входит в систему с установленным флажком «Запомнить меня», выдается файл cookie входа в дополнение к стандартному файлу cookie управления сеансом.
- Файл cookie для входа содержит идентификатор серии и токен. Серия и токен — это неугадываемые случайные числа из достаточно большого пространства. Оба хранятся вместе в таблице базы данных, токен хешируется (sha256 в порядке).
- Когда незарегистрированный пользователь посещает сайт и представляет файл cookie для входа, идентификатор серии ищется в базе данных.
- Если присутствует идентификатор серии и хэш токена совпадает с хэшем для этого идентификатора серии, пользователь считается аутентифицированным. Генерируется новый токен, новый хеш для токена сохраняется поверх старой записи, и пользователю выдается новый файл cookie для входа (можно повторно использовать идентификатор серии ).
- Если серия присутствует, но токен не совпадает, предполагается кража. Пользователь получает строго сформулированное предупреждение, и все запомненные сеансы пользователя удаляются.
- Если имя пользователя и серия отсутствуют, файл cookie для входа игнорируется.
Такой подход обеспечивает 9X_cookies эшелонированную защиту. Если кому-то удастся 9X_security сделать утечку таблицы базы данных, это 9X_vulnerability не даст злоумышленнику возможности выдать 9X_vulnerability себя за пользователя.
- @roverred Если вы просто используете длинный токен и уничтожаете все сеансы для пользователя при получении любого недопустимого токена, ...
Ответ #2
Ответ на вопрос: Как лучше всего реализовать «запомнить меня» для веб-сайта?
Сохраните их UserId и RememberMeToken. Когда 9X_web-security они входят в систему с пометкой «Запомнить 9X_cookies меня», генерируют новый RememberMeToken 9X_web-security (который аннулирует любые другие машины, помеченные 9X_cookie как «запомнить меня»).
Когда они вернутся, найдите 9X_cookie их по токену "запомнить меня" и убедитесь, что 9X_web-security UserId совпадает.
Ответ #3
Ответ на вопрос: Как лучше всего реализовать «запомнить меня» для веб-сайта?
Я бы сохранил идентификатор пользователя 9X_web-security и токен. Когда пользователь возвращается 9X_cookies на сайт, сравните эти две части информации 9X_vulnerability с чем-то постоянным, например, с записью 9X_security в базе данных.
Что касается безопасности, просто 9X_vulnerabilities не кладите туда ничего, что позволит кому-либо 9X_security изменить файл cookie для получения дополнительных 9X_vulnerabilities преимуществ. Например, не храните их группы 9X_cybersecurity пользователей или их пароли. Все, что может 9X_security быть изменено с целью обойти вашу безопасность, не 9X_cookies должно храниться в файлах cookie.
Ответ #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
на основе его ответа):
- Перехватывая его по незащищенной линии (перехват пакетов / захват сеанса)
- Посредством прямого доступа к браузеру пользователя (через вредоносное ПО или физический доступ к ящику).
- Читая его из базы данных сервера (возможно, SQL-инъекция, но может быть что угодно)
- С помощью XSS-взлома (или аналогичного эксплойта на стороне клиента)
- 1. HTTPS предназначен для предотвращения этого. 2. Оставаться в системе - это ...
-
9
-
2
-
1
-
1
-
10
-
9
-
1
-
3
-
1
-
10
-
9
-
9
-
3
-
4
-
7
-
4
-
5
-
15
-
5
-
2
-
3
-
7
-
3
-
2
-
4
-
4
-
4
-
5
-
6
-
1
-
4
-
3
-
8
-
5
-
1
-
2
-
6
-
1
-
1
-
1
-
7
-
4
-
2
-
20
-
2
-
3
-
18
-
8
-
3
-
5