Нужна меньшая альтернатива GUID для идентификатора БД, но все же уникальная и случайная для URL - PullRequest
33 голосов
/ 09 февраля 2009

Я искал все места для этого, и я не могу получить полный ответ на это. Так что, если ответ уже существует в стеке, я заранее извиняюсь.

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

Из моих поисков я понимаю, что хотел бы избежать столкновений, и я прочитал некоторые упоминания о SHA1.

Мои основные требования

  • Что-то меньше, чем GUID. (Выглядит ужасно в URL)
  • Должен быть уникальным
  • Избегать столкновений
  • Не длинный список странных символов, которые невозможно прочитать.

Примером того, что я ищу, может быть www.somesite.com/page.aspx?id=AF78FEB

Я не уверен, должен ли я реализовывать это в базе данных (я использую SQL Server 2005) или в коде (я использую C # ASP.Net)

EDIT:

Из всего прочитанного мною я понимаю, что это безопасность через мрак. Я намерен иметь надлежащую авторизацию и аутентификацию для доступа к страницам. Я буду использовать .Net для аутентификации и авторизации. Но как только законный пользователь вошел в систему и получает доступ к легитимной (но динамически создаваемой странице), заполненной ссылками на принадлежащие ему элементы. Например, ссылка может быть www.site.com/page.aspx?item_id=123. Что мешает ему нажать на эту ссылку, а затем изменить вышеуказанный URL-адрес, чтобы перейти на www.site.com/page.aspx?item_id=456, который НЕ принадлежит ему? Я знаю, что некоторые технологии Java, такие как Struts (я исправлюсь), хранят все в сеансе и каким-то образом работают с этим, но я не знаю, как это сделать.

Ответы [ 11 ]

0 голосов
/ 09 февраля 2009

Как долго это слишком долго? Вы можете преобразовать GUID в Base 64, что в итоге сделает его немного короче.

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