Cambiar /api/orders/1001 por /api/orders/1002 muestra el pedido de otro cliente. Esta vulnerabilidad es…
Opciones
- XSS: un script malicioso inyectado en la página
- IDOR: control de acceso roto sobre un ID directo de objeto (Opción correcta)
- Clickjacking: un marco oculto sobre la página real
- CSRF: una petición falsificada enviada desde otro sitio
Respuesta
IDOR (Insecure Direct Object Reference), una forma de control de acceso roto
Por qué
El servidor comprueba que iniciaste sesión, pero no que el pedido 1002 sea TUYO. Cualquiera puede cambiar el número y leer datos de otros.
Eso es IDOR, un tipo de control de acceso roto.
Solución: en cada petición, comprueba que el usuario autenticado es dueño de ese objeto (o puede acceder a él), por ejemplo WHERE id = :id AND customer_id = :current_user. Los IDs aleatorios (UUID) dificultan adivinar, pero no son una solución por sí solos.
Recuerda
Comprueba siempre que el usuario es dueño del objeto que pide.