
ID, token, UUID и slug: в чём разница и почему их нельзя мешать
alwaysdeterminated 8 минут назад ID, token, UUID и slug: в чём разница и почему их нельзя мешать Средний 9 мин 38 Программирование * Веб-разработка * Проектирование API * Информационная безопасность * Высоконагруженные...
Anthropic — What company has the best second artificial intelligence model at the end of June?
Значимый прорыв формирует отрасль ИИ: alwaysdeterminated 8 минут назад ID, token, UUID и slug: в чём разница и почему их нельзя мешать Средний 9 мин 38 Программирование * Веб-разработка * Проектирование API * Информационная безопасность * Высоконагруженные системы * В каждом бэкенде наступает момент, когда рядом появляются id, uuid, slug, token, request_id и прочие похожие строки. Выглядят они одинаково, но отвечают за совершенно разные вещи:curl curl curl curl -X POST ' да, тут id. Тут какой-то token, но он тоже строка.
Тут slug, по нему же можно найти статью. Тут UUID, значит вроде безопасно. Тут JWT, значит пользователь авторизован.
Технические детали
А потом через полгода выясняется, что:ссылку сброса пароля сделали через user_id;UUID в URL начинают воспринимать как защиту от доступа;slug начинают считать вечной айдишкой; API-ключ хранится в базе открытым текстом;JWT живёт как вечная сессия;reset-token спокойно лежит в логах, APM и истории прокси. Не потому что разработчики тупые. Просто модель данных начала врать: одинаковый тип данных стали воспринимать как одинаковую ответственность.
Эта статья не про вечный спор “UUID или integer”. Это меньшая и довольно скучная часть проблемы. Настоящий вопрос другой: что именно вы сейчас держите в руках — идентификатор, публичную ссылку, секрет, токен доступа или человекочитаемый адрес?
Когда эти роли смешивают, получается архитектура, где UUID используют как безопасность, slug — как первичный ключ, reset-token — как user_id, а JWT — как вечную сессию. Система ещё работает, но уже начинает тихо врать сама себе, а значит создавать технический долг. ID, token, UUID и slug — разные задачиСначала роль, потом форматСамая частая ошибка начинается не с выбора UUID или integer.
Отраслевые последствия
Она начинается раньше — когда команда не отвечает на простой вопрос: что это значение должно делать? Одна и та же строка может быть чем угодно:123 550e8400-e29b-41d4-a716-446655440000 usr_01J2Y4K7YQ7V8K9W2V7R4D5H3A id-token-uuid-slug pYp9cBW9wI8o4ZmU3uY1L2zYqR8b3S... req_01J2Y51A8ZY2J1X9V7E6D4C3B2Но архитектурно это разные сущности.
У них разная стабильность, разный срок жизни, разная видимость снаружи, разные правила хранения, разная цена утечки, даже разные причины для изменения. Поэтому вопрос “какой тип использовать? Сначала надо понять:это значение должно жить годами или умереть через 15 минут?
его можно показывать пользователю или оно должно оставаться секретом? оно участвует в связях между таблицами или только красиво выглядит в URL? оно должно пережить миграцию базы?
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





