Riesgos y Controles en APIs
Objetivo
Conocer fallas comunes en APIs y como mitigarlas.
BOLA / IDOR
Broken Object Level Authorization ocurre cuando un usuario accede a objetos de otro usuario cambiando IDs.
Ejemplo:
/api/invoices/1001 /api/invoices/1002
Mitigacion:
- Validar permisos en servidor para cada objeto.
- No confiar en que el frontend oculta botones.
- Tests de autorizacion.
Mass Assignment
Ocurre cuando la API acepta campos que el usuario no deberia controlar.
Ejemplo:
{ "name": "Ana", "role": "admin" }
Mitigacion:
- Allowlist de campos permitidos.
- DTOs.
- Validacion estricta.
Rate Limiting
Limita abuso.
Protege contra:
- Fuerza bruta.
- Scraping.
- Abuso de recursos.
- Ataques automatizados.
Errores Excesivos
Errores demasiado detallados revelan informacion.
Mal:
SQL syntax error at line...
Mejor:
Invalid request
con detalle interno solo en logs.
Logging
Registrar:
- Identidad.
- Endpoint.
- Resultado.
- IP origen.
- User-Agent.
- Correlation ID.
Evitar:
- Contraseñas.
- Tokens.
- Datos sensibles innecesarios.
Checklist
- Autenticacion requerida.
- Autorizacion por objeto.
- Validacion de entrada.
- Allowlist de campos.
- Rate limiting.
- Errores seguros.
- Logs utiles.
- Tokens con expiracion.
- Permisos minimos.
Practica
Analiza este request:
PATCH /api/users/123 Authorization: Bearer token Content-Type: application/json { "displayName": "Ana", "role": "admin" }
Responde:
- Que riesgo aparece?
- Que validarias?
- Que log guardarias?
- Que respuesta segura darias?
Criterio de Dominio
Puedes avanzar cuando puedas:
- Explicar BOLA.
- Explicar mass assignment.
- Proponer rate limiting.
- Diseñar logs seguros.