- Inicio
- Habilidades
- Seguridad
- Configurador CORS
Configurador CORS
Configura politicas CORS correctamente — entiende origenes, metodos, headers y credenciales para asegurar tu API sin romper peticiones legitimas.
El Problema
La configuracion CORS es donde la seguridad se encuentra con la frustracion del desarrollador. Configura demasiado suelto con Access-Control-Allow-Origin: * e invitas al robo de datos cross-site. Configura demasiado estricto y tu propio frontend no puede alcanzar la API. Los desarrolladores frecuentemente recurren a “permitir todo” para arreglar errores CORS durante desarrollo y olvidan restringirlo para produccion. El mecanismo de preflight, manejo de credenciales y reglas de exposicion de headers agregan capas de complejidad que llevan a configuraciones erroneas.
El Prompt
Eres un ingeniero de seguridad web especializado en configuracion CORS. Revisa mi setup de CORS y corrige problemas de seguridad o configuraciones erroneas.
ARQUITECTURA:
- Origen(es) frontend: [ej. https://app.example.com, http://localhost:3000]
- Origen API: [ej. https://api.example.com]
- Metodo de auth: [ej. cookies, JWT en header Authorization, API key]
- Framework: [ej. Express/cors, FastAPI, Django, Next.js, nginx]
CONFIG CORS ACTUAL:
[pega tu config de middleware CORS, headers nginx o configuracion del servidor]
Evaluar:
1. **Whitelist de origenes**: Es especifica o peligrosamente amplia (wildcard)?
2. **Credenciales**: Se usa Access-Control-Allow-Credentials correctamente con origenes especificos?
3. **Metodos**: Solo se permiten los metodos HTTP necesarios?
4. **Headers**: Los headers expuestos/permitidos estan minimizados?
5. **Cache de preflight**: Esta Access-Control-Max-Age configurado para reducir requests OPTIONS?
6. **Header Vary**: Esta Vary: Origin configurado para compatibilidad con cache?
Proporcionar:
- Evaluacion de seguridad de la config actual (segura/riesgosa/peligrosa)
- Configuracion corregida para mi framework especifico
- Estrategia CORS para dev vs. produccion
- Errores CORS comunes y sus soluciones reales (no solo "permitir todo")
Ejemplo de Salida
## Evaluacion CORS: PELIGROSA
### Hallazgo: Origen wildcard con credenciales
`Access-Control-Allow-Origin: *` combinado con `Access-Control-Allow-Credentials: true`
Riesgo: Cualquier sitio web puede hacer peticiones autenticadas a tu API.
Solucion (Express):
app.use(cors({
origin: ['https://app.example.com'],
credentials: true,
methods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['Content-Type', 'Authorization'],
maxAge: 86400
}));
Cuando Usar
Configurar CORS durante el setup inicial de la API y revisarlo al agregar nuevos clientes frontend, al pasar a produccion o despues de quejas de “error CORS” de los desarrolladores. Esencial cuando tu API sirve a multiples dominios frontend o al transicionar de arquitectura same-origin a cross-origin.
Tips Pro
- Nunca wildcard con credenciales —
Access-Control-Allow-Origin: *ycredentials: truejuntos es una violacion de seguridad a nivel de navegador. Usa origenes especificos. - Separa configs de dev y prod — permite origenes localhost solo en desarrollo, nunca en politicas CORS de produccion.
- Cachea peticiones preflight — configura
Access-Control-Max-Age: 86400para evitar requests OPTIONS redundantes que ralentizan tu API. - Usa Vary: Origin — si tu servidor responde con diferentes headers CORS por origen, el header Vary previene problemas de cache en CDN.