Español

Herramientas de desarrollo · UUID generador

Los ID secuenciales filtran datos comerciales: por qué las API públicas exponen los UUID

· Por qué es importante

uuid criptografía APIS del navegador

Un diagrama que contrasta ID numéricos secuenciales que exponen patrones de crecimiento con UUID opacos que no revelan ninguna progresión.
Ilustración de vector original de ToolAcre

Los ID de incremento automático indican a los externos cuántos pedidos toma y hacen que cada registro sea enumerable. Esta publicación explica qué soluciona la exposición de UUID, qué no y cómo introducirlos sin una migración.

Los números de sus facturas indican a sus competidores su volumen: la información se filtra en /orders/10482

Un punto final de API que devuelve /orders/10482 le dice a un extraño más que los propios detalles del pedido. El identificador numérico indica que ha procesado al menos diez mil pedidos, implica información sobre su tasa de crecimiento y hace que cada pedido sea adivinable. Un simple bucle a través de números secuenciales recupera todos los registros sin autenticación ni comprobaciones de permisos. Este patrón aparece en todas partes (en URL, claves de bases de datos, números de facturas e ID de transacciones), incluso cuando el sistema requiere autenticación para ver un solo registro. El problema se agrava en los informes y análisis. Un atacante que pueda recuperar /orders/1, /orders/2, y continuar hasta /orders/10482 obtiene una vista completa de su historial y tendencias de pedidos.

Enumeración y raspado: cómo las identificaciones secuenciales convierten un registro expuesto en todos

El patrón secuencial revela tendencias sobre cuándo llegan los pedidos, qué productos se mencionan y patrones en los precios. Un observador aprende el ritmo al que su negocio crece o se contrae. Esa información, derivada únicamente de la enumeración de ID, puede informar la estrategia competitiva, guiar la ingeniería social o informar el momento de otros ataques. Descubrir la exposición no cuesta nada y aparece en las URL, el historial del navegador, las páginas almacenadas en caché y los registros del servidor. Esto no es teórico: las empresas de inteligencia competitiva y los ingenieros curiosos extraen rutinariamente métricas comerciales de identificaciones enumerables públicamente. Una muestra de números de pedido revela la tasa de producción y el volumen total a cualquier persona lo suficientemente motivada para recopilar datos y realizar análisis básicos.

El problema de los tanques alemanes en un párrafo: estimación de totales a partir de una muestra de números secuenciales

La enumeración aplica análisis estadístico para estimar volúmenes totales y rastrear patrones temporales. Si el primer pedido se produjo en una fecha conocida y captura evidencia de diez pedidos repartidos en una semana, el intervalo medio estima la tasa general. Los competidores, inversores y atacantes pueden obtener su velocidad sin acceder a ningún dato de los clientes más allá de las propias identificaciones. Los identificadores secuenciales garantizan que cada ID mayor que el número actual predice pedidos futuros; cada ID inferior al mínimo en una muestra confirma que su operación era más pequeña anteriormente. Los puntos de datos históricos crean una línea de tiempo de crecimiento y permiten realizar pronósticos. Este mismo principio se aplica en todas las industrias: transacciones financieras, órdenes de envío, registros médicos y cualquier sistema que exponga identificaciones secuenciales.

Lo que solucionan los UUID: referencias imposibles de adivinar y ninguna señal de crecimiento en el ID mismo

Un UUID generado aleatoriamente contiene 122 bits de entropía cuando se genera a partir de una fuente criptográficamente segura como lo especifica el RFC 9562 para la versión 4. El identificador no se puede adivinar ni enumerar y no revela nada sobre la tasa de crecimiento o el volumen a los observadores externos. Un atacante que conoce /orders/9a1f4e2b-7c3e-4d1a-8a5f-1b2c3d4e5f60 no puede predecir el UUID del siguiente pedido ni retroceder a través de sus ID históricos con una confianza razonable. El UUID en sí mismo se convierte en una referencia única pero completamente opaca. La distribución aleatoria significa que múltiples consultas no revelan ningún patrón, progresión ni información de velocidad a los observadores externos que monitorean su API.

Lo que los UUID no solucionan: una identificación indescifrable no es autorización y la oscuridad aún necesita controles de acceso detrás de ella

Reemplazar ID secuenciales con UUID en API públicas es operativamente simple y no requiere una coordinación compleja entre sistemas. Agregue una columna UUID a su tabla de pedidos, genere una para cada nuevo pedido, exponga el UUID en las respuestas y gradualmente desapruebe la clave numérica. Sus sistemas internos pueden seguir utilizando claves primarias enteras para mejorar el rendimiento y la simplicidad; sólo cambia la interfaz pública. La antigua identificación secuencial permanece en la base de datos para su propia referencia o pistas de auditoría, pero los clientes y terceros solo ven el UUID. Este enfoque de doble clave es una mejor práctica para mantener el rendimiento del índice existente y al mismo tiempo exponer identificadores opacos al mundo exterior.

Ejemplo resuelto: agregar una columna pública UUID junto con una clave entera interna y exponer solo la primera

Este enfoque es distinto de la autorización real porque UUID no es una contraseña y la oscuridad no es un control de seguridad. Un cliente que tiene acceso legítimo a /orders/{their-uuid} debería poder verlo, pero /orders/{someone-elses-uuid} aún debe ser rechazado por sus verificaciones de acceso. El UUID oculta el número de pedido de una inspección casual y evita el análisis estadístico mediante enumeración, pero su lógica de autenticación y autorización sigue siendo responsabilidad del código de su aplicación. La protección tiene varias capas: UUID detiene las fugas de información en el propio identificador y el control de acceso impone quién puede actuar en función de ese identificador.

Lo que esto no cubre: las compensaciones entre el índice y el rendimiento de las claves aleatorias, que se analizan en una publicación separada

El límite operativo es importante porque los UUID solucionan la fuga de información en el ID mismo, pero no reemplazan los mecanismos de control de acceso. Si un cliente tiene una clave API y permisos suficientes, aún puede realizar solicitudes a su sistema. El alcance a lo que pueden acceder está determinado por su modelo de permiso y definiciones de roles, no por el formato de ID. El beneficio de los UUID es simplemente que el identificador deja de transmitir datos de volumen, secuencia y crecimiento a cualquiera que pueda observarlo. Un sistema bien diseñado combina la opacidad UUID con comprobaciones de control de acceso explícitas en cada solicitud a la API.

Conclusión: separe las referencias públicas de las claves internas: el generador ToolAcre proporciona UUID respaldados por CSPRNG para el lado público

Una migración práctica evita un día de bandera al admitir ambos formatos gradualmente. Si versiona sus puntos finales, la API v1 puede continuar devolviendo ID enteros mientras que la v2 devuelve UUID. Los clientes realizan la transición a su propio ritmo sin necesidad de una transición coordinada. Las consultas de su base de datos interna permanecen sin cambios: aún se filtran por la identificación del número entero porque sus índices se crean en esa columna y sus claves externas hacen referencia a ella. Sólo cambian los datos devueltos a los clientes. El generador ToolAcre UUID produce el formato versión-4 que utilizará; cada salida es un RFC 9562 UUID correcto, listo para escenarios de almacenamiento, implementación y migración gradual.