Рекомендации по использованию смешанных символов и целочисленных идентификаторов в веб-приложениях
Я занимаюсь разработкой веб-приложения, в котором мне нужно идентифицировать определенную страницу, используя идентификатор.
Обычно я использую интергер с автоматическим приращением, который относится к идентификатору элемента в БД.
Вот так например: http://example.com/item/1
Но я вижу все больше и больше таких идентификаторов (TinyUrl и YouTube): http://example.com/item/1BHYQJh1
И мне интересно, я должен пойти на это решение?
В чем выгода, это просто укоротить ID в случае, если вы получаете действительно длинное интергер?
Или это "взломать" доказательство, чтобы люди не могли "угадать" URL, заменив 1 на 2.
Я действительно ценю последнее, я хотел бы добавить эту дополнительную безопасность для моего приложения. Но кто-нибудь знает какие-либо фрагменты кода, которые делают именно это?
Примеры в C# были бы отличными.
2 ответа
Это не проблема программирования, но...
Я предпочитаю "хорошие" URL-адреса, и я не одинок, и для меня простые цифры лучше, чем 1BHY..., но YMMV.
Упомянутое вами "предположение" здесь не имеет значения. Если пользователю разрешен доступ к /2, это не имеет значения. Если он не разрешен, то основывать безопасность на непонятных URL - плохой выбор. Что если кто-то введет неправильное значение и наткнется на страницу, не предназначенную для него.
Если вам нужна безопасность, вам нужно проверить, разрешен ли текущему пользователю доступ к странице по указанному URL, и действовать соответствующим образом.
Я не понимаю, что означают "примеры в C#". Это URL, они не выражены в C#.
Вы можете использовать Guid.NewGuid(), чтобы создать "уникальный" идентификатор