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
API Security Testing: Guía Completa OAuth, JWT y API Keys es una disciplina crítica en el aseguramiento de calidad de software moderno. According to IBM’s Cost of a Data Breach Report 2024, the global average cost of a data breach reached $4.88 million (IBM Cost of a Data Breach 2024). According to OWASP, injection vulnerabilities and broken authentication remain in the top 10 web application security risks (OWASP Top 10). Esta guía cubre enfoques prácticos que los equipos de QA pueden aplicar de inmediato: desde conceptos básicos y herramientas hasta patrones de implementación del mundo real. Ya sea que estés desarrollando habilidades en esta área o mejorando un proceso existente, encontrarás técnicas accionables respaldadas por experiencia de la industria. El objetivo no es solo la comprensión teórica, sino un framework funcional que puedas adaptar al contexto de tu equipo, stack tecnológico y objetivos de calidad.
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
«El testing de seguridad pertenece al sprint, no al final del ciclo de release. Una vulnerabilidad encontrada por tu equipo durante el desarrollo cuesta 10 veces menos de corregir que una encontrada por un pentester antes del lanzamiento.» — Yuri Kan, Senior QA Lead
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
Recursos Oficiales
FAQ
¿Cuál es la diferencia entre SAST y DAST? SAST (Análisis Estático) escanea el código fuente sin ejecutarlo, encontrando problemas temprano. DAST (Análisis Dinámico) prueba aplicaciones en ejecución, encontrando vulnerabilidades en tiempo de ejecución.
¿Cuándo debe realizarse el testing de seguridad? El testing de seguridad debe comenzar en la fase de diseño con modelado de amenazas, continuar con SAST durante el desarrollo y concluir con DAST y penetration testing antes de cada release.
¿Cuáles son las vulnerabilidades más comunes en aplicaciones web? El OWASP Top 10 cubre los riesgos más críticos: inyección, autenticación rota, exposición de datos sensibles, configuración incorrecta de seguridad, XSS y deserialización insegura.
¿Cómo se prueba la inyección SQL? Usa escáneres automáticos para el descubrimiento inicial, luego verifica manualmente condiciones límite, caracteres especiales y patrones de inyección ciega basada en tiempo en todos los campos de entrada.
