TL;DR
- Prueba BOLA/IDOR en cada endpoint—es la vulnerabilidad #1 de API (OWASP API Security Top 10 2023)
- Testing de JWT debe cubrir confusión de algoritmo, secretos débiles y manipulación de token—no solo expiración
- Nunca aceptes API keys en URLs; verifica que rate limiting funcione por key, no solo por IP
Ideal para: APIs públicas, sistemas multi-tenant, APIs manejando datos sensibles (PII, financieros, salud)
Omitir si: APIs solo internas con clientes confiables, fase temprana de prototipado
Tiempo de lectura: 18 minutos
La seguridad de las APIs es fundamental en el desarrollo moderno. Este artículo complementa nuestra guía completa de API testing y profundiza en los aspectos de seguridad. Si trabajas con aplicaciones móviles, también te interesará nuestra guía sobre OAuth y JWT en testing móvil y las mejores prácticas de seguridad móvil.
Fundamentos Seguridad API
Testing seguridad API valida autenticación, autorización, validación entrada y mecanismos protección datos.
OWASP API Security Top 10
- Broken Object Level Authorization (BOLA/IDOR)
- Broken Authentication
- Broken Object Property Level Authorization
- Unrestricted Resource Consumption
- Broken Function Level Authorization
Testing OAuth 2.0
class OAuthFlowTester:
def test_authorization_flow(self):
# Paso 1: Obtener código autorización
params = {
'response_type': 'code',
'client_id': self.client_id,
'redirect_uri': 'http://localhost:3000/callback'
}
# Paso 2: Intercambiar código por token
token_response = requests.post(self.token_url, data={
'grant_type': 'authorization_code',
'code': auth_code
})
assert 'access_token' in token_response.json()
Testing JWT
// JWT testing
const jwt = require('jsonwebtoken');
// Test JWT expirado
function testExpiredJWT() {
const token = jwt.sign({ userId: 123 }, secret, { expiresIn: '-1s' });
try {
jwt.verify(token, secret);
console.error('✗ JWT expirado fue aceptado!');
} catch (err) {
console.log('✓ JWT expirado correctamente rechazado');
}
}
Testing API Keys
class APIKeyTester:
def test_api_key_in_header(self, api_key):
response = requests.get(
f"{self.base_url}/api/data",
headers={'X-API-Key': api_key}
)
assert response.status_code == 200
def test_rate_limiting(self, api_key):
for i in range(110):
response = requests.get(url, headers={'X-API-Key': api_key})
# Debe alcanzar rate limit
assert 429 in responses
Testing Autorización (BOLA/IDOR)
def test_bola():
# Token Usuario A
token_a = 'user_a_token'
# Intentar acceder recurso Usuario B
response = requests.get(
f'https://api.example.com/users/456/profile',
headers={'Authorization': f'Bearer {token_a}'}
)
# Debe retornar 403 Forbidden
assert response.status_code == 403
Enfoques Asistidos por IA
El testing de seguridad puede mejorarse con herramientas de IA para detección de vulnerabilidades y generación de pruebas.
Lo que la IA hace bien:
- Generar payloads de pruebas de seguridad desde guías OWASP
- Analizar especificaciones de API para gaps potenciales de autorización
- Crear casos de prueba de inyección completos (SQL, NoSQL, XSS)
- Identificar headers de seguridad faltantes en respuestas de API
- Generar escenarios de manipulación de JWT
Lo que aún necesita humanos:
- Entender contexto de negocio para identificar flujos de datos sensibles
- Validar que controles de seguridad cumplan requisitos de compliance (GDPR, HIPAA, PCI-DSS)
- Evaluar severidad de riesgo basado en impacto de negocio
- Diseñar escenarios de ataque que combinen múltiples vulnerabilidades
- Verificar que fixes de seguridad no rompan funcionalidad legítima
Prompts útiles:
Analiza esta especificación de API e identifica vulnerabilidades potenciales BOLA/IDOR.
Para cada endpoint que accede recursos específicos de usuario, genera casos de prueba
que verifiquen checks de autorización apropiados.
Genera una suite completa de pruebas de seguridad JWT incluyendo: ataques de confusión
de algoritmo, manejo de tokens expirados, manipulación de firma, y detección de
secretos débiles. Incluye implementaciones en Python y JavaScript.
Cuándo Invertir en Testing de Seguridad API
Testing de seguridad es esencial cuando:
- APIs manejan datos sensibles (PII, financieros, registros de salud)
- APIs públicas accesibles a desarrolladores terceros
- Sistemas multi-tenant donde aislamiento de datos es crítico
- APIs procesando pagos o autenticación
- Requisitos de compliance (SOC2, HIPAA, PCI-DSS, GDPR)
- Después de incidentes de seguridad o divulgaciones de vulnerabilidades
Considera enfoques más ligeros cuando:
- APIs solo internas con controles de acceso a nivel de red
- Prototipado temprano donde seguridad no está configurada aún
- APIs de solo lectura retornando datos públicos
- Entornos de desarrollo sin datos de producción
| Escenario | Enfoque Recomendado |
|---|---|
| API pública con datos sensibles | Suite completa: OWASP Top 10, pen testing, escaneo automatizado |
| Microservicios internos | Testing BOLA/IDOR, validación autenticación, pruebas básicas de inyección |
| Integración API terceros | Enfocarse en seguridad de credenciales, manejo de rate limit |
| Backend app móvil | Seguridad JWT, almacenamiento de tokens, gestión de sesiones |
| Producto API B2B | Seguridad API key, aislamiento de clientes, audit logging |
Midiendo el Éxito
| Métrica | Antes de Testing | Objetivo | Cómo Rastrear |
|---|---|---|---|
| Cobertura OWASP Top 10 | Desconocido | 100% testeado | Checklist de pruebas de seguridad |
| Vulnerabilidades BOLA/IDOR | Descubiertas en prod | 0 en prod | Reportes de pen test |
| Intentos de Bypass Autenticación | No monitoreado | 100% bloqueados | Logs WAF/API gateway |
| Detección de Ataques de Inyección | Variable | < 1ms detección | Monitoreo de seguridad |
| Tiempo para Remediar Críticos | Días/Semanas | < 24 horas | Tracking de incidentes |
Señales de advertencia de que tu testing de seguridad no funciona:
- Vulnerabilidades descubiertas por investigadores externos
- Bypass de autenticación encontrado en producción
- Filtraciones de datos o incidentes de acceso no autorizado
- Fallas en auditorías de compliance
- Ataques de inyección exitosos contra APIs
- API keys o tokens expuestos en logs o URLs
Conclusión
Testing seguridad API es crítico para proteger datos sensibles y prevenir acceso no autorizado. Testear sistemáticamente mecanismos autenticación, controles autorización y validación entrada asegura que APIs resistan ataques comunes.
Ver También
- API Testing Mastery: Guía Completa - Fundamentos y técnicas avanzadas de testing de APIs
- OAuth y JWT en Testing Móvil - Autenticación segura en aplicaciones móviles
- Mobile Security Testing - Pruebas de seguridad para apps móviles
- API Rate Limiting Testing - Validación de límites y throttling en APIs
- API Testing en Arquitecturas Microservicios - Testing de APIs en entornos distribuidos
