Как долго должен быть токен "запомнить меня"? - PullRequest
5 голосов
/ 12 марта 2009

Я пытаюсь добавить функцию «запомнить меня» на веб-сайт, используя cookie-файл с именем пользователя и токеном, который также хранится в зашифрованном виде в базе данных. У меня вопрос, как долго должен быть этот токен? Один веб-сайт, который я прочитал , сказал 128 бит, что, по моему мнению, составляет 16 символов. Я не слишком беспокоюсь о дубликатах, так как даже 16 символов из набора из 256 символов предоставляют огромное количество возможностей, и вероятность дублирования в то же время невелика.

Как долго должен быть токен? (Мне не интересно, как генерировать значение или как уникальным.)

Ответы [ 3 ]

7 голосов
/ 12 марта 2009

Просто используйте GUID . Многие базы данных поддерживают их как нативный тип; ими легко манипулировать в большинстве популярных языков / фреймворков; прекрасно переводить с одной платформы на другую; и каждый уникален .

1 голос
/ 12 марта 2009

Я думаю, что это зависит больше от того, как значение рандомизировано, чем как долго это. 256-битный хэш вообще не безопасен, если это просто хэш чего-то, что можно легко угадать или сузить, например, уникальный идентификатор, основанный на времени.

Однако, как вы сказали, вы не спрашиваете о том, как сделать это достаточно случайным.

Примерно 2 ^ 80 (или более) необходимых операций для того, чтобы что-то сломать, обычно являются хорошей мерой. Это означает, что 80-битный хеш является безопасным. (Если бы вы были уязвимы для атак на день рождения, вам понадобилось бы удвоить это, то есть 160 бит, но я не думаю, что эта ситуация применима).

Лично для этого я использую 256-битные хэши. Когда кодируется base64, они сжимаются до 43 символов в длину, все печатные символы. Я полагаю, что хотя это намного больше, чем мне нужно, это не большая проблема, когда они так долго.

0 голосов
/ 25 марта 2015

Вы всегда можете просто посмотреть на то, что сделали другие, например Oauth2 , который предполагает, что токен находится между 128 и 160 битами, и сделать то же самое. Мне нравится этот пост , в котором говорится, что 122 бита должно быть достаточно "для большинства целей, включая коды запуска ядерных ракет". Что забавно, если вы считаете, что фактический код запуска мог быть 00000000 в течение 20 лет . Вот вам и безопасность наших 160-битных токенов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...