Оставайтесь в системе. Рекомендации: как имя пользователя в файле cookie делает его более безопасным?

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

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

Резюме:

Use a random number as a Series Token, and another as a Login Token. Place those in the Stay Logged In cookie, along with the username. Assign a second, normal Session cookie. Each time a user arrives without a Session cookie, consume the Stay Logged In cookie. Issue a new one, this time with a new random Login Token, keeping the Series Token the same.

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

 ottomeister09 июн. 2012 г., 09:42
AFAICT, включая имя пользователя, делает две вещи. Во-первых, это усложняет запоминание логинов DoS, посылая случайные токены серии. (DoS будет успешным, только если вы угадаете действительный токен серииand его парное имя пользователя.) Во-вторых, имя пользователя защищает от невинных коллизий между серийными токенами, выданными разным пользователям. Без имени пользователя столкновение Series Token выглядело бы как указание на кражу. Конечно, если вы можете гарантировать, что каждый новый Жетон Серии уникален среди всех еще действующих ранее выпущенных Жетонов Серии, то это не проблема.
 axelbrz08 сент. 2014 г., 20:43
Не лучше ли использовать идентификатор пользователя вместо имени пользователя из-за производительности поиска целых и строковых значений?
 Chris Moschini09 июн. 2012 г., 21:01
Это имеет смысл до сих пор. В очень распределенной системе, где проверка уникальности для серийных токенов не выполняется, я могу понять, почему вы включаете либо имя пользователя, либо, я предпочитаю, хэш имени пользователя. Но если серийные токены уникальны, это также может отнять имя пользователя у потенциальных злоумышленников.

Ответы на вопрос(2)

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

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

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

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

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

Ваш ответ на вопрос