Стоит ли беспокоиться об уникальности UUID

Я использую этот модуль https://www.npmjs.com/package/uuidv4, чтобы определить уникальность пользователя. Стоит ли беспокоиться, что 2 человека могут получить один и тот же uuid? Что, если я сохраню все заданные uuid за день и перед тем, как дать новые uuid, я проверю, существует ли он уже в базе данных? А через день я очищал свою базу данных и повторял процесс. Это хороший подход? Я что-нибудь упускаю?

uuids разработаны таким образом, чтобы очень и очень маловероятно, что вы получите одно и то же значение дважды. Практически невозможно, так что не беспокойтесь об этом

Patrick Hund 25.11.2018 20:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
180
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Should I worry that 2 people might get the same uuid...

Нет, не надо. UUID уникальны для целей практичный.

От Википедия: UUID:

..., the number of random version 4 UUIDs which need to be generated in order to have a 50% probability of at least one collision is 2.71 quintillion...

Что касается:

What if I store of all given uuids for the day and before I give new uuids I check if it already exists in the database

У вас должно быть ограничение Уникальный ключ для вашей таблицы. Даже если вы столкнетесь с конфликтом, БД его отклонит.

В самом деле, вы можете даже пожертвовать некоторой уникальностью UUID, чтобы повысить производительность первичного ключа, например. Направляющие COMB.

user4942583 25.11.2018 20:47

Да, вы должны (и мы должны). Следуя стандартной процедуре, можно получить довольно уникальные UUID. Но злые игроки могут намеренно вызывать коллизии, поскольку нет центрального реестра для UUID. Итак, в наши дни дополнительная осторожность с UUID не повредит.

Возможно, «намеренно вызвать коллизии», если генерация выполняется на клиенте. Однако это ужасный дизайн - простой ответ - «не делай этого». Если вы собираетесь утверждать, что коллизии UUID типа 4 могут быть инициированы без доверия к клиенту (или без достаточного контроля над сервером, чтобы фактически означать, что служба уже внедрила root-права), пожалуйста, покажите опубликованный экземпляр такой атаки.

Charles Duffy 26.11.2018 00:54

Другие вопросы по теме