🔎 Flujo de CORS
El navegador envía el **header Origin** al API y el servidor responde con las reglas CORS.
Flujo: 1️⃣ El navegador envía
Flujo: 1️⃣ El navegador envía
Origin: https://app.midominio.com
2️⃣ El API responde
Access-Control-Allow-Origin: https://app.midominio.com
3️⃣ El navegador decide si permite el acceso.
🧪 Prueba rápida de vulnerabilidad
Ingrese una API para probar si expone CORS abierto.
📊 Configuración segura vs insegura
| Configuración | Ejemplo | Estado |
|---|---|---|
| CORS abierto |
Access-Control-Allow-Origin: *
|
INSEGURO |
| Reflejar origen dinámico |
Access-Control-Allow-Origin: {Origin}
|
RIESGO |
| Lista blanca |
Access-Control-Allow-Origin: https://app.midominio.com
|
SEGURO |
| Validación backend |
if(origin in whitelist)
return header
|
MUY SEGURO |
🛡️ Checklist de auditoría CORS
Checklist de seguridad:
☐ No usar `Access-Control-Allow-Origin: *`
☐ No reflejar automáticamente el header `Origin`
☐ Usar lista blanca de dominios
☐ Validar origen en backend
☐ Revisar métodos `OPTIONS` (preflight)
☐ No permitir `Allow-Credentials` con `*`
☐ Revisar APIs internas
☐ Registrar intentos de acceso no autorizados
Herramientas recomendadas:
- ModHeader
- Burp Suite
- OWASP ZAP
⚙️ Configuración desde IIS Manager
### Paso 1
Abrir IIS Manager
inetmgr
### Paso 2
Seleccionar el sitio o aplicación.
### Paso 3
Abrir
HTTP Response Headers
### Paso 4
Revisar si existe
Access-Control-Allow-Origin: *
### Paso 5
Eliminar si está presente.
### Paso 6
Configurar CORS en la aplicación (ASP.NET / .NET Core).
### Paso 7
Reiniciar el Application Pool.