Предполагая, что мы создаем веб-страницу с определенной страницей профиля для пользователей, каждый пользователь должен быть идентифицирован с помощью уникального идентификатора. В MongoDB это скорее всего столбец _id
документа. При обращении ссылку на профиль пользователей, я не чувствую себя комфортно подвергая фактической идентификатор базы данных в веб-ссылку, напримерMongoDB: Рекомендации по оптимальной архитектуре и безопасности
https://www.foopage.com/userprofile/5612afeedd2387aeeebbdd211100ccdd
Вместо этого, я хотел бы представить более короткий идентификатор, а также может можно увидеть на YouTube, где каждое видео имеет уникальный 10-значный буквенно-цифровой код. Мой вопрос сейчас:
1) С точки зрения безопасности: стоит ли скрывать фактический идентификатор документа от общественности или он фактически не повышает безопасность системы?
2) Я ожидаю недостатков в производительности, используя свой собственный идентификатор, поскольку собственный _ID MongoDB, скорее всего, индексируется и «оптимизирован», тогда как мой идентификатор всегда требует какого-то сопоставления данных или дополнительной индексации. Каков ваш опыт? Есть ли задокументированная разница в использовании собственного индекса и созданного вручную для MongoDB?
1) Нет, это не имеет смысла, так как ваше приложение должно проверять разрешения в любом случае. 2) каждое поле «_id» индексируется, независимо от его содержимого. Если вы используете произвольное значение, оно все равно будет только индексом «_id». Пока «_id» уникален, вы можете даже использовать составные индексы. За исключением размера, нет разницы. Для профилей пользователей я использовал бы имя пользователя, если оно не подлежит изменению. –