Человек при успешной регистрации (вводит адрес электронной почты, создает пароль) получает сгенерированный (так что трудно угадать предыдущий или следующий) уникальный идентификатор - большое число от 0 до N .Итак, после успешной регистрации у нас есть 3 вещи для каждого пользователя: уникальный адрес электронной почты, хэш пароля и сгенерированный и уникальный идентификатор (целое число от 0 до N ).Электронная почта, хэш пароля и идентификатор хранятся в БД.
Вопрос в следующем: насколько большим должно быть N , чтобы вероятность угадать действительный идентификатор не превышала угадывание пароля (для любого данного адреса электронной почты).(Пароль может содержать только заглавные и строчные буквы, цифры, 8+ символов, если это важно.) Итак, все, что мне нужно, это иметь идентификаторы, которые слишком сложно угадать.
Предположим, больше не должно бытьчем 10 000 зарегистрированных пользователей (в зависимости от этого числа N зависит).По крайней мере, сколько цифр должно содержать число N (0 .. N - диапазон для того, чтобы эти длинные числа были уникальными) в наше время?
Мой алгоритм хорошдостаточно, справедливо, плохо или очень плохо?Если я отправляю этот вопрос не в ту ветку, пожалуйста, сообщите мне об этом в следующий раз, когда я буду в порядке.
PS Этот идентификатор из базы данных применяется к переменной SESSION, когда пользователь успешно входит в систему.Все SQL-запросы, которые извлекают персональные данные для пользователя, сравнивают этот идентификатор с этой переменной SESSION (поэтому мы теперь чьи данные извлекаем):
"SELECT ... FROM ... WHERE id='".$_SESSION['id']."'"
Спасибо.