IDORInsecure Direct Object Reference
Definición
Vulnerabilidad de control de acceso: el servidor expone IDs adivinables o predecibles y no valida que el solicitante tenga permiso sobre ese recurso.
El bug bounty class más buscado para principiantes — y para expertos en programas grandes. Patrón: `GET /api/invoices/123` te devuelve tu factura, cambias a `/api/invoices/124` y te devuelve la del usuario de al lado. Sin 403, sin auth check.
Variantes: IDOR horizontal (entre usuarios pares), vertical (escalada a admin), de write (PUT/DELETE en recursos ajenos), de UUID predecible (UUIDv1 con MAC + timestamp, IDs base64 con info filtrada).
Defensa: comprobar ownership en CADA endpoint del recurso, no en el frontend. Tests automatizados que cambien el ID y esperen 403. ORM con scoping por usuario (Rails default_scope + current_user, Django get_object_or_404 con filter). UUIDv4 random como mínimo (no v1).
