Я искал все это для этого, и я не могу получить полный ответ для этого. Поэтому, если ответ уже существует в stackoverflow, я заранее извиняюсь.
Я хочу уникальный и случайный идентификатор, чтобы пользователи на моем веб-сайте не могли догадаться о следующем номере и просто пересказывать кому-то еще информацию. Я планирую придерживаться инкрементирующего идентификатора для первичного ключа, но также хранить случайный и уникальный идентификатор (вид хеша) для этой строки в БД и помещать на него индекс.
Из моего поиска я понимаю, что мне бы хотелось избежать столкновений, и я прочитал несколько упоминаний о SHA1.
Мои основные требования:
- Что-то меньшее, чем GUID. (Выглядит ужасно по URL-адресу)
- Должно быть уникальным
- Избегайте столкновений
- Не длинный список странных символов, которые не читаются.
Примером того, что я ищу, будет www.somesite.com/page.aspx?id=AF78FEB
Я не уверен, должен ли я реализовывать это в базе данных (я использую SQL Server 2005) или в коде (я использую С# ASP.Net)
EDIT:
Из всего прочитанного я понял, что это безопасность через неясность. Я имею намерение иметь правильную авторизацию и аутентификацию для доступа к страницам. Я буду использовать .Net-аутентификацию и авторизацию. Но как только законный пользователь зарегистрировался и получает доступ к готовой (но динамически созданной странице), заполненной ссылками на принадлежащие ему предметы. Например, ссылка может быть www.site.com/page.aspx?item_id=123. Что мешает ему щелкнуть по этой ссылке, а затем изменить URL-адрес выше, чтобы перейти на сайт www.site.com/page.aspx?item_id=456, который НЕ принадлежит ему? Я знаю некоторые Java-технологии, такие как Struts (я должен быть исправлен) хранить все в сеансе и как-то работать с этим, но я понятия не имею, как это делается.