Я ожидаю, что об этом уже спрашивали, но не нашел здесь подходящего ответа, а также у меня нет времени, чтобы найти собственное решение ...
Еслиу нас есть таблица пользователей с int identity
первичным ключом, тогда у наших пользователей есть последовательные идентификаторы при регистрации на сайте.
У нас есть страница общедоступного профиля пользователя на URL сайта:
www.somesite.com/user/1234
где 1234 - фактический идентификатор пользователя.Нет ничего уязвимого, чтобы увидеть идентификатор пользователя как таковой , но он дает любому возможность проверить, сколько пользователей зарегистрировано на моем сайте ... Ручное увеличение числа в итоге приводит меня к неверному профилю.
Это основная причина, по которой я переворачиваю обратимое отображение идентификатора на казалось бы случайное число с фиксированной длиной:
www.somesite.com/user/6123978458176573
Можете ли вы указать мне простой класс, который выполняет это отображение?Конечно, важно, чтобы это сопоставление было просто обратимым, в противном случае мне пришлось бы сохранять сопоставление вместе с данными другого пользователя.
Я хочу избегать идентификаторов GUID
Идентификаторы GUID медленнее индексируют при их поискепотому что они не являются последовательными, поэтому SQL должен сканировать весь индекс, чтобы найти определенный GUID, а не только определенную вычисленную индексную страницу ...
Если бы у меня был ID + GUID, мне всегда нужно было бы выбиратьисходный идентификатор пользователя для выполнения любых значимых манипуляций с данными, что опять-таки приводит к снижению скорости ...
Математическая обратимая целочисленная перестановка представляется самым быстрым решением ...