Будьте в курсе лучших практик: как пользовательское имя в cookie делает его более безопасным?

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

Главный ответ заключается в том, чтобы реализовать это: http://jaspan.com/improved_persistent_login_cookie_best_practice

Резюме:

Используйте случайное число как токен серии, а другой - как токен входа. Поместите их в файл cookie "Оставайтесь в системе" вместе с именем пользователя. Назначьте второй обычный cookie сеанса. Каждый раз, когда пользователь приходит без cookie сеанса, используйте cookie для входа в систему. Выдать новый, на этот раз с новым случайным логином входа, сохраняя серию Тоже же.

Зачем включать имя пользователя? Как это помогает? Тока серии должно быть достаточно, чтобы идентифицировать пользователя и серию. В этом подходе был добавлен Token Series Token, чтобы предотвратить DoS-атаку, когда злоумышленник просто догадывается обо всех именах пользователей и сразу же ударяет по сайту, выгружая всех. Но почему имеет смысл оставить имя пользователя вообще?

Ответ 1

Имя пользователя и номер просматриваются как пара на сервере перед выпуском нового файла cookie сеанса. Без имени пользователя он будет менее безопасным (может воспроизводиться с использованием другого пользователя, если вы украли номер) и сложнее искать.

Ответ 2

Мое предположение:

Имя пользователя для аудита. Если вам требуется, чтобы клиент отправил его вместе с токеном для аутентификации, вы знаете, какой пользователь пытается пройти аутентификацию. Это позволяет вам реагировать некорректным образом на неправильный токен.

Если вы запрашиваете токен во время авторизации, вы не знаете, какой пользователь на самом деле его пытается, а в матче просто предоставить кому-то доступ, но не может ничего сделать при ошибке. Кто-то может просто попытаться вслепую пройти через них.

С учетом этого позвольте сказать, что мы соглашаемся на использование как имени пользователя, так и токена. Теперь, если токен неверен, мы можем удалить все остальные токены для этого пользователя. Но это открывает систему для DOS. Атакующий может вывести кого угодно по своему усмотрению. Поэтому для этой серии добавляется.

Это не должно быть имя пользователя, другая информация, которая позволит идентифицировать пользователя, тоже будет работать.